diff --git a/docs/index.html b/docs/index.html index 432cc2c..a107af9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -17,7 +17,7 @@ - + @@ -35,10 +35,10 @@ @@ -69,7 +69,7 @@

- Try online + Try online
@@ -126,7 +126,7 @@

Features

-
+ @@ -166,14 +166,14 @@

Try online now! (Seriously, just write anything below)

- - + + - - - - - - + + + + + + - \ No newline at end of file + diff --git a/docs/stable/elm.js b/docs/stable/elm.js index 9b93a83..8072e0a 100644 --- a/docs/stable/elm.js +++ b/docs/stable/elm.js @@ -5322,6 +5322,16 @@ var _elm_community$parser_combinators$Combine_Char$hexDigit = A2( _elm_community$parser_combinators$Combine_Char$satisfy(_elm_lang$core$Char$isHexDigit), 'expected a hexadecimal digit'); +var _Bogdanp$elm_ast$Ast_Helpers$logContent = F2( + function (label, xsParser) { + return A2( + _elm_community$parser_combinators$Combine_ops['>>='], + xsParser, + function (_p0) { + return _elm_community$parser_combinators$Combine$succeed( + A2(_elm_lang$core$Debug$log, label, _p0)); + }); + }); var _Bogdanp$elm_ast$Ast_Helpers$emptyTuple = _elm_community$parser_combinators$Combine$string('()'); var _Bogdanp$elm_ast$Ast_Helpers$name = function (p) { return A2( @@ -5330,6 +5340,16 @@ var _Bogdanp$elm_ast$Ast_Helpers$name = function (p) { _elm_community$parser_combinators$Combine$regex('[a-zA-Z0-9-_]*')); }; var _Bogdanp$elm_ast$Ast_Helpers$upName = _Bogdanp$elm_ast$Ast_Helpers$name(_elm_community$parser_combinators$Combine_Char$upper); +var _Bogdanp$elm_ast$Ast_Helpers$exactIndentation = function ($int) { + return _elm_community$parser_combinators$Combine$regex( + A2( + _elm_lang$core$Basics_ops['++'], + '\n*[ \\t]{', + A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString($int), + '}\n*'))); +}; var _Bogdanp$elm_ast$Ast_Helpers$spaces_ = _elm_community$parser_combinators$Combine$regex('[ \\t]+'); var _Bogdanp$elm_ast$Ast_Helpers$initialSymbol = function (k) { return A2( @@ -5405,8 +5425,8 @@ var _Bogdanp$elm_ast$Ast_Helpers$reservedOperators = { } }; var _Bogdanp$elm_ast$Ast_Helpers$operator = _elm_community$parser_combinators$Combine$lazy( - function (_p0) { - var _p1 = _p0; + function (_p1) { + var _p2 = _p1; return A2( _elm_community$parser_combinators$Combine_ops['>>='], _elm_community$parser_combinators$Combine$regex('[+\\-\\/*=.$<>:&|^?%#@~!]+|Šs\b'), @@ -7333,13 +7353,35 @@ var _Bogdanp$elm_ast$Ast_Expression$operatorOrAsBetween = _elm_community$parser_ _Bogdanp$elm_ast$Ast_Helpers$operator, _Bogdanp$elm_ast$Ast_Helpers$symbol_('as'))); }); -var _Bogdanp$elm_ast$Ast_Expression$negate = function (x) { - var _p8 = x; - if (_p8.ctor === 'Just') { - return _elm_community$parser_combinators$Combine$fail(''); - } else { - return _elm_community$parser_combinators$Combine$succeed(''); - } +var _Bogdanp$elm_ast$Ast_Expression$countIndent = A2( + _elm_community$parser_combinators$Combine_ops['>>='], + _elm_community$parser_combinators$Combine$whitespace, + function (_p8) { + return _elm_community$parser_combinators$Combine$succeed( + _elm_lang$core$String$length( + A2( + _elm_lang$core$String$filter, + function ($char) { + return _elm_lang$core$Native_Utils.eq( + $char, + _elm_lang$core$Native_Utils.chr(' ')); + }, + _p8))); + }); +var _Bogdanp$elm_ast$Ast_Expression$spacesOrIndentedNewline = function (indentation) { + return _elm_community$parser_combinators$Combine$lazy( + function (_p9) { + var _p10 = _p9; + return A2( + _elm_community$parser_combinators$Combine$or, + _Bogdanp$elm_ast$Ast_Helpers$spaces_, + A2( + _elm_community$parser_combinators$Combine_ops['>>='], + _Bogdanp$elm_ast$Ast_Expression$countIndent, + function (column) { + return (_elm_lang$core$Native_Utils.cmp(column, indentation) < 0) ? _elm_community$parser_combinators$Combine$fail('Arguments have to be at least the same indentation as the function') : _elm_community$parser_combinators$Combine$whitespace; + })); + }); }; var _Bogdanp$elm_ast$Ast_Expression$Stop = function (a) { return {ctor: 'Stop', _0: a}; @@ -7445,8 +7487,8 @@ var _Bogdanp$elm_ast$Ast_Expression$access = A2( _elm_community$parser_combinators$Combine$string('.'), _Bogdanp$elm_ast$Ast_Helpers$loName))); var _Bogdanp$elm_ast$Ast_Expression$simplifiedRecord = _elm_community$parser_combinators$Combine$lazy( - function (_p9) { - var _p10 = _p9; + function (_p11) { + var _p12 = _p11; return A2( _elm_community$parser_combinators$Combine_ops['<$>'], _Bogdanp$elm_ast$Ast_Expression$Record, @@ -7472,18 +7514,18 @@ var _Bogdanp$elm_ast$Ast_Expression$joinL = F2( function (es, ops) { joinL: while (true) { - var _p11 = {ctor: '_Tuple2', _0: es, _1: ops}; + var _p13 = {ctor: '_Tuple2', _0: es, _1: ops}; _v6_2: do { - if ((_p11.ctor === '_Tuple2') && (_p11._0.ctor === '::')) { - if (_p11._0._1.ctor === '[]') { - if (_p11._1.ctor === '[]') { - return _elm_community$parser_combinators$Combine$succeed(_p11._0._0); + if ((_p13.ctor === '_Tuple2') && (_p13._0.ctor === '::')) { + if (_p13._0._1.ctor === '[]') { + if (_p13._1.ctor === '[]') { + return _elm_community$parser_combinators$Combine$succeed(_p13._0._0); } else { break _v6_2; } } else { - if (_p11._1.ctor === '::') { + if (_p13._1.ctor === '::') { var _v7 = { ctor: '::', _0: A3( @@ -7491,14 +7533,14 @@ var _Bogdanp$elm_ast$Ast_Expression$joinL = F2( _Bogdanp$elm_ast$Ast_Expression$Variable( { ctor: '::', - _0: _p11._1._0, + _0: _p13._1._0, _1: {ctor: '[]'} }), - _p11._0._0, - _p11._0._1._0), - _1: _p11._0._1._1 + _p13._0._0, + _p13._0._1._0), + _1: _p13._0._1._1 }, - _v8 = _p11._1._1; + _v8 = _p13._1._1; es = _v7; ops = _v8; continue joinL; @@ -7515,18 +7557,18 @@ var _Bogdanp$elm_ast$Ast_Expression$joinL = F2( }); var _Bogdanp$elm_ast$Ast_Expression$joinR = F2( function (es, ops) { - var _p12 = {ctor: '_Tuple2', _0: es, _1: ops}; + var _p14 = {ctor: '_Tuple2', _0: es, _1: ops}; _v9_2: do { - if ((_p12.ctor === '_Tuple2') && (_p12._0.ctor === '::')) { - if (_p12._0._1.ctor === '[]') { - if (_p12._1.ctor === '[]') { - return _elm_community$parser_combinators$Combine$succeed(_p12._0._0); + if ((_p14.ctor === '_Tuple2') && (_p14._0.ctor === '::')) { + if (_p14._0._1.ctor === '[]') { + if (_p14._1.ctor === '[]') { + return _elm_community$parser_combinators$Combine$succeed(_p14._0._0); } else { break _v9_2; } } else { - if (_p12._1.ctor === '::') { + if (_p14._1.ctor === '::') { return A2( _elm_community$parser_combinators$Combine$andThen, function (e) { @@ -7536,16 +7578,16 @@ var _Bogdanp$elm_ast$Ast_Expression$joinR = F2( _Bogdanp$elm_ast$Ast_Expression$Variable( { ctor: '::', - _0: _p12._1._0, + _0: _p14._1._0, _1: {ctor: '[]'} }), - _p12._0._0, + _p14._0._0, e)); }, A2( _Bogdanp$elm_ast$Ast_Expression$joinR, - {ctor: '::', _0: _p12._0._1._0, _1: _p12._0._1._1}, - _p12._1._1)); + {ctor: '::', _0: _p14._0._1._0, _1: _p14._0._1._1}, + _p14._1._1)); } else { break _v9_2; } @@ -7558,8 +7600,8 @@ var _Bogdanp$elm_ast$Ast_Expression$joinR = F2( }); var _Bogdanp$elm_ast$Ast_Expression$split = F4( function (ops, l, e, eops) { - var _p13 = eops; - if (_p13.ctor === '[]') { + var _p15 = eops; + if (_p15.ctor === '[]') { return _elm_community$parser_combinators$Combine$succeed(e); } else { return A2( @@ -7578,8 +7620,8 @@ var _Bogdanp$elm_ast$Ast_Expression$split = F4( _elm_lang$core$Tuple$first(x)) : _elm_lang$core$Maybe$Nothing; }, eops); - var _p14 = assoc; - if (_p14.ctor === 'R') { + var _p16 = assoc; + if (_p16.ctor === 'R') { return A2(_Bogdanp$elm_ast$Ast_Expression$joinR, es, ops_); } else { return A2(_Bogdanp$elm_ast$Ast_Expression$joinL, es, ops_); @@ -7590,20 +7632,20 @@ var _Bogdanp$elm_ast$Ast_Expression$split = F4( }); var _Bogdanp$elm_ast$Ast_Expression$splitLevel = F4( function (ops, l, e, eops) { - var _p15 = A2( + var _p17 = A2( _elm_community$list_extra$List_Extra$break, A2(_Bogdanp$elm_ast$Ast_Expression$hasLevel, ops, l), eops); - if (_p15._1.ctor === '::') { + if (_p17._1.ctor === '::') { return { ctor: '::', - _0: A4(_Bogdanp$elm_ast$Ast_Expression$split, ops, l + 1, e, _p15._0), - _1: A4(_Bogdanp$elm_ast$Ast_Expression$splitLevel, ops, l, _p15._1._0._1, _p15._1._1) + _0: A4(_Bogdanp$elm_ast$Ast_Expression$split, ops, l + 1, e, _p17._0), + _1: A4(_Bogdanp$elm_ast$Ast_Expression$splitLevel, ops, l, _p17._1._0._1, _p17._1._1) }; } else { return { ctor: '::', - _0: A4(_Bogdanp$elm_ast$Ast_Expression$split, ops, l + 1, e, _p15._0), + _0: A4(_Bogdanp$elm_ast$Ast_Expression$split, ops, l + 1, e, _p17._0), _1: {ctor: '[]'} }; } @@ -7622,9 +7664,9 @@ var _Bogdanp$elm_ast$Ast_Expression$String = function (a) { var _Bogdanp$elm_ast$Ast_Expression$string = function () { var multiString = A2( _elm_community$parser_combinators$Combine_ops['<$>'], - function (_p16) { + function (_p18) { return _Bogdanp$elm_ast$Ast_Expression$String( - _elm_lang$core$String$concat(_p16)); + _elm_lang$core$String$concat(_p18)); }, A2( _elm_community$parser_combinators$Combine_ops['<*'], @@ -7664,42 +7706,42 @@ var _Bogdanp$elm_ast$Ast_Expression$character = A2( _elm_community$parser_combinators$Combine$string('\\'), _elm_community$parser_combinators$Combine$regex('(n|t|r|\\\\|x..)')), function (a) { - var _p17 = _elm_lang$core$String$uncons(a); + var _p19 = _elm_lang$core$String$uncons(a); _v13_6: do { - if (_p17.ctor === 'Just') { - if (_p17._0.ctor === '_Tuple2') { - switch (_p17._0._0.valueOf()) { + if (_p19.ctor === 'Just') { + if (_p19._0.ctor === '_Tuple2') { + switch (_p19._0._0.valueOf()) { case 'n': - if (_p17._0._1 === '') { + if (_p19._0._1 === '') { return _elm_community$parser_combinators$Combine$succeed( _elm_lang$core$Native_Utils.chr('\n')); } else { break _v13_6; } case 't': - if (_p17._0._1 === '') { + if (_p19._0._1 === '') { return _elm_community$parser_combinators$Combine$succeed( _elm_lang$core$Native_Utils.chr('\t')); } else { break _v13_6; } case 'r': - if (_p17._0._1 === '') { + if (_p19._0._1 === '') { return _elm_community$parser_combinators$Combine$succeed( _elm_lang$core$Native_Utils.chr('\r')); } else { break _v13_6; } case '\\': - if (_p17._0._1 === '') { + if (_p19._0._1 === '') { return _elm_community$parser_combinators$Combine$succeed( _elm_lang$core$Native_Utils.chr('\\')); } else { break _v13_6; } case '0': - if (_p17._0._1 === '') { + if (_p19._0._1 === '') { return _elm_community$parser_combinators$Combine$succeed( _elm_lang$core$Native_Utils.chr('')); } else { @@ -7716,7 +7758,7 @@ var _Bogdanp$elm_ast$Ast_Expression$character = A2( _elm_lang$core$Result$map, _elm_lang$core$Char$fromCode, _rtfeldman$hex$Hex$fromString( - _elm_lang$core$String$toLower(_p17._0._1))))); + _elm_lang$core$String$toLower(_p19._0._1))))); default: break _v13_6; } @@ -7731,13 +7773,13 @@ var _Bogdanp$elm_ast$Ast_Expression$character = A2( A2( _elm_lang$core$Basics_ops['++'], 'No such character as \\', - _elm_lang$core$Basics$toString(_p17._0))); + _elm_lang$core$Basics$toString(_p19._0))); }), _elm_community$parser_combinators$Combine_Char$anyChar))); var _Bogdanp$elm_ast$Ast_Expression$term = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p18) { - var _p19 = _p18; + function (_p20) { + var _p21 = _p20; return _elm_community$parser_combinators$Combine$choice( { ctor: '::', @@ -7800,8 +7842,8 @@ var _Bogdanp$elm_ast$Ast_Expression$term = function (ops) { }; var _Bogdanp$elm_ast$Ast_Expression$expression = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p20) { - var _p21 = _p20; + function (_p22) { + var _p23 = _p22; return _elm_community$parser_combinators$Combine$choice( { ctor: '::', @@ -7828,15 +7870,15 @@ var _Bogdanp$elm_ast$Ast_Expression$expression = function (ops) { }; var _Bogdanp$elm_ast$Ast_Expression$binary = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p22) { - var _p23 = _p22; + function (_p24) { + var _p25 = _p24; var next = A2( _elm_community$parser_combinators$Combine_ops['>>='], _Bogdanp$elm_ast$Ast_Expression$operatorOrAsBetween, function (op) { return _elm_community$parser_combinators$Combine$lazy( - function (_p24) { - var _p25 = _p24; + function (_p26) { + var _p27 = _p26; return A2( _elm_community$parser_combinators$Combine_ops['>>='], A2( @@ -7850,21 +7892,21 @@ var _Bogdanp$elm_ast$Ast_Expression$binary = function (ops) { _Bogdanp$elm_ast$Ast_Expression$Stop, _Bogdanp$elm_ast$Ast_Expression$expression(ops))), function (e) { - var _p26 = e; - if (_p26.ctor === 'Cont') { + var _p28 = e; + if (_p28.ctor === 'Cont') { return A2( _elm_community$parser_combinators$Combine_ops['<$>'], F2( function (x, y) { return {ctor: '::', _0: x, _1: y}; })( - {ctor: '_Tuple2', _0: op, _1: _p26._0}), + {ctor: '_Tuple2', _0: op, _1: _p28._0}), _Bogdanp$elm_ast$Ast_Expression$successOrEmptyList(next)); } else { return _elm_community$parser_combinators$Combine$succeed( { ctor: '::', - _0: {ctor: '_Tuple2', _0: op, _1: _p26._0}, + _0: {ctor: '_Tuple2', _0: op, _1: _p28._0}, _1: {ctor: '[]'} }); } @@ -7885,102 +7927,47 @@ var _Bogdanp$elm_ast$Ast_Expression$binary = function (ops) { }); }; var _Bogdanp$elm_ast$Ast_Expression$application = function (ops) { - return _elm_community$parser_combinators$Combine$lazy( - function (_p27) { - var _p28 = _p27; - return A2( - _elm_community$parser_combinators$Combine$chainl, - A2( - _elm_community$parser_combinators$Combine_ops['<$'], - _Bogdanp$elm_ast$Ast_Expression$Application, - _Bogdanp$elm_ast$Ast_Expression$spacesOrIndentedNewline(ops)), - _Bogdanp$elm_ast$Ast_Expression$term(ops)); - }); -}; -var _Bogdanp$elm_ast$Ast_Expression$spacesOrIndentedNewline = function (ops) { return _elm_community$parser_combinators$Combine$lazy( function (_p29) { var _p30 = _p29; - return A2( - _elm_community$parser_combinators$Combine_ops['<|>'], - A2( - _elm_community$parser_combinators$Combine_ops['*>'], - _elm_community$parser_combinators$Combine$regex('[ \\t]*\n[ \\t]+'), - _Bogdanp$elm_ast$Ast_Expression$maybeBindingAhead(ops)), - _Bogdanp$elm_ast$Ast_Helpers$spaces_); - }); -}; -var _Bogdanp$elm_ast$Ast_Expression$maybeBindingAhead = function (ops) { - return _elm_community$parser_combinators$Combine$lazy( - function (_p31) { - var _p32 = _p31; - return _elm_community$parser_combinators$Combine$lookAhead( - A2( - _elm_community$parser_combinators$Combine_ops['>>='], - function (_p33) { - return _elm_community$parser_combinators$Combine$maybe( - _elm_community$parser_combinators$Combine$choice(_p33)); - }( - { - ctor: '::', - _0: _Bogdanp$elm_ast$Ast_Expression$letBinding(ops), - _1: { - ctor: '::', - _0: _Bogdanp$elm_ast$Ast_Expression$caseBinding(ops), - _1: {ctor: '[]'} - } - }), - _Bogdanp$elm_ast$Ast_Expression$negate)); + return _elm_community$parser_combinators$Combine$withColumn( + function (l) { + return A2( + _elm_community$parser_combinators$Combine$chainl, + A2( + _elm_community$parser_combinators$Combine_ops['<$'], + _Bogdanp$elm_ast$Ast_Expression$Application, + _Bogdanp$elm_ast$Ast_Expression$spacesOrIndentedNewline(l)), + _Bogdanp$elm_ast$Ast_Expression$term(ops)); + }); }); }; -var _Bogdanp$elm_ast$Ast_Expression$caseBinding = function (ops) { - return _elm_community$parser_combinators$Combine$lazy( - function (_p34) { - var _p35 = _p34; - return A2( - _elm_community$parser_combinators$Combine_ops['<*>'], - A2( - _elm_community$parser_combinators$Combine_ops['<$>'], - F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - }), +var _Bogdanp$elm_ast$Ast_Expression$caseExpression = function (ops) { + var binding = function (indent) { + return _elm_community$parser_combinators$Combine$lazy( + function (_p31) { + var _p32 = _p31; + return A2( + _elm_community$parser_combinators$Combine_ops['<*>'], A2( - _elm_community$parser_combinators$Combine_ops['*>'], - _elm_community$parser_combinators$Combine$whitespace, - _Bogdanp$elm_ast$Ast_Expression$expression(ops))), - A2( - _elm_community$parser_combinators$Combine_ops['*>'], - _Bogdanp$elm_ast$Ast_Helpers$symbol('->'), - _Bogdanp$elm_ast$Ast_Expression$expression(ops))); - }); -}; -var _Bogdanp$elm_ast$Ast_Expression$letBinding = function (ops) { - return _elm_community$parser_combinators$Combine$lazy( - function (_p36) { - var _p37 = _p36; - return A2( - _elm_community$parser_combinators$Combine_ops['<*>'], - A2( - _elm_community$parser_combinators$Combine_ops['<$>'], - F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - }), + _elm_community$parser_combinators$Combine_ops['<$>'], + F2( + function (v0, v1) { + return {ctor: '_Tuple2', _0: v0, _1: v1}; + }), + A2( + _elm_community$parser_combinators$Combine_ops['*>'], + _Bogdanp$elm_ast$Ast_Helpers$exactIndentation(indent), + _Bogdanp$elm_ast$Ast_Expression$expression(ops))), A2( - _Bogdanp$elm_ast$Ast_Helpers$between_, - _elm_community$parser_combinators$Combine$whitespace, - _Bogdanp$elm_ast$Ast_Expression$expression(ops))), - A2( - _elm_community$parser_combinators$Combine_ops['*>'], - _Bogdanp$elm_ast$Ast_Helpers$symbol('='), - _Bogdanp$elm_ast$Ast_Expression$expression(ops))); - }); -}; -var _Bogdanp$elm_ast$Ast_Expression$caseExpression = function (ops) { + _elm_community$parser_combinators$Combine_ops['*>'], + _Bogdanp$elm_ast$Ast_Helpers$symbol('->'), + _Bogdanp$elm_ast$Ast_Expression$expression(ops))); + }); + }; return _elm_community$parser_combinators$Combine$lazy( - function (_p38) { - var _p39 = _p38; + function (_p33) { + var _p34 = _p33; return A2( _elm_community$parser_combinators$Combine_ops['<*>'], A2( @@ -7991,16 +7978,24 @@ var _Bogdanp$elm_ast$Ast_Expression$caseExpression = function (ops) { _Bogdanp$elm_ast$Ast_Helpers$symbol('case'), _Bogdanp$elm_ast$Ast_Expression$expression(ops))), A2( - _elm_community$parser_combinators$Combine_ops['*>'], - _Bogdanp$elm_ast$Ast_Helpers$symbol('of'), - _elm_community$parser_combinators$Combine$many1( - _Bogdanp$elm_ast$Ast_Expression$caseBinding(ops)))); + _elm_community$parser_combinators$Combine_ops['>>='], + A2( + _elm_community$parser_combinators$Combine_ops['*>'], + A2( + _elm_community$parser_combinators$Combine_ops['*>'], + _elm_community$parser_combinators$Combine$whitespace, + _elm_community$parser_combinators$Combine$string('of')), + _elm_community$parser_combinators$Combine$lookAhead(_Bogdanp$elm_ast$Ast_Expression$countIndent)), + function (indent) { + return _elm_community$parser_combinators$Combine$many1( + binding(indent)); + })); }); }; var _Bogdanp$elm_ast$Ast_Expression$ifExpression = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p40) { - var _p41 = _p40; + function (_p35) { + var _p36 = _p35; return A2( _elm_community$parser_combinators$Combine_ops['<*>'], A2( @@ -8024,8 +8019,8 @@ var _Bogdanp$elm_ast$Ast_Expression$ifExpression = function (ops) { }; var _Bogdanp$elm_ast$Ast_Expression$lambda = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p42) { - var _p43 = _p42; + function (_p37) { + var _p38 = _p37; return A2( _elm_community$parser_combinators$Combine_ops['<*>'], A2( @@ -8047,8 +8042,8 @@ var _Bogdanp$elm_ast$Ast_Expression$lambda = function (ops) { }; var _Bogdanp$elm_ast$Ast_Expression$letExpression = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p44) { - var _p45 = _p44; + function (_p39) { + var _p40 = _p39; return A2( _elm_community$parser_combinators$Combine_ops['<*>'], A2( @@ -8065,10 +8060,32 @@ var _Bogdanp$elm_ast$Ast_Expression$letExpression = function (ops) { _Bogdanp$elm_ast$Ast_Expression$expression(ops))); }); }; +var _Bogdanp$elm_ast$Ast_Expression$letBinding = function (ops) { + return _elm_community$parser_combinators$Combine$lazy( + function (_p41) { + var _p42 = _p41; + return A2( + _elm_community$parser_combinators$Combine_ops['<*>'], + A2( + _elm_community$parser_combinators$Combine_ops['<$>'], + F2( + function (v0, v1) { + return {ctor: '_Tuple2', _0: v0, _1: v1}; + }), + A2( + _Bogdanp$elm_ast$Ast_Helpers$between_, + _elm_community$parser_combinators$Combine$whitespace, + _Bogdanp$elm_ast$Ast_Expression$expression(ops))), + A2( + _elm_community$parser_combinators$Combine_ops['*>'], + _Bogdanp$elm_ast$Ast_Helpers$symbol('='), + _Bogdanp$elm_ast$Ast_Expression$expression(ops))); + }); +}; var _Bogdanp$elm_ast$Ast_Expression$list = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p46) { - var _p47 = _p46; + function (_p43) { + var _p44 = _p43; return A2( _elm_community$parser_combinators$Combine_ops['<$>'], _Bogdanp$elm_ast$Ast_Expression$List, @@ -8079,8 +8096,8 @@ var _Bogdanp$elm_ast$Ast_Expression$list = function (ops) { }; var _Bogdanp$elm_ast$Ast_Expression$record = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p48) { - var _p49 = _p48; + function (_p45) { + var _p46 = _p45; return A2( _elm_community$parser_combinators$Combine_ops['<$>'], _Bogdanp$elm_ast$Ast_Expression$Record, @@ -8103,8 +8120,8 @@ var _Bogdanp$elm_ast$Ast_Expression$record = function (ops) { }; var _Bogdanp$elm_ast$Ast_Expression$recordUpdate = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p50) { - var _p51 = _p50; + function (_p47) { + var _p48 = _p47; return A2( _elm_community$parser_combinators$Combine_ops['<*>'], A2( @@ -8133,13 +8150,13 @@ var _Bogdanp$elm_ast$Ast_Expression$recordUpdate = function (ops) { _elm_community$parser_combinators$Combine_ops['*>'], _Bogdanp$elm_ast$Ast_Helpers$symbol('='), _Bogdanp$elm_ast$Ast_Expression$expression(ops))))), - _Bogdanp$elm_ast$Ast_Helpers$symbol('}'))); + _elm_community$parser_combinators$Combine$string('}'))); }); }; var _Bogdanp$elm_ast$Ast_Expression$tuple = function (ops) { return _elm_community$parser_combinators$Combine$lazy( - function (_p52) { - var _p53 = _p52; + function (_p49) { + var _p50 = _p49; return A2( _elm_community$parser_combinators$Combine_ops['<$>'], _Bogdanp$elm_ast$Ast_Expression$Tuple, @@ -8149,11 +8166,11 @@ var _Bogdanp$elm_ast$Ast_Expression$tuple = function (ops) { _Bogdanp$elm_ast$Ast_Helpers$commaSeparated_( _Bogdanp$elm_ast$Ast_Expression$expression(ops))), function (a) { - var _p54 = a; - if ((_p54.ctor === '::') && (_p54._1.ctor === '[]')) { + var _p51 = a; + if ((_p51.ctor === '::') && (_p51._1.ctor === '[]')) { return _elm_community$parser_combinators$Combine$fail('No single tuples'); } else { - return _elm_community$parser_combinators$Combine$succeed(_p54); + return _elm_community$parser_combinators$Combine$succeed(_p51); } })); }); @@ -12729,93 +12746,366 @@ var _evancz$elm_markdown$Markdown$Options = F4( return {githubFlavored: a, defaultHighlighting: b, sanitize: c, smartypants: d}; }); -var _user$project$Helpers$findInList = function (f) { - return A3( - _elm_lang$core$Basics$flip, - _elm_lang$core$List$foldl, - _elm_lang$core$Maybe$Nothing, - F2( - function (a, acc) { - return f(a) ? _elm_lang$core$Maybe$Just(a) : acc; - })); -}; -var _user$project$Helpers$filterMaybe = F2( - function (f, m) { - return A3( - _elm_lang$core$Basics$flip, - _elm_lang$core$Maybe$andThen, - m, - function (a) { - return f(a) ? _elm_lang$core$Maybe$Just(a) : _elm_lang$core$Maybe$Nothing; - }); - }); -var _user$project$Helpers$maybeOr = F2( - function (m1, m2) { - var _p0 = m1; - if (_p0.ctor === 'Just') { - return m1; - } else { - return m2; - } - }); -var _user$project$Helpers_ops = _user$project$Helpers_ops || {}; -_user$project$Helpers_ops['=>'] = F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - }); -var _user$project$Helpers$constructApplication = function (list) { - var _p1 = list; - if (_p1.ctor === '[]') { - return _elm_lang$core$Native_Utils.crashCase( - 'Helpers', - { - start: {line: 494, column: 5}, - end: {line: 502, column: 97} - }, - _p1)('Wrong application'); - } else { - if (_p1._1.ctor === '[]') { - return { - ctor: '::', - _0: _Bogdanp$elm_ast$Ast_Expression$Variable( - { - ctor: '::', - _0: _p1._0, - _1: {ctor: '[]'} - }), - _1: {ctor: '[]'} - }; - } else { - return { - ctor: '::', - _0: A3( - _elm_lang$core$List$foldl, - F2( - function (a, acc) { - return A2( - _Bogdanp$elm_ast$Ast_Expression$Application, +var _user$project$ExAst$foldExpression = F3( + function (f, acc, t) { + var rec = _elm_lang$core$Basics$flip( + _user$project$ExAst$foldExpression(f)); + return A2( + f, + t, + function () { + var _p0 = t; + switch (_p0.ctor) { + case 'Variable': + return acc; + case 'Character': + return acc; + case 'String': + return acc; + case 'Integer': + return acc; + case 'Float': + return acc; + case 'List': + return A3(_elm_lang$core$List$foldl, rec, acc, _p0._0); + case 'Tuple': + return A3(_elm_lang$core$List$foldl, rec, acc, _p0._0); + case 'Access': + return A2(rec, _p0._0, acc); + case 'AccessFunction': + return acc; + case 'Record': + return A3( + _elm_lang$core$List$foldl, + function (_p1) { + return rec( + _elm_lang$core$Tuple$second(_p1)); + }, + acc, + _p0._0); + case 'RecordUpdate': + return A3( + _elm_lang$core$List$foldl, + function (_p2) { + return rec( + _elm_lang$core$Tuple$second(_p2)); + }, + acc, + _p0._1); + case 'If': + return A2( + rec, + _p0._2, + A2( + rec, + _p0._1, + A2(rec, _p0._0, acc))); + case 'Let': + return A2( + rec, + _p0._1, + A3( + _elm_lang$core$List$foldl, + F2( + function (_p3, lAcc) { + var _p4 = _p3; + return A2( + rec, + _p4._1, + A2(rec, _p4._0, lAcc)); + }), acc, - _Bogdanp$elm_ast$Ast_Expression$Variable( - { - ctor: '::', - _0: a, - _1: {ctor: '[]'} - })); - }), - _Bogdanp$elm_ast$Ast_Expression$Variable( - { - ctor: '::', - _0: _p1._0, - _1: {ctor: '[]'} - }), - _p1._1), - _1: {ctor: '[]'} - }; - } - } -}; -var _user$project$Helpers$typeApplicationToList = function (application) { - var _p3 = application; + _p0._0)); + case 'Case': + return function (nAcc) { + return A3( + _elm_lang$core$List$foldl, + F2( + function (_p5, lAcc) { + var _p6 = _p5; + return A2( + rec, + _p6._1, + A2(rec, _p6._0, lAcc)); + }), + nAcc, + _p0._1); + }( + A2(rec, _p0._0, acc)); + case 'Lambda': + return A2( + rec, + _p0._1, + A3(_elm_lang$core$List$foldl, rec, acc, _p0._0)); + case 'Application': + return A2( + rec, + _p0._1, + A2(rec, _p0._0, acc)); + default: + return A2( + rec, + _p0._2, + A2( + rec, + _p0._1, + A2(rec, _p0._0, acc))); + } + }()); + }); +var _user$project$ExAst$walkExpression = F2( + function (f, t) { + var _p7 = f(t); + switch (_p7.ctor) { + case 'Variable': + return _p7; + case 'Character': + return _p7; + case 'String': + return _p7; + case 'Integer': + return _p7; + case 'Float': + return _p7; + case 'List': + return _Bogdanp$elm_ast$Ast_Expression$List( + A2( + _elm_lang$core$List$map, + _user$project$ExAst$walkExpression(f), + _p7._0)); + case 'Tuple': + return _Bogdanp$elm_ast$Ast_Expression$Tuple( + A2( + _elm_lang$core$List$map, + _user$project$ExAst$walkExpression(f), + _p7._0)); + case 'Access': + return A2( + _Bogdanp$elm_ast$Ast_Expression$Access, + A2(_user$project$ExAst$walkExpression, f, _p7._0), + _p7._1); + case 'AccessFunction': + return _p7; + case 'Record': + return _Bogdanp$elm_ast$Ast_Expression$Record( + A2( + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapSecond( + _user$project$ExAst$walkExpression(f)), + _p7._0)); + case 'RecordUpdate': + return A2( + _Bogdanp$elm_ast$Ast_Expression$RecordUpdate, + _p7._0, + A2( + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapSecond( + _user$project$ExAst$walkExpression(f)), + _p7._1)); + case 'If': + return A3( + _Bogdanp$elm_ast$Ast_Expression$If, + A2(_user$project$ExAst$walkExpression, f, _p7._0), + A2(_user$project$ExAst$walkExpression, f, _p7._1), + A2(_user$project$ExAst$walkExpression, f, _p7._2)); + case 'Let': + return A2( + _Bogdanp$elm_ast$Ast_Expression$Let, + A2( + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapSecond( + _user$project$ExAst$walkExpression(f)), + _p7._0), + A2(_user$project$ExAst$walkExpression, f, _p7._1)); + case 'Case': + return A2( + _Bogdanp$elm_ast$Ast_Expression$Case, + A2(_user$project$ExAst$walkExpression, f, _p7._0), + A2( + _elm_lang$core$List$map, + function (_p8) { + var _p9 = _p8; + return { + ctor: '_Tuple2', + _0: A2(_user$project$ExAst$walkExpression, f, _p9._0), + _1: A2(_user$project$ExAst$walkExpression, f, _p9._1) + }; + }, + _p7._1)); + case 'Lambda': + return A2( + _Bogdanp$elm_ast$Ast_Expression$Lambda, + A2( + _elm_lang$core$List$map, + _user$project$ExAst$walkExpression(f), + _p7._0), + A2(_user$project$ExAst$walkExpression, f, _p7._1)); + case 'Application': + return A2( + _Bogdanp$elm_ast$Ast_Expression$Application, + A2(_user$project$ExAst$walkExpression, f, _p7._0), + A2(_user$project$ExAst$walkExpression, f, _p7._1)); + default: + return A3( + _Bogdanp$elm_ast$Ast_Expression$BinOp, + A2(_user$project$ExAst$walkExpression, f, _p7._0), + A2(_user$project$ExAst$walkExpression, f, _p7._1), + A2(_user$project$ExAst$walkExpression, f, _p7._2)); + } + }); +var _user$project$ExAst$walkExpressionInwards = F2( + function (f, t) { + return A2( + _user$project$ExAst$walkExpression, + _user$project$ExAst$walkExpressionInwards(f), + f(t)); + }); +var _user$project$ExAst$walkExpressionOutwards = F2( + function (f, t) { + return f( + A2( + _user$project$ExAst$walkExpression, + _user$project$ExAst$walkExpressionOutwards(f), + t)); + }); +var _user$project$ExAst$walkType = F2( + function (walkFunction, t) { + var _p10 = t; + switch (_p10.ctor) { + case 'TypeVariable': + return _p10; + case 'TypeConstructor': + return A2( + _Bogdanp$elm_ast$Ast_Statement$TypeConstructor, + _p10._0, + A2(_elm_lang$core$List$map, walkFunction, _p10._1)); + case 'TypeRecordConstructor': + return A2( + _Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor, + walkFunction(_p10._0), + A2( + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapSecond(walkFunction), + _p10._1)); + case 'TypeTuple': + return _Bogdanp$elm_ast$Ast_Statement$TypeTuple( + A2(_elm_lang$core$List$map, walkFunction, _p10._0)); + case 'TypeRecord': + return _Bogdanp$elm_ast$Ast_Statement$TypeRecord( + A2( + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapSecond(walkFunction), + _p10._0)); + default: + return A2( + _Bogdanp$elm_ast$Ast_Statement$TypeApplication, + walkFunction(_p10._0), + walkFunction(_p10._1)); + } + }); +var _user$project$ExAst$walkTypeInwards = F2( + function (f, t) { + return A2( + _user$project$ExAst$walkType, + _user$project$ExAst$walkTypeInwards(f), + f(t)); + }); +var _user$project$ExAst$walkTypeOutwards = F2( + function (f, t) { + return f( + A2( + _user$project$ExAst$walkType, + _user$project$ExAst$walkTypeOutwards(f), + t)); + }); + +var _user$project$Helpers$findInList = function (f) { + return A3( + _elm_lang$core$Basics$flip, + _elm_lang$core$List$foldl, + _elm_lang$core$Maybe$Nothing, + F2( + function (a, acc) { + return f(a) ? _elm_lang$core$Maybe$Just(a) : acc; + })); +}; +var _user$project$Helpers$filterMaybe = F2( + function (f, m) { + return A3( + _elm_lang$core$Basics$flip, + _elm_lang$core$Maybe$andThen, + m, + function (a) { + return f(a) ? _elm_lang$core$Maybe$Just(a) : _elm_lang$core$Maybe$Nothing; + }); + }); +var _user$project$Helpers$maybeOr = F2( + function (m1, m2) { + var _p0 = m1; + if (_p0.ctor === 'Just') { + return m1; + } else { + return m2; + } + }); +var _user$project$Helpers_ops = _user$project$Helpers_ops || {}; +_user$project$Helpers_ops['=>'] = F2( + function (v0, v1) { + return {ctor: '_Tuple2', _0: v0, _1: v1}; + }); +var _user$project$Helpers$constructApplication = function (list) { + var _p1 = list; + if (_p1.ctor === '[]') { + return _elm_lang$core$Native_Utils.crashCase( + 'Helpers', + { + start: {line: 483, column: 5}, + end: {line: 491, column: 97} + }, + _p1)('Wrong application'); + } else { + if (_p1._1.ctor === '[]') { + return { + ctor: '::', + _0: _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: _p1._0, + _1: {ctor: '[]'} + }), + _1: {ctor: '[]'} + }; + } else { + return { + ctor: '::', + _0: A3( + _elm_lang$core$List$foldl, + F2( + function (a, acc) { + return A2( + _Bogdanp$elm_ast$Ast_Expression$Application, + acc, + _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: a, + _1: {ctor: '[]'} + })); + }), + _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: _p1._0, + _1: {ctor: '[]'} + }), + _p1._1), + _1: {ctor: '[]'} + }; + } + } +}; +var _user$project$Helpers$typeApplicationToList = function (application) { + var _p3 = application; if (_p3.ctor === 'TypeApplication') { return { ctor: '::', @@ -12836,8 +13126,8 @@ var _user$project$Helpers$listToApplication = function (list) { return _elm_lang$core$Native_Utils.crashCase( 'Helpers', { - start: {line: 467, column: 5}, - end: {line: 475, column: 54} + start: {line: 456, column: 5}, + end: {line: 464, column: 54} }, _p4)('Empty list to expression conversion'); } else { @@ -13206,7 +13496,11 @@ var _user$project$Helpers$reservedBasicFunctions = { _1: { ctor: '::', _0: 'tuple5', - _1: {ctor: '[]'} + _1: { + ctor: '::', + _0: 'rec', + _1: {ctor: '[]'} + } } } } @@ -13269,7 +13563,11 @@ var _user$project$Helpers$reservedWords = { _1: { ctor: '::', _0: 'module', - _1: {ctor: '[]'} + _1: { + ctor: '::', + _0: 'use', + _1: {ctor: '[]'} + } } } } @@ -13449,8 +13747,8 @@ var _user$project$Helpers$replaceOp_ = function (op) { return _elm_lang$core$Native_Utils.crashCase( 'Helpers', { - start: {line: 433, column: 5}, - end: {line: 440, column: 37} + start: {line: 422, column: 5}, + end: {line: 429, column: 37} }, _p9)('Illegal op'); } @@ -13621,8 +13919,8 @@ var _user$project$Helpers$translateOperator = function (op) { return _elm_lang$core$Native_Utils.crashCase( 'Helpers', { - start: {line: 219, column: 5}, - end: {line: 229, column: 25} + start: {line: 206, column: 5}, + end: {line: 216, column: 25} }, _p11)( A2(_elm_lang$core$Basics_ops['++'], op, ' is not a valid or not implemented yet operator')); @@ -13792,28 +14090,6 @@ var _user$project$Helpers$modulePath = function (list) { '.', A2(_elm_lang$core$List$map, snakeIfLower, list))); }; -var _user$project$Helpers$notImplemented = F2( - function (feature, value) { - return _elm_lang$core$Native_Utils.crash( - 'Helpers', - { - start: {line: 25, column: 12}, - end: {line: 25, column: 23} - })( - A2( - _elm_lang$core$Basics_ops['++'], - ' ## ERROR: No ', - A2( - _elm_lang$core$Basics_ops['++'], - feature, - A2( - _elm_lang$core$Basics_ops['++'], - ' implementation for ', - A2( - _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(value), - A2(_elm_lang$core$Basics_ops['++'], ' yet', '\n')))))); - }); var _user$project$Helpers$Lower = function (a) { return {ctor: 'Lower', _0: a}; }; @@ -13860,6 +14136,44 @@ var _user$project$Helpers$isCustomOperator = function (op) { _user$project$Helpers$Custom); }; +var _user$project$ExContext$notImplemented = F3( + function (c, feature, value) { + return _elm_lang$core$Native_Utils.crash( + 'ExContext', + { + start: {line: 537, column: 12}, + end: {line: 537, column: 23} + })( + A2( + _elm_lang$core$Basics_ops['++'], + ' ## ERROR: No ', + A2( + _elm_lang$core$Basics_ops['++'], + feature, + A2( + _elm_lang$core$Basics_ops['++'], + ' implementation for ', + A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString(value), + A2(_elm_lang$core$Basics_ops['++'], ' yet', '\n')))))); + }); +var _user$project$ExContext$crash = F2( + function (c, prompt) { + return _elm_lang$core$Native_Utils.crash( + 'ExContext', + { + start: {line: 520, column: 5}, + end: {line: 520, column: 16} + })( + A2( + _elm_lang$core$Basics_ops['++'], + 'Compilation error:\n\n\t', + A2( + _elm_lang$core$Basics_ops['++'], + prompt, + A2(_elm_lang$core$Basics_ops['++'], '\n\nin module: ', c.mod)))); + }); var _user$project$ExContext$listOfImports = function (shadowed) { var importTuple = function (_p0) { var _p1 = _p0; @@ -13976,13 +14290,7 @@ var _user$project$ExContext$isPrivate = F2( case 'AllExport': return false; default: - return _elm_lang$core$Native_Utils.crashCase( - 'ExContext', - { - start: {line: 357, column: 5}, - end: {line: 368, column: 41} - }, - _p4)('No such export'); + return A2(_user$project$ExContext$crash, context, 'No such export'); } }); var _user$project$ExContext$inArgs = function (c) { @@ -14008,14 +14316,14 @@ var _user$project$ExContext$getAllFlags = F2( _elm_lang$core$Tuple$second, A2( _elm_lang$core$List$filter, - function (_p6) { + function (_p5) { return A2( F2( function (x, y) { return _elm_lang$core$Native_Utils.eq(x, y); }), key, - _elm_lang$core$Tuple$first(_p6)); + _elm_lang$core$Tuple$first(_p5)); }, c.flags)); }); @@ -14050,7 +14358,11 @@ var _user$project$ExContext$changeCurrentModule = F2( var _user$project$ExContext$emptyCommons = {modules: _elm_lang$core$Dict$empty}; var _user$project$ExContext$getArity = F3( function (ctx, m, fn) { - return A2( + var imported = A2( + _elm_lang$core$Maybe$map, + _elm_lang$core$Tuple$second, + A2(_elm_lang$core$Dict$get, fn, ctx.importedFunctions)); + var local = A2( _elm_lang$core$Maybe$map, function (_) { return _.arity; @@ -14064,6 +14376,7 @@ var _user$project$ExContext$getArity = F3( return _.definitions; }, A2(_elm_lang$core$Dict$get, m, ctx.commons.modules)))); + return A2(_user$project$Helpers$maybeOr, local, imported); }); var _user$project$ExContext$areMatchingArity = F4( function (c, mod, fn, args) { @@ -14100,14 +14413,11 @@ var _user$project$ExContext$getType = _user$project$ExContext$getFromContext( function (_) { return _.types; }); -var _user$project$ExContext$wrongArityAlias = F3( - function (arity, list, name) { - return _elm_lang$core$Native_Utils.crash( - 'ExContext', - { - start: {line: 139, column: 5}, - end: {line: 139, column: 16} - })( +var _user$project$ExContext$wrongArityAlias = F4( + function (c, arity, list, name) { + return A2( + _user$project$ExContext$crash, + c, A2( _elm_lang$core$Basics_ops['++'], 'Expected ', @@ -14169,7 +14479,10 @@ var _user$project$ExContext$empty = F2( _0: {ctor: '_Tuple2', _0: 'Result', _1: 'Elchemy.XResult'}, _1: {ctor: '[]'} } - }) + }), + importedFunctions: _elm_lang$core$Dict$empty, + meta: _elm_lang$core$Maybe$Nothing, + inMeta: false }; }); var _user$project$ExContext$emptyModule = A4(_user$project$ExContext$Module, _elm_lang$core$Dict$empty, _elm_lang$core$Dict$empty, _elm_lang$core$Dict$empty, _Bogdanp$elm_ast$Ast_Statement$AllExport); @@ -14280,7 +14593,7 @@ var _user$project$ExContext$mergeTypes = F3( return A2( _elm_lang$core$Dict$filter, F2( - function (k, _p7) { + function (k, _p6) { return _elm_lang$core$Native_Utils.eq(k, aliasName); }), A2( @@ -14295,9 +14608,9 @@ var _user$project$ExContext$mergeTypes = F3( return A2( _elm_lang$core$Dict$filter, F2( - function (k, _p8) { - var _p9 = _p8; - return _elm_lang$core$Native_Utils.eq(_p9.parentAlias, aliasName); + function (k, _p7) { + var _p8 = _p7; + return _elm_lang$core$Native_Utils.eq(_p8.parentAlias, aliasName); }), A2( getAll, @@ -14308,10 +14621,10 @@ var _user$project$ExContext$mergeTypes = F3( }); var importOne = F2( function ($export, c) { - var _p10 = $export; - switch (_p10.ctor) { + var _p9 = $export; + switch (_p9.ctor) { case 'TypeExport': - var _p11 = _p10._0; + var _p10 = _p9._0; return A4( putAllLocal, function (_) { @@ -14323,7 +14636,7 @@ var _user$project$ExContext$mergeTypes = F3( m, {types: x}); }), - A2(getTypes, _p11, _p10._1), + A2(getTypes, _p10, _p9._1), A4( putAllLocal, function (_) { @@ -14335,22 +14648,16 @@ var _user$project$ExContext$mergeTypes = F3( m, {aliases: x}); }), - getAlias(_p11), + getAlias(_p10), c)); case 'FunctionExport': return c; default: - return _elm_lang$core$Native_Utils.crashCase( - 'ExContext', - { - start: {line: 472, column: 13}, - end: {line: 482, column: 69} - }, - _p10)('You can\'t import subset of subsets'); + return A2(_user$project$ExContext$crash, c, 'You can\'t import subset of subsets'); } }); - var _p13 = set; - switch (_p13.ctor) { + var _p11 = set; + switch (_p11.ctor) { case 'AllExport': return A4( putAllLocal, @@ -14388,15 +14695,9 @@ var _user$project$ExContext$mergeTypes = F3( mod), c)); case 'SubsetExport': - return A3(_elm_lang$core$List$foldl, importOne, c, _p13._0); + return A3(_elm_lang$core$List$foldl, importOne, c, _p11._0); default: - return _elm_lang$core$Native_Utils.crashCase( - 'ExContext', - { - start: {line: 484, column: 9}, - end: {line: 494, column: 77} - }, - _p13)('You can\'t import something that\'s not a subset'); + return A2(_user$project$ExContext$crash, c, 'You can\'t import something that\'s not a subset'); } }); var _user$project$ExContext$Commons = function (a) { @@ -14413,7 +14714,13 @@ var _user$project$ExContext$Context = function (a) { return function (i) { return function (j) { return function (k) { - return {mod: a, commons: b, exports: c, indent: d, flags: e, variables: f, inArgs: g, hasModuleDoc: h, lastDoc: i, inTypeDefiniton: j, importedTypes: k}; + return function (l) { + return function (m) { + return function (n) { + return {mod: a, commons: b, exports: c, indent: d, flags: e, variables: f, inArgs: g, hasModuleDoc: h, lastDoc: i, inTypeDefiniton: j, importedTypes: k, importedFunctions: l, meta: m, inMeta: n}; + }; + }; + }; }; }; }; @@ -14435,114 +14742,20 @@ var _user$project$ExContext$SimpleType = function (a) { var _user$project$ExContext$TypeAlias = {ctor: 'TypeAlias'}; var _user$project$ExContext$Type = {ctor: 'Type'}; -var _user$project$ExAst$walkTypeInwards = F2( - function (f, t) { - var _p0 = f(t); - switch (_p0.ctor) { - case 'TypeVariable': - return _p0; - case 'TypeConstructor': - return A2( - _Bogdanp$elm_ast$Ast_Statement$TypeConstructor, - _p0._0, - A2( - _elm_lang$core$List$map, - _user$project$ExAst$walkTypeInwards(f), - _p0._1)); - case 'TypeRecordConstructor': - return A2( - _Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor, - A2(_user$project$ExAst$walkTypeInwards, f, _p0._0), - A2( - _elm_lang$core$List$map, - _elm_lang$core$Tuple$mapSecond( - _user$project$ExAst$walkTypeInwards(f)), - _p0._1)); - case 'TypeTuple': - return _Bogdanp$elm_ast$Ast_Statement$TypeTuple( - A2( - _elm_lang$core$List$map, - _user$project$ExAst$walkTypeInwards(f), - _p0._0)); - case 'TypeRecord': - return _Bogdanp$elm_ast$Ast_Statement$TypeRecord( - A2( - _elm_lang$core$List$map, - _elm_lang$core$Tuple$mapSecond( - _user$project$ExAst$walkTypeInwards(f)), - _p0._0)); - default: - return A2( - _Bogdanp$elm_ast$Ast_Statement$TypeApplication, - A2(_user$project$ExAst$walkTypeInwards, f, _p0._0), - A2(_user$project$ExAst$walkTypeInwards, f, _p0._1)); - } - }); -var _user$project$ExAst$walkTypeOutwards = F2( - function (f, t) { - return f( - function () { - var _p1 = t; - switch (_p1.ctor) { - case 'TypeVariable': - return _p1; - case 'TypeConstructor': - return A2( - _Bogdanp$elm_ast$Ast_Statement$TypeConstructor, - _p1._0, - A2( - _elm_lang$core$List$map, - _user$project$ExAst$walkTypeOutwards(f), - _p1._1)); - case 'TypeTuple': - return _Bogdanp$elm_ast$Ast_Statement$TypeTuple( - A2( - _elm_lang$core$List$map, - _user$project$ExAst$walkTypeOutwards(f), - _p1._0)); - case 'TypeRecord': - return _Bogdanp$elm_ast$Ast_Statement$TypeRecord( - A2( - _elm_lang$core$List$map, - _elm_lang$core$Tuple$mapSecond( - _user$project$ExAst$walkTypeOutwards(f)), - _p1._0)); - case 'TypeRecordConstructor': - return A2( - _Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor, - A2(_user$project$ExAst$walkTypeOutwards, f, _p1._0), - A2( - _elm_lang$core$List$map, - _elm_lang$core$Tuple$mapSecond( - _user$project$ExAst$walkTypeOutwards(f)), - _p1._1)); - default: - return A2( - _Bogdanp$elm_ast$Ast_Statement$TypeApplication, - A2(_user$project$ExAst$walkTypeOutwards, f, _p1._0), - A2(_user$project$ExAst$walkTypeOutwards, f, _p1._1)); - } - }()); - }); - var _user$project$ExAlias$localAlias = F2( function (name, context) { return A3(_user$project$ExContext$getAlias, context.mod, name, context); }); -var _user$project$ExAlias$resolveTypes = F3( - function (expected, given, $return) { +var _user$project$ExAlias$resolveTypes = F4( + function (c, expected, given, $return) { var expectedName = function (n) { var _p0 = n; if (_p0.ctor === 'TypeVariable') { return _p0._0; } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExAlias', - { - start: {line: 169, column: 13}, - end: {line: 177, column: 46} - }, - _p0)( + return A2( + _user$project$ExContext$crash, + c, A2( _elm_lang$core$Basics_ops['++'], 'type can only take variables. ', @@ -14565,14 +14778,14 @@ var _user$project$ExAlias$resolveTypes = F3( A2(_elm_lang$core$List$map, expectedName, expected), given)); var replace = function (t) { - var _p2 = t; - if (_p2.ctor === 'TypeVariable') { + var _p1 = t; + if (_p1.ctor === 'TypeVariable') { return A2( _elm_lang$core$Maybe$withDefault, - _p2, - A2(_elm_lang$core$Dict$get, _p2._0, paramsWithResolution)); + _p1, + A2(_elm_lang$core$Dict$get, _p1._0, paramsWithResolution)); } else { - return _p2; + return _p1; } }; return A2(_user$project$ExAst$walkTypeOutwards, replace, $return); @@ -14580,29 +14793,23 @@ var _user$project$ExAlias$resolveTypes = F3( var _user$project$ExAlias$registerTypes = F3( function (types, parentAlias, c) { var addType = F2( - function (t, _p3) { - var _p4 = _p3; - var _p5 = t; - if (((_p5.ctor === 'TypeConstructor') && (_p5._0.ctor === '::')) && (_p5._0._1.ctor === '[]')) { - var _p6 = _p5._0._0; + function (t, _p2) { + var _p3 = _p2; + var _p4 = t; + if (((_p4.ctor === 'TypeConstructor') && (_p4._0.ctor === '::')) && (_p4._0._1.ctor === '[]')) { + var _p5 = _p4._0._0; return A2( _user$project$Helpers_ops['=>'], - {ctor: '::', _0: _p6, _1: _p4._0}, + {ctor: '::', _0: _p5, _1: _p3._0}, A5( _user$project$ExContext$addType, c.mod, parentAlias, - _p6, - _elm_lang$core$List$length(_p5._1), - _p4._1)); + _p5, + _elm_lang$core$List$length(_p4._1), + _p3._1)); } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExAlias', - { - start: {line: 116, column: 13}, - end: {line: 122, column: 65} - }, - _p5)('Type can only start with a tag'); + return A2(_user$project$ExContext$crash, c, 'Type can only start with a tag'); } }); return A3( @@ -14617,15 +14824,15 @@ var _user$project$ExAlias$registerTypes = F3( }); var _user$project$ExAlias$registerUnionType = F3( function (c, tc, types) { - var _p8 = tc; - if (((_p8.ctor === 'TypeConstructor') && (_p8._0.ctor === '::')) && (_p8._0._1.ctor === '[]')) { - var _p10 = _p8._0._0; - var _p9 = A3(_user$project$ExAlias$registerTypes, types, _p10, c); - var names = _p9._0; - var newC = _p9._1; - var arity = _elm_lang$core$List$length(_p8._1); + var _p6 = tc; + if (((_p6.ctor === 'TypeConstructor') && (_p6._0.ctor === '::')) && (_p6._0._1.ctor === '[]')) { + var _p8 = _p6._0._0; + var _p7 = A3(_user$project$ExAlias$registerTypes, types, _p8, c); + var names = _p7._0; + var newC = _p7._1; + var arity = _elm_lang$core$List$length(_p6._1); var typeVar = _Bogdanp$elm_ast$Ast_Statement$TypeVariable( - A2(_elm_lang$core$Basics_ops['++'], '@', _p10)); + A2(_elm_lang$core$Basics_ops['++'], '@', _p8)); var ali = A6( _user$project$ExContext$Alias, c.mod, @@ -14634,29 +14841,25 @@ var _user$project$ExAlias$registerUnionType = F3( typeVar, _user$project$ExContext$SimpleType(typeVar), names); - return A4(_user$project$ExContext$addAlias, c.mod, _p10, ali, newC); + return A4(_user$project$ExContext$addAlias, c.mod, _p8, ali, newC); } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExAlias', - { - start: {line: 80, column: 5}, - end: {line: 98, column: 68} - }, - _p8)( + return A2( + _user$project$ExContext$crash, + c, A2( _elm_lang$core$Basics_ops['++'], 'Wrong type declaration ', - _elm_lang$core$Basics$toString(_p8))); + _elm_lang$core$Basics$toString(_p6))); } }); var _user$project$ExAlias$registerTypeAlias = F3( function (c, tc, t) { - var _p12 = tc; - if (((_p12.ctor === 'TypeConstructor') && (_p12._0.ctor === '::')) && (_p12._0._1.ctor === '[]')) { - var _p14 = _p12._0._0; - var _p13 = _p12._1; - var typeBody = A3(_user$project$ExContext$ArgumentedType, _p14, _p13, t); - var arity = _elm_lang$core$List$length(_p13); + var _p9 = tc; + if (((_p9.ctor === 'TypeConstructor') && (_p9._0.ctor === '::')) && (_p9._0._1.ctor === '[]')) { + var _p11 = _p9._0._0; + var _p10 = _p9._1; + var typeBody = A3(_user$project$ExContext$ArgumentedType, _p11, _p10, t); + var arity = _elm_lang$core$List$length(_p10); var ali = A6( _user$project$ExContext$Alias, c.mod, @@ -14665,31 +14868,27 @@ var _user$project$ExAlias$registerTypeAlias = F3( t, typeBody, {ctor: '[]'}); - return A4(_user$project$ExContext$addAlias, c.mod, _p14, ali, c); + return A4(_user$project$ExContext$addAlias, c.mod, _p11, ali, c); } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExAlias', - { - start: {line: 60, column: 5}, - end: {line: 75, column: 74} - }, - _p12)( + return A2( + _user$project$ExContext$crash, + c, A2( _elm_lang$core$Basics_ops['++'], 'Wrong type alias declaration ', - _elm_lang$core$Basics$toString(_p12))); + _elm_lang$core$Basics$toString(_p9))); } }); -var _user$project$ExAlias$resolveTypeBody = F2( - function (typeBody, givenArgs) { - var _p16 = typeBody; - if (_p16.ctor === 'SimpleType') { - return _p16._0; +var _user$project$ExAlias$resolveTypeBody = F3( + function (c, typeBody, givenArgs) { + var _p12 = typeBody; + if (_p12.ctor === 'SimpleType') { + return _p12._0; } else { - var _p17 = _p16._1; - var expected = _elm_lang$core$List$length(_p17); + var _p13 = _p12._1; + var expected = _elm_lang$core$List$length(_p13); var arity = _elm_lang$core$List$length(givenArgs); - return _elm_lang$core$Native_Utils.eq(arity, expected) ? A3(_user$project$ExAlias$resolveTypes, _p17, givenArgs, _p16._2) : A3(_user$project$ExContext$wrongArityAlias, expected, givenArgs, _p16._0); + return _elm_lang$core$Native_Utils.eq(arity, expected) ? A4(_user$project$ExAlias$resolveTypes, c, _p13, givenArgs, _p12._2) : A4(_user$project$ExContext$wrongArityAlias, c, expected, givenArgs, _p12._0); } }); var _user$project$ExAlias$replaceTypeAliases = F2( @@ -14702,8 +14901,8 @@ var _user$project$ExAlias$replaceTypeAliases = F2( A2( _elm_lang$core$Maybe$andThen, function (body) { - var _p18 = body; - switch (_p18.ctor) { + var _p14 = body; + switch (_p14.ctor) { case 'TypeRecordConstructor': return _elm_lang$core$Maybe$Just(body); case 'TypeApplication': @@ -14714,13 +14913,13 @@ var _user$project$ExAlias$replaceTypeAliases = F2( }, A2( _elm_lang$core$Maybe$map, - function (_p19) { - var _p20 = _p19; - return A2(_user$project$ExAlias$resolveTypeBody, _p20.typeBody, args); + function (_p15) { + var _p16 = _p15; + return A3(_user$project$ExAlias$resolveTypeBody, c, _p16.typeBody, args); }, A2( _user$project$Helpers$filterMaybe, - function (_p21) { + function (_p17) { return A2( F2( function (x, y) { @@ -14729,24 +14928,24 @@ var _user$project$ExAlias$replaceTypeAliases = F2( _user$project$ExContext$TypeAlias, function (_) { return _.aliasType; - }(_p21)); + }(_p17)); }, A3(_user$project$ExContext$getAlias, mod, typeName, c))))); }); var typeConstructorReplace = F3( function ($default, fullType, args) { - return function (_p22) { - var _p23 = _p22; - return A4(mapOrFunUpdate, _p23._0, $default, _p23._1, args); + return function (_p18) { + var _p19 = _p18; + return A4(mapOrFunUpdate, _p19._0, $default, _p19._1, args); }( A2(_user$project$Helpers$moduleAccess, c.mod, fullType)); }); var replaceAlias = function (t) { - var _p24 = t; - if (_p24.ctor === 'TypeConstructor') { - return A3(typeConstructorReplace, t, _p24._0, _p24._1); + var _p20 = t; + if (_p20.ctor === 'TypeConstructor') { + return A3(typeConstructorReplace, t, _p20._0, _p20._1); } else { - return _p24; + return _p20; } }; return A2(_user$project$ExAst$walkTypeOutwards, replaceAlias, t); @@ -14764,14 +14963,14 @@ var _user$project$ExAlias$registerFunctionDefinition = F3( }); var _user$project$ExAlias$registerAlias = F2( function (s, c) { - var _p25 = s; - switch (_p25.ctor) { + var _p21 = s; + switch (_p21.ctor) { case 'TypeAliasDeclaration': - return A3(_user$project$ExAlias$registerTypeAlias, c, _p25._0, _p25._1); + return A3(_user$project$ExAlias$registerTypeAlias, c, _p21._0, _p21._1); case 'TypeDeclaration': - return A3(_user$project$ExAlias$registerUnionType, c, _p25._0, _p25._1); + return A3(_user$project$ExAlias$registerUnionType, c, _p21._0, _p21._1); case 'FunctionTypeDeclaration': - return A3(_user$project$ExAlias$registerFunctionDefinition, c, _p25._0, _p25._1); + return A3(_user$project$ExAlias$registerFunctionDefinition, c, _p21._0, _p21._1); default: return c; } @@ -14781,1646 +14980,1599 @@ var _user$project$ExAlias$getAliases = F2( return A3(_elm_lang$core$List$foldl, _user$project$ExAlias$registerAlias, c, list); }); -var _user$project$ExVariable$bubbleSelect = F2( - function (f, list) { - var findNext = F3( - function (discarded, list, acc) { - findNext: - while (true) { - var _p0 = list; - if (_p0.ctor === '[]') { - return _elm_lang$core$Native_Utils.eq( - discarded, - {ctor: '[]'}) ? _elm_lang$core$Result$Ok( - _elm_lang$core$List$reverse(acc)) : _elm_lang$core$Result$Err(discarded); - } else { - var _p2 = _p0._1; - var _p1 = _p0._0; - var newlist = A2(_elm_lang$core$Basics_ops['++'], discarded, _p2); - if (A2( - _elm_lang$core$List$all, - A2(_elm_lang$core$Basics$flip, f, _p1), - newlist)) { - var _v1 = {ctor: '[]'}, - _v2 = newlist, - _v3 = {ctor: '::', _0: _p1, _1: acc}; - discarded = _v1; - list = _v2; - acc = _v3; - continue findNext; - } else { - var _v4 = {ctor: '::', _0: _p1, _1: discarded}, - _v5 = _p2, - _v6 = acc; - discarded = _v4; - list = _v5; - acc = _v6; - continue findNext; - } - } - } - }); - var findIndex = F2( - function (discarded, list) { - return A2( - _elm_community$list_extra$List_Extra$break, - function (a) { - return A2( - _elm_lang$core$List$all, - f(a), - discarded); - }, - list); - }); - return A3( - findNext, - {ctor: '[]'}, - list, - {ctor: '[]'}); - }); -var _user$project$ExVariable$withoutVars = F2( - function (vars, right) { - return A2( - _elm_lang$core$List$filter, - function (_p3) { - return !A3(_elm_lang$core$Basics$flip, _elm_lang$core$List$member, vars, _p3); - }, - right); - }); -var _user$project$ExVariable$extractName = function (expression) { - var _p4 = _user$project$Helpers$applicationToList(expression); - if ((_p4.ctor === '::') && (_p4._1.ctor === '[]')) { - if (((_p4._0.ctor === 'Variable') && (_p4._0._0.ctor === '::')) && (_p4._0._0._1.ctor === '[]')) { - return _p4._0._0._0; +var _user$project$ExType$hasReturnedType = F2( + function (returned, t) { + var _p0 = _elm_lang$core$List$reverse( + _user$project$Helpers$typeApplicationToList(t)); + if (_p0.ctor === '[]') { + return false; } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExVariable', - { - start: {line: 133, column: 5}, - end: {line: 143, column: 40} - }, - _p4)( - A2( - _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(_p4._0), - ' is not a variable')); + return _elm_lang$core$Native_Utils.eq(_p0._0, returned); } - } else { - return A2( - _elm_lang$core$Maybe$withDefault, - '', - A2( - _elm_lang$core$Maybe$map, - _user$project$ExVariable$extractName, - _elm_lang$core$List$head(_p4))); - } -}; -var _user$project$ExVariable$extractVariablesUsed = function (exp) { - var none = {ctor: '[]'}; - var one = function ($var) { - return { - ctor: '::', - _0: $var, - _1: {ctor: '[]'} - }; - }; - var many = function (vars) { - return A3( - _elm_lang$core$List$foldr, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - {ctor: '[]'}, - A2(_elm_lang$core$List$map, _user$project$ExVariable$extractVariablesUsed, vars)); - }; - var _p6 = exp; - _v8_12: - do { - _v8_8: - do { - switch (_p6.ctor) { - case 'Record': - return many( - A2(_elm_lang$core$List$map, _elm_lang$core$Tuple$second, _p6._0)); - case 'Tuple': - return many(_p6._0); - case 'Variable': - if ((_p6._0.ctor === '::') && (_p6._0._1.ctor === '[]')) { - return one(_p6._0._0); - } else { - break _v8_12; - } - case 'List': - return many(_p6._0); - case 'Application': - return many( - { - ctor: '::', - _0: _p6._0, - _1: { - ctor: '::', - _0: _p6._1, - _1: {ctor: '[]'} - } - }); - case 'BinOp': - if (((_p6._0.ctor === 'Variable') && (_p6._0._0.ctor === '::')) && (_p6._0._0._1.ctor === '[]')) { - switch (_p6._0._0._0) { - case '::': - return many( - { - ctor: '::', - _0: _p6._1, - _1: { - ctor: '::', - _0: _p6._2, - _1: {ctor: '[]'} - } - }); - case 'as': - if (_p6._2.ctor === 'Variable') { - if (_p6._1.ctor === 'Variable') { - return many( - { - ctor: '::', - _0: _p6._1, - _1: { - ctor: '::', - _0: _p6._2, - _1: {ctor: '[]'} - } - }); + }); +var _user$project$ExType$typeAliasConstructor = F2( + function (args, _p1) { + typeAliasConstructor: + while (true) { + var _p2 = _p1; + var _p3 = {ctor: '_Tuple2', _0: _p2.aliasType, _1: _p2.body}; + _v2_6: + do { + _v2_0: + do { + if (_p3.ctor === '_Tuple2') { + switch (_p3._1.ctor) { + case 'TypeConstructor': + if (_p3._0.ctor === 'Type') { + break _v2_0; + } else { + if ((_p3._1._0.ctor === '::') && (_p3._1._0._1.ctor === '[]')) { + return _elm_lang$core$Maybe$Nothing; } else { - if ((_p6._2._0.ctor === '::') && (_p6._2._0._1.ctor === '[]')) { - return many( - { - ctor: '::', - _0: _p6._1, - _1: { - ctor: '::', - _0: _p6._2, - _1: {ctor: '[]'} - } - }); - } else { - break _v8_8; - } + break _v2_6; } - } else { - break _v8_8; } - default: - break _v8_8; - } - } else { - break _v8_8; - } - case 'Case': - return A2( - _user$project$ExVariable$withoutVars, - _user$project$ExVariable$extractVariablesUsed(_p6._0), - A2( - _elm_lang$core$List$concatMap, - _elm_lang$core$Basics$uncurry(_user$project$ExVariable$rightWithoutLeft), - _p6._1)); - case 'Let': - return A2( - _elm_lang$core$List$concatMap, - _elm_lang$core$Basics$uncurry(_user$project$ExVariable$rightWithoutLeft), - _p6._0); - case 'Lambda': - return A2( - _user$project$ExVariable$withoutVars, - A2(_elm_lang$core$List$concatMap, _user$project$ExVariable$extractVariablesUsed, _p6._0), - _user$project$ExVariable$extractVariablesUsed(_p6._1)); - default: - break _v8_12; - } - } while(false); - return many( - { - ctor: '::', - _0: _p6._1, - _1: { - ctor: '::', - _0: _p6._2, - _1: {ctor: '[]'} - } - }); - } while(false); - return none; -}; -var _user$project$ExVariable$rightWithoutLeft = F2( - function (left, right) { - return A2( - _user$project$ExVariable$withoutVars, - _user$project$ExVariable$extractVariablesUsed(left), - _user$project$ExVariable$extractVariablesUsed(right)); - }); -var _user$project$ExVariable$extractNamesAssigned = function (expression) { - var _p7 = _user$project$Helpers$applicationToList(expression); - if ((_p7.ctor === '::') && (_p7._1.ctor === '[]')) { - if (((_p7._0.ctor === 'Variable') && (_p7._0._0.ctor === '::')) && (_p7._0._0._1.ctor === '[]')) { - return { - ctor: '::', - _0: _p7._0._0._0, - _1: {ctor: '[]'} - }; - } else { - return _user$project$ExVariable$extractVariablesUsed(_p7._0); + case 'TypeRecord': + if (_p3._0.ctor === 'Type') { + break _v2_0; + } else { + var _p6 = _p3._1._0; + var params = A2( + _elm_lang$core$List$map, + function (_p4) { + return _Bogdanp$elm_ast$Ast_Expression$Variable( + _elm_lang$core$List$singleton(_p4)); + }, + A2( + _elm_lang$core$List$map, + function (_p5) { + return A2( + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + 'arg', + _elm_lang$core$Basics$toString(_p5)); + }, + A2( + _elm_lang$core$List$range, + 1, + A2( + F2( + function (x, y) { + return x + y; + }), + 0 - _elm_lang$core$List$length(args), + _elm_lang$core$List$length(_p6))))); + var varargs = A2( + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapFirst(_elm_lang$core$Tuple$first), + A3( + _elm_lang$core$List$map2, + _elm_lang$core$Basics$flip( + F2( + function (v0, v1) { + return {ctor: '_Tuple2', _0: v0, _1: v1}; + })), + A2(_elm_lang$core$Basics_ops['++'], args, params), + _p6)); + return _elm_lang$core$Maybe$Just( + A2( + _Bogdanp$elm_ast$Ast_Expression$Lambda, + params, + _Bogdanp$elm_ast$Ast_Expression$Record(varargs))); + } + case 'TypeTuple': + if (_p3._0.ctor === 'Type') { + break _v2_0; + } else { + if ((_p3._1._0.ctor === '::') && (_p3._1._0._1.ctor === '[]')) { + var _v3 = args, + _v4 = _elm_lang$core$Native_Utils.update( + _p2, + { + typeBody: _user$project$ExContext$SimpleType(_p3._1._0._0) + }); + args = _v3; + _p1 = _v4; + continue typeAliasConstructor; + } else { + var args = A2( + _elm_lang$core$List$map, + function (_p7) { + return _Bogdanp$elm_ast$Ast_Expression$Variable( + _elm_lang$core$List$singleton(_p7)); + }, + A2( + _elm_lang$core$List$map, + function (_p8) { + return A2( + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + 'arg', + _elm_lang$core$Basics$toString(_p8)); + }, + A2( + _elm_lang$core$List$range, + 1, + _elm_lang$core$List$length(_p3._1._0)))); + return _elm_lang$core$Maybe$Just( + A2( + _Bogdanp$elm_ast$Ast_Expression$Lambda, + args, + _Bogdanp$elm_ast$Ast_Expression$Tuple(args))); + } + } + case 'TypeVariable': + if (_p3._0.ctor === 'Type') { + break _v2_0; + } else { + return _elm_lang$core$Maybe$Just( + _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: _p3._1._0, + _1: {ctor: '[]'} + })); + } + default: + if (_p3._0.ctor === 'Type') { + break _v2_0; + } else { + break _v2_6; + } + } + } else { + break _v2_6; + } + } while(false); + return _elm_lang$core$Maybe$Nothing; + } while(false); + return _elm_lang$core$Maybe$Nothing; } - } else { - return A2( - _elm_lang$core$Maybe$withDefault, - {ctor: '[]'}, - A2( - _elm_lang$core$Maybe$map, - _user$project$ExVariable$extractNamesAssigned, - _elm_lang$core$List$head(_p7))); - } -}; -var _user$project$ExVariable$extractArguments = function (expression) { - var _p8 = _user$project$Helpers$applicationToList(expression); - if ((_p8.ctor === '::') && (_p8._1.ctor === '[]')) { - return {ctor: '[]'}; - } else { + }); +var _user$project$ExType$fullImportedType = F2( + function (c, name) { return A2( _elm_lang$core$Maybe$withDefault, - {ctor: '[]'}, + name, A2( _elm_lang$core$Maybe$map, - _elm_lang$core$List$concatMap(_user$project$ExVariable$extractNamesAssigned), - _elm_lang$core$List$tail(_p8))); - } -}; -var _user$project$ExVariable$isIn = F2( - function (_p10, _p9) { - var _p11 = _p10; - var _p12 = _p9; - var anyMembers = F2( - function (members, list) { - return A2( - _elm_lang$core$List$any, - A2(_elm_lang$core$Basics$flip, _elm_lang$core$List$member, list), - members); - }); - return A2( - anyMembers, - _user$project$ExVariable$extractNamesAssigned(_p11._0), - A2( - _user$project$ExVariable$withoutVars, - _user$project$ExVariable$extractArguments(_p12._0), - _user$project$ExVariable$extractVariablesUsed(_p12._1))); - }); -var _user$project$ExVariable$organizeLetInVariablesOrder = function (expressionList) { - var _p13 = A2( - _user$project$ExVariable$bubbleSelect, - F2( - function (a, b) { - return !A2(_user$project$ExVariable$isIn, a, b); - }), - expressionList); - if (_p13.ctor === 'Ok') { - return _p13._0; - } else { - var _p14 = _elm_lang$core$Native_Utils.crash( - 'ExVariable', - { - start: {line: 122, column: 21}, - end: {line: 122, column: 32} - })( - A2( - _elm_lang$core$Basics_ops['++'], - 'Couldn\'t find a solution to ', - _elm_lang$core$Basics$toString( - A2(_elm_lang$core$List$map, _elm_lang$core$Tuple$first, _p13._0)))); - return {ctor: '[]'}; - } -}; -var _user$project$ExVariable$groupByCrossDependency = function (expressionsList) { - return A2( - _elm_community$list_extra$List_Extra$groupWhile, - F2( - function (l, r) { - return A2(_user$project$ExVariable$isIn, l, r) && A2(_user$project$ExVariable$isIn, r, l); - }), - expressionsList); -}; -var _user$project$ExVariable$varOrNah = F2( - function (c, $var) { - return (A2(_elm_lang$core$Set$member, $var, c.variables) || c.inArgs) ? $var : A2(_elm_lang$core$Basics_ops['++'], $var, '()'); - }); -var _user$project$ExVariable$rememberVariables = F2( - function (list, c) { - var addToContext = F2( - function ($var, context) { - return _elm_lang$core$Native_Utils.update( - context, - { - variables: A2( - _elm_lang$core$Set$insert, - A2(_user$project$Helpers$toSnakeCase, true, $var), - context.variables) - }); - }); - return A3( - _elm_lang$core$List$foldl, - addToContext, - c, - A3( - _elm_lang$core$List$foldr, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - {ctor: '[]'}, - A2(_elm_lang$core$List$map, _user$project$ExVariable$extractVariablesUsed, list))); - }); - -var _user$project$ExFunction$getLambdaArgumentIndexes = function (t) { - return A2( - _elm_lang$core$List$filter, - function (_p0) { - var _p1 = _p0; - return _elm_lang$core$Native_Utils.cmp(_p1._1, 1) > 0; - }, - A2( - _elm_lang$core$List$map, - _elm_lang$core$Tuple$mapSecond( - function (_p2) { + function (a) { return A2( - F2( - function (x, y) { - return x + y; - }), - -1, - _elm_lang$core$List$length(_p2)); - }), - A2( - _elm_lang$core$List$indexedMap, - F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - }), - A2( - _elm_lang$core$List$map, - _user$project$Helpers$typeApplicationToList, + _elm_lang$core$Basics_ops['++'], + a, + A2(_elm_lang$core$Basics_ops['++'], '.', name)); + }, + A2(_elm_lang$core$Dict$get, 'name', c.importedTypes))); + }); +var _user$project$ExType$getExportedTypeNames = F3( + function (c, mod, subset) { + var _p9 = subset; + switch (_p9.ctor) { + case 'SubsetExport': + return A2( + _elm_lang$core$List$concatMap, + A2(_user$project$ExType$getExportedTypeNames, c, mod), + _p9._0); + case 'TypeExport': + return { + ctor: '::', + _0: _p9._0, + _1: {ctor: '[]'} + }; + case 'AllExport': + return A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, A2( - _elm_lang$core$Maybe$withDefault, - {ctor: '[]'}, - A2(_elm_lang$core$Maybe$map, _user$project$Helpers$typeApplicationToList, t)))))); -}; -var _user$project$ExFunction$privateOrPublic = F2( - function (context, name) { - return A2(_user$project$ExContext$isPrivate, context, name) ? 'p' : ''; + _elm_lang$core$Maybe$map, + function (mod) { + return A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Dict$keys(mod.aliases), + _elm_lang$core$Dict$keys(mod.types)); + }, + A2(_elm_lang$core$Dict$get, mod, c.commons.modules))); + default: + return {ctor: '[]'}; + } }); -var _user$project$ExFunction$functionCurry = F5( - function (c, elixirE, name, arity, lambdasAt) { - var _p3 = { - ctor: '_Tuple2', - _0: arity, - _1: A3(_user$project$ExContext$hasFlag, 'nocurry', name, c) - }; - _v1_0: - do { - if (_p3._1 === true) { - if (_p3._0 === 0) { - break _v1_0; - } else { - return ''; - } - } else { - if (_p3._0 === 0) { - break _v1_0; - } else { - var _p6 = _p3._0; - var lambdas = A2( - _elm_lang$core$List$map, - function (_p4) { - var _p5 = _p4; +var _user$project$ExType$elixirT = F3( + function (flatten, c, t) { + elixirT: + while (true) { + var _p10 = t; + switch (_p10.ctor) { + case 'TypeTuple': + if (_p10._0.ctor === '[]') { + return 'no_return'; + } else { + if (_p10._0._1.ctor === '[]') { + var _v7 = flatten, + _v8 = c, + _v9 = _p10._0._0; + flatten = _v7; + c = _v8; + t = _v9; + continue elixirT; + } else { return A2( _elm_lang$core$Basics_ops['++'], '{', A2( _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(_p5._0), A2( - _elm_lang$core$Basics_ops['++'], + _elm_lang$core$String$join, ', ', A2( - _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(_p5._1), - '}')))); - }, - lambdasAt); - var p = A2(_user$project$ExFunction$privateOrPublic, c, name); - var resolvedName = _user$project$Helpers$isCustomOperator(name) ? _user$project$Helpers$translateOperator(name) : A2(_user$project$Helpers$toSnakeCase, true, name); - return (_elm_lang$core$Native_Utils.eq( - lambdas, - {ctor: '[]'}) || _elm_lang$core$Native_Utils.eq(p, 'p')) ? A2( - _elm_lang$core$String$join, - '', - { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'curry', - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: resolvedName, - _1: { - ctor: '::', - _0: '/', - _1: { - ctor: '::', - _0: _elm_lang$core$Basics$toString(_p6), - _1: {ctor: '[]'} - } - } - } - } - } - }) : A2( - _elm_lang$core$String$join, - '', - { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'curry', - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: resolvedName, - _1: { - ctor: '::', - _0: '/', - _1: { - ctor: '::', - _0: _elm_lang$core$Basics$toString(_p6), - _1: { - ctor: '::', - _0: ', lambdas: [', - _1: { - ctor: '::', - _0: A2(_elm_lang$core$String$join, ', ', lambdas), - _1: { - ctor: '::', - _0: ']', - _1: {ctor: '[]'} - } - } - } - } - } - } - } - } - }); - } - } - } while(false); - return ''; - }); -var _user$project$ExFunction$genElixirFunc = F6( - function (c, elixirE, name, args, missingArgs, body) { - var _p7 = { - ctor: '_Tuple2', - _0: _user$project$Helpers$operatorType(name), - _1: args - }; - switch (_p7._0.ctor) { - case 'Custom': - return A2( - _elm_lang$core$String$join, - '', - { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'def', - _1: { - ctor: '::', - _0: A2(_user$project$ExFunction$privateOrPublic, c, name), - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: _user$project$Helpers$translateOperator(name), - _1: { - ctor: '::', - _0: '(', - _1: { - ctor: '::', - _0: A2( - _elm_lang$core$String$join, - ', ', - A3( - _elm_lang$core$Basics$flip, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - _user$project$Helpers$generateArguments(missingArgs), - A2( - _elm_lang$core$List$map, - elixirE( - A2(_user$project$ExVariable$rememberVariables, args, c)), - args))), - _1: { - ctor: '::', - _0: ') do', - _1: { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent + 1), - _1: { - ctor: '::', - _0: A2( - elixirE, - A2( - _user$project$ExVariable$rememberVariables, - args, - _user$project$ExContext$indent(c)), - body), - _1: { - ctor: '::', - _0: A2( - _elm_lang$core$String$join, - '', - A2( - _elm_lang$core$List$map, - function (a) { - return A2( - _elm_lang$core$Basics_ops['++'], - '.(', - A2(_elm_lang$core$Basics_ops['++'], a, ')')); - }, - _user$project$Helpers$generateArguments(missingArgs))), - _1: { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'end', - _1: {ctor: '[]'} - } - } - } - } - } - } - } - } - } - } - } + _elm_lang$core$List$map, + A2(_user$project$ExType$elixirT, flatten, c), + _p10._0)), + '}')); } - }); - case 'Builtin': - if (((_p7._1.ctor === '::') && (_p7._1._1.ctor === '::')) && (_p7._1._1._1.ctor === '[]')) { - var _p9 = _p7._1._1._0; - var _p8 = _p7._1._0; - return A2( - _elm_lang$core$String$join, + } + case 'TypeVariable': + if (_p10._0 === 'number') { + return 'number'; + } else { + var _p12 = _p10._0; + var _p11 = _elm_lang$core$String$uncons(_p12); + if (((_p11.ctor === 'Just') && (_p11._0.ctor === '_Tuple2')) && (_p11._0._0.valueOf() === '@')) { + return A2(_user$project$Helpers$toSnakeCase, true, _p11._0._1); + } else { + return c.inTypeDefiniton ? _p12 : 'any'; + } + } + case 'TypeConstructor': + var _p13 = A2(_user$project$Helpers$moduleAccess, c.mod, _p10._0); + var mod = _p13._0; + var last = _p13._1; + var modulePath = _elm_lang$core$Native_Utils.eq(mod, c.mod) ? A2( + _elm_lang$core$Maybe$withDefault, '', - { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'def', - _1: { - ctor: '::', - _0: A2(_user$project$ExFunction$privateOrPublic, c, name), - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: A2( - elixirE, + A2( + _elm_lang$core$Maybe$map, + function (a) { + return A2(_elm_lang$core$Basics_ops['++'], a, '.'); + }, + A2(_elm_lang$core$Dict$get, last, c.importedTypes))) : A2(_elm_lang$core$Basics_ops['++'], mod, '.'); + return A2( + _elm_lang$core$Basics_ops['++'], + modulePath, + A4(_user$project$ExType$elixirType, flatten, c, last, _p10._1)); + case 'TypeRecord': + return A2( + _elm_lang$core$Basics_ops['++'], + '%{', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 1), + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + A2( + _elm_lang$core$Basics_ops['++'], + ',', + _user$project$Helpers$ind(c.indent + 1)), + A2( + _elm_lang$core$List$map, + function (_p14) { + var _p15 = _p14; + return A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, false, _p15._0), A2( - _user$project$ExVariable$rememberVariables, - { - ctor: '::', - _0: _p8, - _1: {ctor: '[]'} - }, - c), - _p8), - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: _user$project$Helpers$translateOperator(name), - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: A2( - elixirE, - A2( - _user$project$ExVariable$rememberVariables, - { - ctor: '::', - _0: _p9, - _1: {ctor: '[]'} - }, - c), - _p9), - _1: { - ctor: '::', - _0: ' do', - _1: { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent + 1), - _1: { - ctor: '::', - _0: A2( - elixirE, - A2( - _user$project$ExVariable$rememberVariables, - args, - _user$project$ExContext$indent(c)), - body), - _1: { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'end', - _1: {ctor: '[]'} - } - } - } - } - } - } - } - } - } - } - } - } - } - }); - } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExFunction', - { - start: {line: 113, column: 5}, - end: {line: 195, column: 38} - }, - _p7)( + _elm_lang$core$Basics_ops['++'], + ': ', + A3( + _user$project$ExType$elixirT, + flatten, + _user$project$ExContext$indent(c), + _p15._1))); + }, + _p10._0)), + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + '}')))); + case 'TypeRecordConstructor': + return A2( + _elm_lang$core$Basics_ops['++'], + '%{', A2( _elm_lang$core$Basics_ops['++'], - 'operator ', + _user$project$Helpers$ind(c.indent + 1), A2( _elm_lang$core$Basics_ops['++'], - name, + A2( + _elm_lang$core$String$join, + A2( + _elm_lang$core$Basics_ops['++'], + ', ', + _user$project$Helpers$ind(c.indent + 1)), + A3( + _user$project$ExType$typeRecordFields, + _user$project$ExContext$indent(c), + flatten, + _p10)), A2( _elm_lang$core$Basics_ops['++'], - ' has to have 2 arguments but has ', - _elm_lang$core$Basics$toString(args))))); - } - default: - var missing = _user$project$Helpers$generateArguments(missingArgs); - var wrapIfMiss = function (s) { - return (_elm_lang$core$Native_Utils.cmp( - _elm_lang$core$List$length(missing), - 0) > 0) ? s : ''; - }; - var missingVarargs = A2( - _elm_lang$core$List$map, - function (_p11) { - return _Bogdanp$elm_ast$Ast_Expression$Variable( - _elm_lang$core$List$singleton(_p11)); - }, - missing); - return A2( - _elm_lang$core$String$join, - '', - { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'def', - _1: { - ctor: '::', - _0: A2(_user$project$ExFunction$privateOrPublic, c, name), - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: A2(_user$project$Helpers$toSnakeCase, true, name), - _1: { - ctor: '::', - _0: '(', - _1: { - ctor: '::', - _0: A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - elixirE( - _user$project$ExContext$inArgs(c)), - A2(_elm_lang$core$Basics_ops['++'], args, missingVarargs))), - _1: { - ctor: '::', - _0: ') do', - _1: { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent + 1), - _1: { - ctor: '::', - _0: wrapIfMiss('('), - _1: { - ctor: '::', - _0: A2( - elixirE, - A2( - _user$project$ExVariable$rememberVariables, - A2(_elm_lang$core$Basics_ops['++'], args, missingVarargs), - _user$project$ExContext$indent(c)), - body), - _1: { - ctor: '::', - _0: wrapIfMiss(')'), - _1: { - ctor: '::', - _0: A2( - _elm_lang$core$String$join, - '', - A2( - _elm_lang$core$List$map, - function (a) { - return A2( - _elm_lang$core$Basics_ops['++'], - '.(', - A2(_elm_lang$core$Basics_ops['++'], a, ')')); - }, - missing)), - _1: { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'end', - _1: {ctor: '[]'} - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }); + _user$project$Helpers$ind(c.indent), + '}')))); + default: + var _p19 = _p10._1; + var _p18 = _p10._0; + return flatten ? function (_p16) { + var _p17 = _p16; + return A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + A2( + _elm_lang$core$List$map, + A2( + _user$project$ExType$elixirT, + flatten, + _user$project$ExContext$indent(c)), + {ctor: '::', _0: _p18, _1: _p17._1})), + A2( + _elm_lang$core$Basics_ops['++'], + ' -> ', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$Maybe$withDefault, + '', + A2( + _elm_lang$core$Maybe$map, + A2(_user$project$ExType$elixirT, flatten, c), + _p17._0)), + ')')))); + }( + _user$project$Helpers$lastAndRest( + _user$project$Helpers$typeApplicationToList(_p19))) : A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A3(_user$project$ExType$elixirT, flatten, c, _p18), + A2( + _elm_lang$core$Basics_ops['++'], + ' -> ', + A2( + _elm_lang$core$Basics_ops['++'], + A3(_user$project$ExType$elixirT, flatten, c, _p19), + ')')))); + } } }); -var _user$project$ExFunction$genOverloadedFunctionDefinition = F6( - function (c, elixirE, name, args, body, expressions) { - var pairAsArgs = function (asArgs) { - return A3( - _elm_lang$core$List$map2, - _elm_lang$core$Basics$flip( - _Bogdanp$elm_ast$Ast_Expression$BinOp( - _Bogdanp$elm_ast$Ast_Expression$Variable( - { - ctor: '::', - _0: 'as', - _1: {ctor: '[]'} - }))), - args, - asArgs); - }; - var typeDef = A2( - _elm_lang$core$Maybe$andThen, - function (_p12) { - return A2( - _elm_lang$core$Dict$get, - name, - function (_) { - return _.definitions; - }(_p12)); - }, - A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)); - var arity = A2( - _elm_lang$core$Maybe$withDefault, - 0, - A2( - _elm_lang$core$Maybe$map, - function (_) { - return _.arity; - }, - typeDef)); - var caseBranch = function (_p13) { - var _p14 = _p13; - var _p18 = _p14._1; - var _p17 = _p14._0; - var _p15 = _p17; - if (_p15.ctor === 'Tuple') { - var _p16 = _p15._0; - return A6( - _user$project$ExFunction$genElixirFunc, - c, - elixirE, - name, - pairAsArgs(_p16), - arity - _elm_lang$core$List$length( - pairAsArgs(_p16)), - _p18); +var _user$project$ExType$elixirType = F4( + function (flatten, c, name, args) { + var _p20 = {ctor: '_Tuple2', _0: name, _1: args}; + _v13_13: + do { + if (_p20._1.ctor === '::') { + if (_p20._1._1.ctor === '[]') { + switch (_p20._0) { + case 'List': + return A2( + _elm_lang$core$Basics_ops['++'], + 'list(', + A2( + _elm_lang$core$Basics_ops['++'], + A3(_user$project$ExType$elixirT, flatten, c, _p20._1._0), + ')')); + case 'Maybe': + return A2( + _elm_lang$core$Basics_ops['++'], + '{', + A2( + _elm_lang$core$Basics_ops['++'], + A3(_user$project$ExType$elixirT, flatten, c, _p20._1._0), + '} | nil')); + case 'Just': + return A3(_user$project$ExType$elixirT, flatten, c, _p20._1._0); + case 'Err': + return A2( + _elm_lang$core$Basics_ops['++'], + '{:error, ', + A2( + _elm_lang$core$Basics_ops['++'], + A3(_user$project$ExType$elixirT, flatten, c, _p20._1._0), + '}')); + case 'Ok': + var _p21 = _p20._1._0; + return _elm_lang$core$Native_Utils.eq( + _p21, + _Bogdanp$elm_ast$Ast_Statement$TypeTuple( + {ctor: '[]'})) ? 'ok' : A2( + _elm_lang$core$Basics_ops['++'], + '{:ok,', + A2( + _elm_lang$core$Basics_ops['++'], + A3(_user$project$ExType$elixirT, flatten, c, _p21), + '}')); + default: + break _v13_13; + } + } else { + break _v13_13; + } } else { - return A6( - _user$project$ExFunction$genElixirFunc, - c, - elixirE, - name, - pairAsArgs( - { - ctor: '::', - _0: _p17, - _1: {ctor: '[]'} - }), - arity - 1, - _p18); + switch (_p20._0) { + case 'String': + return 'String.t'; + case 'Char': + return 'integer'; + case 'Bool': + return 'boolean'; + case 'Int': + return 'integer'; + case 'Pid': + return 'pid'; + case 'Float': + return 'float'; + case 'Nothing': + return 'nil'; + default: + return A2(_user$project$Helpers$toSnakeCase, true, _p20._0); + } } - }; - var lambdasAt = _user$project$ExFunction$getLambdaArgumentIndexes( - A2( - _elm_lang$core$Maybe$map, - function (_) { - return _.def; - }, - typeDef)); - return A3(_user$project$ExContext$hasFlag, 'nodef', name, c) ? A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt) : A2( + } while(false); + return A2( _elm_lang$core$Basics_ops['++'], - A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt), - A3( - _elm_lang$core$Basics$flip, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - '\n', - A3( - _elm_lang$core$List$foldr, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - '', - A2(_elm_lang$core$List$map, caseBranch, expressions)))); + A2(_user$project$Helpers$toSnakeCase, true, _p20._0), + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + A2( + _elm_lang$core$List$map, + A2(_user$project$ExType$elixirT, flatten, c), + _p20._1)), + ')'))); }); -var _user$project$ExFunction$genFunctionDefinition = F5( - function (c, elixirE, name, args, body) { - var typeDef = A2( - _elm_lang$core$Maybe$andThen, - function (_p19) { +var _user$project$ExType$typeRecordFields = F3( + function (c, flatten, t) { + typeRecordFields: + while (true) { + var keyValuePair = function (_p22) { + var _p23 = _p22; return A2( - _elm_lang$core$Dict$get, - name, - function (_) { - return _.definitions; - }(_p19)); - }, - A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)); - var arity = A2( - _elm_lang$core$Maybe$withDefault, - 0, - A2( - _elm_lang$core$Maybe$map, - function (_) { - return _.arity; - }, - typeDef)); - var lambdasAt = _user$project$ExFunction$getLambdaArgumentIndexes( - A2( - _elm_lang$core$Maybe$map, - function (_) { - return _.def; - }, - typeDef)); - return A3(_user$project$ExContext$hasFlag, 'nodef', name, c) ? A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt) : A2( + _elm_lang$core$Basics_ops['++'], + _p23._0, + A2( + _elm_lang$core$Basics_ops['++'], + ': ', + A3(_user$project$ExType$elixirT, flatten, c, _p23._1))); + }; + var _p24 = t; + _v15_6: + do { + switch (_p24.ctor) { + case 'TypeRecordConstructor': + switch (_p24._0.ctor) { + case 'TypeConstructor': + if ((_p24._0._0.ctor === '::') && (_p24._0._0._1.ctor === '[]')) { + var inherited = A2( + _elm_lang$core$Maybe$map, + A2(_user$project$ExType$typeRecordFields, c, flatten), + A2( + _elm_lang$core$Maybe$map, + function (_p25) { + var _p26 = _p25; + return A3(_user$project$ExAlias$resolveTypeBody, c, _p26.typeBody, _p24._0._1); + }, + A3(_user$project$ExContext$getAlias, c.mod, _p24._0._0._0, c))); + return A2( + _elm_lang$core$Basics_ops['++'], + A2(_elm_lang$core$List$map, keyValuePair, _p24._1), + A2( + _elm_lang$core$Maybe$withDefault, + { + ctor: '::', + _0: '', + _1: {ctor: '[]'} + }, + inherited)); + } else { + break _v15_6; + } + case 'TypeRecord': + return A2( + _elm_lang$core$List$map, + keyValuePair, + A2(_elm_lang$core$Basics_ops['++'], _p24._1, _p24._0._0)); + case 'TypeVariable': + return A2(_elm_lang$core$List$map, keyValuePair, _p24._1); + case 'TypeTuple': + if ((_p24._0._0.ctor === '::') && (_p24._0._0._1.ctor === '[]')) { + var _v17 = c, + _v18 = flatten, + _v19 = A2(_Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor, _p24._0._0._0, _p24._1); + c = _v17; + flatten = _v18; + t = _v19; + continue typeRecordFields; + } else { + break _v15_6; + } + case 'TypeRecordConstructor': + return A2( + _elm_lang$core$Basics_ops['++'], + A2(_elm_lang$core$List$map, keyValuePair, _p24._1), + A3(_user$project$ExType$typeRecordFields, c, flatten, _p24._0)); + default: + break _v15_6; + } + case 'TypeRecord': + return A2(_elm_lang$core$List$map, keyValuePair, _p24._0); + default: + break _v15_6; + } + } while(false); + return A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + 'Wrong type record constructor ', + _elm_lang$core$Basics$toString(_p24))); + } + }); +var _user$project$ExType$elixirTFlat = _user$project$ExType$elixirT(true); +var _user$project$ExType$elixirTNoFlat = _user$project$ExType$elixirT(false); +var _user$project$ExType$typespec0 = F2( + function (c, t) { + return A2( _elm_lang$core$Basics_ops['++'], - A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt), - A2( + '() :: ', + A2(_user$project$ExType$elixirTNoFlat, c, t)); + }); +var _user$project$ExType$typespec = F2( + function (c, t) { + var _p27 = _user$project$Helpers$lastAndRest( + _user$project$Helpers$typeApplicationToList(t)); + if (_p27._0.ctor === 'Just') { + return A2( _elm_lang$core$Basics_ops['++'], - A6( - _user$project$ExFunction$genElixirFunc, - c, - elixirE, - name, - args, - arity - _elm_lang$core$List$length(args), - body), - '\n')); + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + A2( + _elm_lang$core$List$map, + _user$project$ExType$elixirTNoFlat(c), + _p27._1)), + A2( + _elm_lang$core$Basics_ops['++'], + ') :: ', + A2(_user$project$ExType$elixirTNoFlat, c, _p27._0._0)))); + } else { + return A2(_user$project$ExContext$crash, c, 'impossible'); + } }); - -var _user$project$ExFfi$resolveFfi = F3( - function (c, elixirE, ffi) { - var combineComas = function (args) { +var _user$project$ExType$uniontype = F2( + function (c, t) { + var _p28 = t; + if (((_p28.ctor === 'TypeConstructor') && (_p28._0.ctor === '::')) && (_p28._0._1.ctor === '[]')) { + if (_p28._1.ctor === '[]') { + return _user$project$Helpers$atomize(_p28._0._0); + } else { + return A2( + _elm_lang$core$Basics_ops['++'], + '{', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$atomize(_p28._0._0), + A2( + _elm_lang$core$Basics_ops['++'], + ', ', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + A2( + _elm_lang$core$List$map, + _user$project$ExType$elixirTNoFlat(c), + _p28._1)), + '}')))); + } + } else { return A2( - _elm_lang$core$String$join, - ',', + _user$project$ExContext$crash, + c, A2( - _elm_lang$core$List$map, - elixirE(c), - args)); - }; - var _p0 = ffi; - _v0_7: - do { - switch (_p0.ctor) { - case 'TryFfi': - if ((_p0._0.ctor === 'String') && (_p0._1.ctor === 'String')) { - if (_p0._2.ctor === 'Tuple') { + _elm_lang$core$Basics_ops['++'], + 'I am looking for union type constructor. But got ', + _elm_lang$core$Basics$toString(_p28))); + } + }); +var _user$project$ExType$aliasOr = F4( + function (c, name, args, $default) { + return A2( + _elm_lang$core$Maybe$withDefault, + $default, + _elm_lang$core$Maybe$map( + function (_p29) { + var _p30 = _p29; + var _p33 = _p30.typeBody; + var _p32 = _p30.parentModule; + if (_elm_lang$core$Native_Utils.eq(_p32, c.mod)) { + return A2( + _user$project$ExType$elixirTNoFlat, + c, + A3(_user$project$ExAlias$resolveTypeBody, c, _p33, args)); + } else { + var _p31 = _p30.aliasType; + if (_p31.ctor === 'Type') { return A2( _elm_lang$core$Basics_ops['++'], - 'try_catch fn _ -> ', + _p32, A2( _elm_lang$core$Basics_ops['++'], - _p0._0._0, + '.', A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$Basics_ops['++'], - _p0._1._0, - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - combineComas(_p0._2._0), - A2(_elm_lang$core$Basics_ops['++'], ')', ' end'))))))); + _user$project$ExType$elixirTNoFlat, + c, + A3(_user$project$ExAlias$resolveTypeBody, c, _p33, args)))); } else { return A2( + _user$project$ExType$elixirTNoFlat, + _elm_lang$core$Native_Utils.update( + c, + {mod: _p32}), + A3(_user$project$ExAlias$resolveTypeBody, c, _p33, args)); + } + } + })( + A3(_user$project$ExContext$getAlias, c.mod, name, c))); + }); + +var _user$project$ExOperator$flattenPipes = function (e) { + var _p0 = e; + if (((((_p0.ctor === 'BinOp') && (_p0._0.ctor === 'Variable')) && (_p0._0._0.ctor === '::')) && (_p0._0._0._0 === '|>')) && (_p0._0._0._1.ctor === '[]')) { + if (((((_p0._2.ctor === 'BinOp') && (_p0._2._0.ctor === 'Variable')) && (_p0._2._0._0.ctor === '::')) && (_p0._2._0._0._0 === '|>')) && (_p0._2._0._0._1.ctor === '[]')) { + return A2( + _elm_lang$core$Basics_ops['++'], + { + ctor: '::', + _0: _p0._1, + _1: {ctor: '[]'} + }, + _user$project$ExOperator$flattenPipes(_p0._2)); + } else { + return A2( + _elm_lang$core$Basics_ops['++'], + { + ctor: '::', + _0: _p0._1, + _1: {ctor: '[]'} + }, + { + ctor: '::', + _0: _p0._2, + _1: {ctor: '[]'} + }); + } + } else { + return { + ctor: '::', + _0: _p0, + _1: {ctor: '[]'} + }; + } +}; +var _user$project$ExOperator$elixirBinop = F5( + function (c, elixirE, op, l, r) { + elixirBinop: + while (true) { + var _p1 = op; + switch (_p1) { + case '//': + return A2( + _elm_lang$core$Basics_ops['++'], + 'div(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, l), + A2( _elm_lang$core$Basics_ops['++'], - 'try_catch fn _ -> ', + ', ', A2( _elm_lang$core$Basics_ops['++'], - _p0._0._0, - A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$Basics_ops['++'], - _p0._1._0, - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, _p0._2), - A2(_elm_lang$core$Basics_ops['++'], ')', ' end'))))))); - } - } else { - break _v0_7; - } - case 'Ffi': - if ((_p0._0.ctor === 'String') && (_p0._1.ctor === 'String')) { - if (_p0._2.ctor === 'Tuple') { - return A2( + A2(elixirE, c, r), + ')')))); + case '%': + return A2( + _elm_lang$core$Basics_ops['++'], + 'rem(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, l), + A2( _elm_lang$core$Basics_ops['++'], - _p0._0._0, + ', ', A2( _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$Basics_ops['++'], - _p0._1._0, - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - combineComas(_p0._2._0), - ')'))))); - } else { - return A2( + A2(elixirE, c, r), + ')')))); + case '^': + return A2( + _elm_lang$core$Basics_ops['++'], + ':math.pow(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, l), + A2( _elm_lang$core$Basics_ops['++'], - _p0._0._0, + ', ', A2( _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$Basics_ops['++'], - _p0._1._0, - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, _p0._2), - ')'))))); - } - } else { - break _v0_7; - } - case 'Lffi': - if (_p0._0.ctor === 'String') { - if (_p0._1.ctor === 'Tuple') { - return A2( + A2(elixirE, c, r), + ')')))); + case '::': + return A2( + _elm_lang$core$Basics_ops['++'], + '[', + A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, l), + A2( _elm_lang$core$Basics_ops['++'], - _p0._0._0, + ' | ', A2( _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - combineComas(_p0._1._0), - ')'))); - } else { - return A2( + A2(elixirE, c, r), + ']')))); + case '<<': + var _v2 = c, + _v3 = elixirE, + _v4 = '>>', + _v5 = r, + _v6 = l; + c = _v2; + elixirE = _v3; + op = _v4; + l = _v5; + r = _v6; + continue elixirBinop; + case '<|': + if (_elm_lang$core$Native_Utils.eq( + l, + _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: 'Do', + _1: {ctor: '[]'} + }))) { + return A2( + _elm_lang$core$Basics_ops['++'], + 'quote do ', + A2( _elm_lang$core$Basics_ops['++'], - _p0._0._0, - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, _p0._1), - ')'))); - } + A2(elixirE, c, r), + ' end')); } else { - break _v0_7; + var _v7 = c, + _v8 = elixirE, + _v9 = '|>', + _v10 = r, + _v11 = l; + c = _v7; + elixirE = _v8; + op = _v9; + l = _v10; + r = _v11; + continue elixirBinop; } - default: - var args = _user$project$Helpers$generateArguments(_p0._0); + case '|>': return A2( _elm_lang$core$Basics_ops['++'], - 'fn (', + '(', A2( _elm_lang$core$Basics_ops['++'], - A2(_elm_lang$core$String$join, ',', args), + A2(elixirE, c, l), A2( _elm_lang$core$Basics_ops['++'], - ') -> ', A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, _p0._1), + _elm_lang$core$String$join, + '', A2( - _elm_lang$core$Basics_ops['++'], + _elm_lang$core$List$map, A2( - _elm_lang$core$String$join, - '', + _elm_lang$core$Basics$flip, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + ').()'), + A2( + _elm_lang$core$List$map, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + })( + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + '|> (')), A2( _elm_lang$core$List$map, - function (a) { - return A2( - _elm_lang$core$Basics_ops['++'], - '.(', - A2(_elm_lang$core$Basics_ops['++'], a, ')')); - }, - args)), - ' end'))))); - } - } while(false); - return _elm_lang$core$Native_Utils.crashCase( - 'ExFfi', - { - start: {line: 161, column: 9}, - end: {line: 214, column: 45} - }, - _p0)('Wrong ffi call'); - }); -var _user$project$ExFfi$Flambda = F2( - function (a, b) { - return {ctor: 'Flambda', _0: a, _1: b}; - }); -var _user$project$ExFfi$uncurrify = F3( - function (c, elixirE, argTypes) { - var arity = _elm_lang$core$List$length(argTypes) - 1; - var indexes = A2(_elm_lang$core$List$range, 1, arity); - return A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - function (_p2) { - var _p3 = _p2; - var _p6 = _p3._0; - var _p4 = _p3._1; - if (_p4.ctor === '[]') { - return _elm_lang$core$Native_Utils.crashCase( - 'ExFfi', - { - start: {line: 126, column: 21}, - end: {line: 141, column: 71} - }, - _p4)('Impossible'); - } else { - if (_p4._1.ctor === '[]') { + elixirE(c), + _user$project$ExOperator$flattenPipes(r))))), + ')'))); + case 'as': + return A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, l), + A2( + _elm_lang$core$Basics_ops['++'], + ' = ', + A2(elixirE, c, r))); + default: + var _p3 = _p1; + var _p2 = _user$project$Helpers$operatorType(_p3); + switch (_p2.ctor) { + case 'Builtin': return A2( - _elm_lang$core$Basics_ops['++'], - 'a', - _elm_lang$core$Basics$toString(_p6)); - } else { - var makeFlambda = _user$project$ExFfi$Flambda( - _elm_lang$core$List$length(_p4) - 1); - var $var = _Bogdanp$elm_ast$Ast_Expression$Variable( + _elm_lang$core$String$join, + '', { ctor: '::', - _0: A2( - _elm_lang$core$Basics_ops['++'], - 'a', - _elm_lang$core$Basics$toString(_p6)), - _1: {ctor: '[]'} - }); - return A3( - _user$project$ExFfi$resolveFfi, - c, - elixirE, - makeFlambda($var)); - } - } - }, - A3( - _elm_lang$core$List$map2, - F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - }), - indexes, - argTypes))); - }); -var _user$project$ExFfi$generateFfi = F5( - function (c, elixirE, name, argTypes, e) { - var wrapAllInVar = _elm_lang$core$List$map( - function (_p7) { - return _Bogdanp$elm_ast$Ast_Expression$Variable( - _elm_lang$core$List$singleton(_p7)); - }); - var uncurryArguments = function (c) { - return A3(_user$project$ExFfi$uncurrify, c, elixirE, argTypes); - }; - var appList = _user$project$Helpers$applicationToList(e); - var typeDef = A2( - _elm_lang$core$Maybe$andThen, - function (_p8) { - return A2( - _elm_lang$core$Dict$get, - name, - function (_) { - return _.definitions; - }(_p8)); - }, - A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)); - var _p9 = { - ctor: '_Tuple2', - _0: typeDef, - _1: _user$project$Helpers$applicationToList(e) - }; - _v3_3: - do { - if (_p9.ctor === '_Tuple2') { - if (_p9._0.ctor === 'Nothing') { - return _elm_lang$core$Native_Utils.crashCase( - 'ExFfi', - { - start: {line: 44, column: 9}, - end: {line: 109, column: 51} - }, - _p9)('Ffi requires type definition'); - } else { - if (((((((((_p9._1.ctor === '::') && (_p9._1._0.ctor === 'Variable')) && (_p9._1._0._0.ctor === '::')) && (_p9._1._0._0._1.ctor === '[]')) && (_p9._1._1.ctor === '::')) && (_p9._1._1._0.ctor === 'String')) && (_p9._1._1._1.ctor === '::')) && (_p9._1._1._1._0.ctor === 'String')) && (_p9._1._1._1._1.ctor === '[]')) { - switch (_p9._1._0._0._0) { - case 'ffi': - var _p13 = _p9._1._1._0._0; - var _p12 = _p9._1._1._1._0._0; - var _p11 = _p9._0._0; - var $arguments = A2(_user$project$Helpers$generateArguments_, 'a', _p11.arity); - return A2( - _elm_lang$core$Basics_ops['++'], - A5( - _user$project$ExFunction$functionCurry, - c, - elixirE, - name, - _p11.arity, - {ctor: '[]'}), - A2( - _elm_lang$core$Basics_ops['++'], - A4( - _user$project$ExContext$onlyWithoutFlag, - c, - 'noverify', - name, - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - A2( - _elm_lang$core$Basics_ops['++'], - 'verify as: ', - A2( - _elm_lang$core$Basics_ops['++'], - _p13, - A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$Basics_ops['++'], - _p12, - A2( - _elm_lang$core$Basics_ops['++'], - '/', - _elm_lang$core$Basics$toString(_p11.arity)))))))), - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - A2( - _elm_lang$core$Basics_ops['++'], - 'def', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExFunction$privateOrPublic, c, name), - A2( - _elm_lang$core$Basics_ops['++'], - ' ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, name), - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_elm_lang$core$String$join, ', ', $arguments), - A2( - _elm_lang$core$Basics_ops['++'], - ')', - A2( - _elm_lang$core$Basics_ops['++'], - ', do: ', - A2( - _elm_lang$core$Basics_ops['++'], - _p13, - A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$Basics_ops['++'], - _p12, - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - uncurryArguments( - A2( - _user$project$ExVariable$rememberVariables, - wrapAllInVar($arguments), - c)), - ')')))))))))))))))); - case 'tryFfi': - var _p14 = _p9._0._0; - var $arguments = A2(_user$project$Helpers$generateArguments_, 'a', _p14.arity); - return A2( + _0: '(', + _1: { + ctor: '::', + _0: A2(elixirE, c, l), + _1: { + ctor: '::', + _0: ' ', + _1: { + ctor: '::', + _0: _user$project$Helpers$translateOperator(_p3), + _1: { + ctor: '::', + _0: ' ', + _1: { + ctor: '::', + _0: A2(elixirE, c, r), + _1: { + ctor: '::', + _0: ')', + _1: {ctor: '[]'} + } + } + } + } + } + } + }); + case 'Custom': + return A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$translateOperator(_p3), + A2( _elm_lang$core$Basics_ops['++'], - A5( - _user$project$ExFunction$functionCurry, - c, - elixirE, - name, - _p14.arity, - {ctor: '[]'}), + '(', A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), + A2(elixirE, c, l), A2( _elm_lang$core$Basics_ops['++'], - 'def', + ', ', A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExFunction$privateOrPublic, c, name), - A2( - _elm_lang$core$Basics_ops['++'], - ' ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, name), - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ', ', - A2(_user$project$Helpers$generateArguments_, 'a', _p14.arity)), - A2( - _elm_lang$core$Basics_ops['++'], - ')', - A2( - _elm_lang$core$Basics_ops['++'], - ' do ', - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 1), - A2( - _elm_lang$core$Basics_ops['++'], - 'try_catch fn -> ', - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 2), - A2( - _elm_lang$core$Basics_ops['++'], - _p9._1._1._0._0, - A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$Basics_ops['++'], - _p9._1._1._1._0._0, - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - uncurryArguments( - A2( - _user$project$ExVariable$rememberVariables, - wrapAllInVar($arguments), - c)), - A2( - _elm_lang$core$Basics_ops['++'], - ')', - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 1), - A2( - _elm_lang$core$Basics_ops['++'], - 'end', - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - 'end')))))))))))))))))))))); - default: - break _v3_3; - } - } else { - break _v3_3; + A2(elixirE, c, r), + ')'))))); + default: + return A2( + _user$project$ExContext$crash, + c, + A2(_elm_lang$core$Basics_ops['++'], 'Illegal operator ', _p3)); } - } - } else { - break _v3_3; } - } while(false); - return _elm_lang$core$Native_Utils.crashCase( - 'ExFfi', - { - start: {line: 44, column: 9}, - end: {line: 109, column: 51} - }, - _p9)('Wrong ffi definition'); + } }); -var _user$project$ExFfi$TryFfi = F3( - function (a, b, c) { - return {ctor: 'TryFfi', _0: a, _1: b, _2: c}; + +var _user$project$ExVariable$bubbleSelect = F2( + function (f, list) { + var findNext = F3( + function (discarded, list, acc) { + findNext: + while (true) { + var _p0 = list; + if (_p0.ctor === '[]') { + return _elm_lang$core$Native_Utils.eq( + discarded, + {ctor: '[]'}) ? _elm_lang$core$Result$Ok( + _elm_lang$core$List$reverse(acc)) : _elm_lang$core$Result$Err(discarded); + } else { + var _p2 = _p0._1; + var _p1 = _p0._0; + var newlist = A2(_elm_lang$core$Basics_ops['++'], discarded, _p2); + if (A2( + _elm_lang$core$List$all, + A2(_elm_lang$core$Basics$flip, f, _p1), + newlist)) { + var _v1 = {ctor: '[]'}, + _v2 = newlist, + _v3 = {ctor: '::', _0: _p1, _1: acc}; + discarded = _v1; + list = _v2; + acc = _v3; + continue findNext; + } else { + var _v4 = {ctor: '::', _0: _p1, _1: discarded}, + _v5 = _p2, + _v6 = acc; + discarded = _v4; + list = _v5; + acc = _v6; + continue findNext; + } + } + } + }); + var findIndex = F2( + function (discarded, list) { + return A2( + _elm_community$list_extra$List_Extra$break, + function (a) { + return A2( + _elm_lang$core$List$all, + f(a), + discarded); + }, + list); + }); + return A3( + findNext, + {ctor: '[]'}, + list, + {ctor: '[]'}); }); -var _user$project$ExFfi$Ffi = F3( - function (a, b, c) { - return {ctor: 'Ffi', _0: a, _1: b, _2: c}; +var _user$project$ExVariable$withoutVars = F2( + function (vars, right) { + return A2( + _elm_lang$core$List$filter, + function (_p3) { + return !A3(_elm_lang$core$Basics$flip, _elm_lang$core$List$member, vars, _p3); + }, + right); }); -var _user$project$ExFfi$Lffi = F2( - function (a, b) { - return {ctor: 'Lffi', _0: a, _1: b}; +var _user$project$ExVariable$extractName = F2( + function (c, expression) { + var _p4 = _user$project$Helpers$applicationToList(expression); + if ((_p4.ctor === '::') && (_p4._1.ctor === '[]')) { + if (((_p4._0.ctor === 'Variable') && (_p4._0._0.ctor === '::')) && (_p4._0._0._1.ctor === '[]')) { + return _p4._0._0._0; + } else { + return A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString(_p4._0), + ' is not a variable')); + } + } else { + return A2( + _elm_lang$core$Maybe$withDefault, + '', + A2( + _elm_lang$core$Maybe$map, + _user$project$ExVariable$extractName(c), + _elm_lang$core$List$head(_p4))); + } }); - -var _user$project$ExType$typeAliasConstructor = F2( - function (args, _p0) { - typeAliasConstructor: - while (true) { - var _p1 = _p0; - var _p2 = {ctor: '_Tuple2', _0: _p1.aliasType, _1: _p1.body}; - _v1_6: - do { - _v1_0: - do { - if (_p2.ctor === '_Tuple2') { - switch (_p2._1.ctor) { - case 'TypeConstructor': - if (_p2._0.ctor === 'Type') { - break _v1_0; - } else { - if ((_p2._1._0.ctor === '::') && (_p2._1._0._1.ctor === '[]')) { - return _elm_lang$core$Maybe$Nothing; - } else { - break _v1_6; - } - } - case 'TypeRecord': - if (_p2._0.ctor === 'Type') { - break _v1_0; - } else { - var _p5 = _p2._1._0; - var params = A2( - _elm_lang$core$List$map, - function (_p3) { - return _Bogdanp$elm_ast$Ast_Expression$Variable( - _elm_lang$core$List$singleton(_p3)); - }, - A2( - _elm_lang$core$List$map, - function (_p4) { - return A2( - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - 'arg', - _elm_lang$core$Basics$toString(_p4)); - }, - A2( - _elm_lang$core$List$range, - 1, - A2( - F2( - function (x, y) { - return x + y; - }), - 0 - _elm_lang$core$List$length(args), - _elm_lang$core$List$length(_p5))))); - var varargs = A2( - _elm_lang$core$List$map, - _elm_lang$core$Tuple$mapFirst(_elm_lang$core$Tuple$first), - A3( - _elm_lang$core$List$map2, - _elm_lang$core$Basics$flip( - F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - })), - A2(_elm_lang$core$Basics_ops['++'], args, params), - _p5)); - return _elm_lang$core$Maybe$Just( - A2( - _Bogdanp$elm_ast$Ast_Expression$Lambda, - params, - _Bogdanp$elm_ast$Ast_Expression$Record(varargs))); - } - case 'TypeTuple': - if (_p2._0.ctor === 'Type') { - break _v1_0; - } else { - if ((_p2._1._0.ctor === '::') && (_p2._1._0._1.ctor === '[]')) { - var _v2 = args, - _v3 = _elm_lang$core$Native_Utils.update( - _p1, +var _user$project$ExVariable$extractVariablesUsed = function (exp) { + var none = {ctor: '[]'}; + var one = function ($var) { + return { + ctor: '::', + _0: $var, + _1: {ctor: '[]'} + }; + }; + var many = function (vars) { + return A3( + _elm_lang$core$List$foldr, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + {ctor: '[]'}, + A2(_elm_lang$core$List$map, _user$project$ExVariable$extractVariablesUsed, vars)); + }; + var _p5 = exp; + _v8_12: + do { + _v8_8: + do { + switch (_p5.ctor) { + case 'Record': + return many( + A2(_elm_lang$core$List$map, _elm_lang$core$Tuple$second, _p5._0)); + case 'Tuple': + return many(_p5._0); + case 'Variable': + if ((_p5._0.ctor === '::') && (_p5._0._1.ctor === '[]')) { + return one(_p5._0._0); + } else { + break _v8_12; + } + case 'List': + return many(_p5._0); + case 'Application': + return many( + { + ctor: '::', + _0: _p5._0, + _1: { + ctor: '::', + _0: _p5._1, + _1: {ctor: '[]'} + } + }); + case 'BinOp': + if (((_p5._0.ctor === 'Variable') && (_p5._0._0.ctor === '::')) && (_p5._0._0._1.ctor === '[]')) { + switch (_p5._0._0._0) { + case '::': + return many( + { + ctor: '::', + _0: _p5._1, + _1: { + ctor: '::', + _0: _p5._2, + _1: {ctor: '[]'} + } + }); + case 'as': + if (_p5._2.ctor === 'Variable') { + if (_p5._1.ctor === 'Variable') { + return many( { - typeBody: _user$project$ExContext$SimpleType(_p2._1._0._0) + ctor: '::', + _0: _p5._1, + _1: { + ctor: '::', + _0: _p5._2, + _1: {ctor: '[]'} + } }); - args = _v2; - _p0 = _v3; - continue typeAliasConstructor; } else { - var args = A2( - _elm_lang$core$List$map, - function (_p6) { - return _Bogdanp$elm_ast$Ast_Expression$Variable( - _elm_lang$core$List$singleton(_p6)); - }, - A2( - _elm_lang$core$List$map, - function (_p7) { - return A2( - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - 'arg', - _elm_lang$core$Basics$toString(_p7)); - }, - A2( - _elm_lang$core$List$range, - 1, - _elm_lang$core$List$length(_p2._1._0)))); - return _elm_lang$core$Maybe$Just( - A2( - _Bogdanp$elm_ast$Ast_Expression$Lambda, - args, - _Bogdanp$elm_ast$Ast_Expression$Tuple(args))); + if ((_p5._2._0.ctor === '::') && (_p5._2._0._1.ctor === '[]')) { + return many( + { + ctor: '::', + _0: _p5._1, + _1: { + ctor: '::', + _0: _p5._2, + _1: {ctor: '[]'} + } + }); + } else { + break _v8_8; + } } - } - case 'TypeVariable': - if (_p2._0.ctor === 'Type') { - break _v1_0; } else { - return _elm_lang$core$Maybe$Just( - _Bogdanp$elm_ast$Ast_Expression$Variable( - { - ctor: '::', - _0: _p2._1._0, - _1: {ctor: '[]'} - })); + break _v8_8; } default: - if (_p2._0.ctor === 'Type') { - break _v1_0; - } else { - break _v1_6; - } + break _v8_8; } } else { - break _v1_6; + break _v8_8; + } + case 'Case': + return A2( + _user$project$ExVariable$withoutVars, + _user$project$ExVariable$extractVariablesUsed(_p5._0), + A2( + _elm_lang$core$List$concatMap, + _elm_lang$core$Basics$uncurry(_user$project$ExVariable$rightWithoutLeft), + _p5._1)); + case 'Let': + return A2( + _elm_lang$core$List$concatMap, + _elm_lang$core$Basics$uncurry(_user$project$ExVariable$rightWithoutLeft), + _p5._0); + case 'Lambda': + return A2( + _user$project$ExVariable$withoutVars, + A2(_elm_lang$core$List$concatMap, _user$project$ExVariable$extractVariablesUsed, _p5._0), + _user$project$ExVariable$extractVariablesUsed(_p5._1)); + default: + break _v8_12; + } + } while(false); + return many( + { + ctor: '::', + _0: _p5._1, + _1: { + ctor: '::', + _0: _p5._2, + _1: {ctor: '[]'} + } + }); + } while(false); + return none; +}; +var _user$project$ExVariable$rightWithoutLeft = F2( + function (left, right) { + return A2( + _user$project$ExVariable$withoutVars, + _user$project$ExVariable$extractVariablesUsed(left), + _user$project$ExVariable$extractVariablesUsed(right)); + }); +var _user$project$ExVariable$extractNamesAssigned = function (expression) { + var _p6 = _user$project$Helpers$applicationToList(expression); + if ((_p6.ctor === '::') && (_p6._1.ctor === '[]')) { + if (((_p6._0.ctor === 'Variable') && (_p6._0._0.ctor === '::')) && (_p6._0._0._1.ctor === '[]')) { + return { + ctor: '::', + _0: _p6._0._0._0, + _1: {ctor: '[]'} + }; + } else { + return _user$project$ExVariable$extractVariablesUsed(_p6._0); + } + } else { + return A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + A2( + _elm_lang$core$Maybe$map, + _user$project$ExVariable$extractNamesAssigned, + _elm_lang$core$List$head(_p6))); + } +}; +var _user$project$ExVariable$extractArguments = function (expression) { + var _p7 = _user$project$Helpers$applicationToList(expression); + if ((_p7.ctor === '::') && (_p7._1.ctor === '[]')) { + return {ctor: '[]'}; + } else { + return A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + A2( + _elm_lang$core$Maybe$map, + _elm_lang$core$List$concatMap(_user$project$ExVariable$extractNamesAssigned), + _elm_lang$core$List$tail(_p7))); + } +}; +var _user$project$ExVariable$isIn = F2( + function (_p9, _p8) { + var _p10 = _p9; + var _p11 = _p8; + var anyMembers = F2( + function (members, list) { + return A2( + _elm_lang$core$List$any, + A2(_elm_lang$core$Basics$flip, _elm_lang$core$List$member, list), + members); + }); + return A2( + anyMembers, + _user$project$ExVariable$extractNamesAssigned(_p10._0), + A2( + _user$project$ExVariable$withoutVars, + _user$project$ExVariable$extractArguments(_p11._0), + _user$project$ExVariable$extractVariablesUsed(_p11._1))); + }); +var _user$project$ExVariable$organizeLetInVariablesOrder = F2( + function (c, expressionList) { + var _p12 = A2( + _user$project$ExVariable$bubbleSelect, + F2( + function (a, b) { + return !A2(_user$project$ExVariable$isIn, a, b); + }), + expressionList); + if (_p12.ctor === 'Ok') { + return _p12._0; + } else { + var _p13 = A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + 'Couldn\'t find a solution to ', + _elm_lang$core$Basics$toString( + A2(_elm_lang$core$List$map, _elm_lang$core$Tuple$first, _p12._0)))); + return {ctor: '[]'}; + } + }); +var _user$project$ExVariable$groupByCrossDependency = function (expressionsList) { + return A2( + _elm_community$list_extra$List_Extra$groupWhile, + F2( + function (l, r) { + return A2(_user$project$ExVariable$isIn, l, r) && A2(_user$project$ExVariable$isIn, r, l); + }), + expressionsList); +}; +var _user$project$ExVariable$varOrNah = F2( + function (c, $var) { + return (A2(_elm_lang$core$Set$member, $var, c.variables) || c.inArgs) ? $var : (c.inMeta ? A2( + _elm_lang$core$Basics_ops['++'], + c.mod, + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2(_elm_lang$core$Basics_ops['++'], $var, '()'))) : A2(_elm_lang$core$Basics_ops['++'], $var, '()')); + }); +var _user$project$ExVariable$rememberVariables = F2( + function (list, c) { + var addToContext = F2( + function ($var, context) { + return _elm_lang$core$Native_Utils.update( + context, + { + variables: A2( + _elm_lang$core$Set$insert, + A2(_user$project$Helpers$toSnakeCase, true, $var), + context.variables) + }); + }); + return A3( + _elm_lang$core$List$foldl, + addToContext, + c, + A3( + _elm_lang$core$List$foldr, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + {ctor: '[]'}, + A2(_elm_lang$core$List$map, _user$project$ExVariable$extractVariablesUsed, list))); + }); + +var _user$project$ExSelector$Access = function (a) { + return {ctor: 'Access', _0: a}; +}; +var _user$project$ExSelector$getSelector = F2( + function (c, expression) { + var _p0 = expression; + if (_p0.ctor === 'AccessFunction') { + return _user$project$ExSelector$Access( + A2(_user$project$Helpers$toSnakeCase, true, _p0._0)); + } else { + return A2(_user$project$ExContext$crash, c, 'The only allowed selectors are: .field'); + } + }); +var _user$project$ExSelector$Update = {ctor: 'Update'}; +var _user$project$ExSelector$Put = {ctor: 'Put'}; +var _user$project$ExSelector$Get = {ctor: 'Get'}; +var _user$project$ExSelector$accessMacroType = function (string) { + var getType = function (x) { + return A3( + _elm_lang$core$List$foldl, + F2( + function (_p1, acc) { + var _p2 = _p1; + var _p3 = acc; + if (_p3.ctor === 'Nothing') { + return A2( + _elm_lang$core$Regex$contains, + _elm_lang$core$Regex$regex(_p2._0), + x) ? _elm_lang$core$Maybe$Just(_p2._1) : _elm_lang$core$Maybe$Nothing; + } else { + return _p3; + } + }), + _elm_lang$core$Maybe$Nothing, + { + ctor: '::', + _0: {ctor: '_Tuple2', _0: 'updateIn\\d?', _1: _user$project$ExSelector$Update}, + _1: { + ctor: '::', + _0: {ctor: '_Tuple2', _0: 'putIn\\d?', _1: _user$project$ExSelector$Put}, + _1: { + ctor: '::', + _0: {ctor: '_Tuple2', _0: 'getIn\\d?', _1: _user$project$ExSelector$Get}, + _1: {ctor: '[]'} } - } while(false); - return _elm_lang$core$Maybe$Nothing; - } while(false); - return _elm_lang$core$Maybe$Nothing; - } - }); -var _user$project$ExType$fullImportedType = F2( - function (c, name) { + } + }); + }; + var getArity = function (_p4) { return A2( - _elm_lang$core$Maybe$withDefault, - name, - A2( + _elm_lang$core$Result$withDefault, + 1, + _elm_lang$core$String$toInt( + A2(_elm_lang$core$String$filter, _elm_lang$core$Char$isDigit, _p4))); + }; + return A2( + _elm_lang$core$Maybe$map, + function (t) { + return { + ctor: '_Tuple2', + _0: t, + _1: getArity(string) + }; + }, + getType(string)); +}; +var _user$project$ExSelector$AccessMacro = F3( + function (a, b, c) { + return {ctor: 'AccessMacro', _0: a, _1: b, _2: c}; + }); +var _user$project$ExSelector$maybeAccessMacro = F3( + function (c, call, args) { + var accessMacroArgs = F2( + function (arity, args) { + var _p5 = A2( + _elm_lang$core$Basics$compare, + _elm_lang$core$List$length(args), + arity); + switch (_p5.ctor) { + case 'LT': + return A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + 'Access macros [updateIn/getIn/putIn] cannot be partially applied. Expecting ', + A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString(arity), + ' selector arguments.'))); + case 'EQ': + return { + ctor: '_Tuple2', + _0: A2( + _elm_lang$core$List$map, + _user$project$ExSelector$getSelector(c), + args), + _1: {ctor: '[]'} + }; + default: + return A2( + _elm_lang$core$Tuple$mapFirst, + _elm_lang$core$List$map( + _user$project$ExSelector$getSelector(c)), + A2(_elm_community$list_extra$List_Extra$splitAt, arity, args)); + } + }); + var _p6 = {ctor: '_Tuple2', _0: call, _1: args}; + if ((((_p6.ctor === '_Tuple2') && (_p6._0.ctor === 'Variable')) && (_p6._0._0.ctor === '::')) && (_p6._0._0._1.ctor === '[]')) { + return A2( _elm_lang$core$Maybe$map, - function (a) { - return A2( - _elm_lang$core$Basics_ops['++'], - a, - A2(_elm_lang$core$Basics_ops['++'], '.', name)); + function (_p7) { + var _p8 = _p7; + var _p10 = _p8._1; + var _p9 = A2(accessMacroArgs, _p10, _p6._1); + var selectors = _p9._0; + var rest = _p9._1; + return { + ctor: '_Tuple2', + _0: A3(_user$project$ExSelector$AccessMacro, _p8._0, _p10, selectors), + _1: rest + }; }, - A2(_elm_lang$core$Dict$get, 'name', c.importedTypes))); + _user$project$ExSelector$accessMacroType(_p6._0._0._0)); + } else { + return _elm_lang$core$Maybe$Nothing; + } }); -var _user$project$ExType$getExportedTypeNames = F3( - function (c, mod, subset) { - var _p8 = subset; - switch (_p8.ctor) { - case 'SubsetExport': - return A2( - _elm_lang$core$List$concatMap, - A2(_user$project$ExType$getExportedTypeNames, c, mod), - _p8._0); - case 'TypeExport': - return { - ctor: '::', - _0: _p8._0, - _1: {ctor: '[]'} - }; - case 'AllExport': - return A2( - _elm_lang$core$Maybe$withDefault, - {ctor: '[]'}, - A2( - _elm_lang$core$Maybe$map, - function (mod) { - return A2( - _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Dict$keys(mod.aliases), - _elm_lang$core$Dict$keys(mod.types)); - }, - A2(_elm_lang$core$Dict$get, mod, c.commons.modules))); + +var _user$project$ExExpression$isTuple = function (a) { + isTuple: + while (true) { + var _p0 = a; + switch (_p0.ctor) { + case 'Application': + var _v1 = _p0._0; + a = _v1; + continue isTuple; + case 'Variable': + if ((_p0._0.ctor === '::') && (_p0._0._1.ctor === '[]')) { + if (_p0._0._0 === '()') { + return true; + } else { + return _user$project$Helpers$isCapitilzed(_p0._0._0); + } + } else { + return function (_p1) { + var _p2 = _p1; + return _user$project$ExExpression$isTuple( + _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: _p2._1, + _1: {ctor: '[]'} + })); + }( + A2(_user$project$Helpers$moduleAccess, '', _p0._0)); + } default: - return {ctor: '[]'}; + return false; } - }); -var _user$project$ExType$elixirT = F3( - function (flatten, c, t) { - elixirT: - while (true) { - var _p9 = t; - switch (_p9.ctor) { - case 'TypeTuple': - if (_p9._0.ctor === '[]') { - return 'no_return'; + } +}; +var _user$project$ExExpression$filterTypeAlias = function (_p3) { + var _p4 = _p3; + var _p5 = _p4.aliasType; + if (_p5.ctor === 'TypeAlias') { + return _elm_lang$core$Maybe$Just(_p4); + } else { + return _elm_lang$core$Maybe$Nothing; + } +}; +var _user$project$ExExpression$isMacro = function (e) { + isMacro: + while (true) { + var _p6 = e; + _v5_2: + do { + switch (_p6.ctor) { + case 'Application': + var _v6 = _p6._0; + e = _v6; + continue isMacro; + case 'Variable': + if ((_p6._0.ctor === '::') && (_p6._0._1.ctor === '[]')) { + return A2( + _elm_lang$core$List$member, + _p6._0._0, + { + ctor: '::', + _0: 'tryFfi', + _1: { + ctor: '::', + _0: 'ffi', + _1: { + ctor: '::', + _0: 'lffi', + _1: { + ctor: '::', + _0: 'macro', + _1: { + ctor: '::', + _0: 'flambda', + _1: { + ctor: '::', + _0: 'updateIn', + _1: { + ctor: '::', + _0: 'updateIn2', + _1: { + ctor: '::', + _0: 'updateIn3', + _1: { + ctor: '::', + _0: 'updateIn4', + _1: { + ctor: '::', + _0: 'updateIn5', + _1: { + ctor: '::', + _0: 'putIn', + _1: { + ctor: '::', + _0: 'putIn', + _1: { + ctor: '::', + _0: 'putIn2', + _1: { + ctor: '::', + _0: 'putIn3', + _1: { + ctor: '::', + _0: 'putIn4', + _1: { + ctor: '::', + _0: 'putIn5', + _1: { + ctor: '::', + _0: 'getIn', + _1: { + ctor: '::', + _0: 'getIn2', + _1: { + ctor: '::', + _0: 'getIn3', + _1: { + ctor: '::', + _0: 'getIn4', + _1: { + ctor: '::', + _0: 'getIn5', + _1: {ctor: '[]'} + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }); } else { - if (_p9._0._1.ctor === '[]') { - var _v6 = flatten, - _v7 = c, - _v8 = _p9._0._0; - flatten = _v6; - c = _v7; - t = _v8; - continue elixirT; - } else { - return A2( + break _v5_2; + } + default: + break _v5_2; + } + } while(false); + return false; + } +}; +var _user$project$ExExpression$flattenTypeApplication = function (application) { + var _p7 = application; + if (_p7.ctor === 'Application') { + return (_user$project$ExExpression$isMacro(application) || _user$project$ExExpression$isTuple(application)) ? A2( + _elm_lang$core$Basics_ops['++'], + _user$project$ExExpression$flattenTypeApplication(_p7._0), + { + ctor: '::', + _0: _p7._1, + _1: {ctor: '[]'} + }) : { + ctor: '::', + _0: application, + _1: {ctor: '[]'} + }; + } else { + return { + ctor: '::', + _0: _p7, + _1: {ctor: '[]'} + }; + } +}; +var _user$project$ExExpression$elixirE = F2( + function (c, e) { + var _p8 = e; + _v8_7: + do { + switch (_p8.ctor) { + case 'Variable': + return A2(_user$project$ExExpression$elixirVariable, c, _p8._0); + case 'Application': + return A2(_user$project$ExExpression$tupleOrFunction, c, _p8); + case 'RecordUpdate': + return A2( + _elm_lang$core$Basics_ops['++'], + '%{', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, _p8._0), + A2( _elm_lang$core$Basics_ops['++'], - '{', + ' | ', A2( _elm_lang$core$Basics_ops['++'], A2( @@ -16428,2173 +16580,2495 @@ var _user$project$ExType$elixirT = F3( ', ', A2( _elm_lang$core$List$map, - A2(_user$project$ExType$elixirT, flatten, c), - _p9._0)), - '}')); - } + function (_p9) { + var _p10 = _p9; + return A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, _p10._0), + A2( + _elm_lang$core$Basics_ops['++'], + ': ', + A2(_user$project$ExExpression$elixirE, c, _p10._1))); + }, + _p8._1)), + '}')))); + case 'Access': + if (_p8._0.ctor === 'Variable') { + return A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$modulePath(_p8._0._0), + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2( + _elm_lang$core$String$join, + '.', + A2( + _elm_lang$core$List$map, + _user$project$Helpers$toSnakeCase(true), + _p8._1)))); + } else { + return A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p8._0), + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2(_elm_lang$core$String$join, '.', _p8._1))); } - case 'TypeVariable': - if (_p9._0 === 'number') { - return 'number'; + case 'AccessFunction': + return A2( + _elm_lang$core$Basics_ops['++'], + '(fn a -> a.', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, _p8._0), + ' end)')); + case 'BinOp': + if (((_p8._0.ctor === 'Variable') && (_p8._0._0.ctor === '::')) && (_p8._0._0._1.ctor === '[]')) { + return A5(_user$project$ExOperator$elixirBinop, c, _user$project$ExExpression$elixirE, _p8._0._0._0, _p8._1, _p8._2); } else { - var _p11 = _p9._0; - var _p10 = _elm_lang$core$String$uncons(_p11); - if (((_p10.ctor === 'Just') && (_p10._0.ctor === '_Tuple2')) && (_p10._0._0.valueOf() === '@')) { - return A2(_user$project$Helpers$toSnakeCase, true, _p10._0._1); - } else { - return c.inTypeDefiniton ? _p11 : 'any'; - } + break _v8_7; } - case 'TypeConstructor': - var _p12 = A2(_user$project$Helpers$moduleAccess, c.mod, _p9._0); - var mod = _p12._0; - var last = _p12._1; - var modulePath = _elm_lang$core$Native_Utils.eq(mod, c.mod) ? A2( - _elm_lang$core$Maybe$withDefault, + default: + break _v8_7; + } + } while(false); + return A2(_user$project$ExExpression$elixirControlFlow, c, _p8); + }); +var _user$project$ExExpression$elixirControlFlow = F2( + function (c, e) { + var _p11 = e; + switch (_p11.ctor) { + case 'Case': + return A3(_user$project$ExExpression$caseE, c, _p11._0, _p11._1); + case 'Lambda': + return A3(_user$project$ExExpression$lambda, c, _p11._0, _p11._1); + case 'If': + if (_p11._2.ctor === 'If') { + return A2( + _elm_lang$core$String$join, '', A2( - _elm_lang$core$Maybe$map, - function (a) { - return A2(_elm_lang$core$Basics_ops['++'], a, '.'); + _elm_lang$core$Basics_ops['++'], + { + ctor: '::', + _0: 'cond do', + _1: {ctor: '[]'} + }, + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _user$project$ExExpression$handleIfExp, + _user$project$ExContext$indent(c), + _p11), + { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'end', + _1: {ctor: '[]'} + } + }))); + } else { + return A2( + _elm_lang$core$Basics_ops['++'], + 'if ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p11._0), + A2( + _elm_lang$core$Basics_ops['++'], + ' do ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p11._1), + A2( + _elm_lang$core$Basics_ops['++'], + ' else ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p11._2), + ' end')))))); + } + case 'Let': + return function (_p12) { + var _p13 = _p12; + return A2( + _elm_lang$core$Basics_ops['++'], + _p13._1, + A2(_user$project$ExExpression$elixirE, _p13._0, _p11._1)); + }( + A3( + _elm_lang$core$Basics$flip, + _elm_lang$core$List$foldl, + {ctor: '_Tuple2', _0: c, _1: ''}, + F2( + function (varGroup, _p14) { + var _p15 = _p14; + var _p20 = _p15._0; + return function (_p16) { + var _p17 = _p16; + var _p18 = _p17._0; + return A2( + _user$project$Helpers_ops['=>'], + A2(_user$project$ExContext$mergeVariables, _p18, _p20), + A2( + _elm_lang$core$Basics_ops['++'], + _p15._1, + A2( + _elm_lang$core$Basics_ops['++'], + _p17._1, + _user$project$Helpers$ind(_p18.indent)))); + }( + function () { + var _p19 = varGroup; + if (_p19.ctor === '[]') { + return A2(_user$project$Helpers_ops['=>'], _p20, ''); + } else { + if ((_p19._0.ctor === '_Tuple2') && (_p19._1.ctor === '[]')) { + return A2( + _user$project$ExExpression$elixirLetInBranch, + _p20, + {ctor: '_Tuple2', _0: _p19._0._0, _1: _p19._0._1}); + } else { + return A2(_user$project$ExExpression$elixirLetInMutualFunctions, _p20, _p19); + } + } + }()); + }))( + _user$project$ExVariable$groupByCrossDependency( + A2(_user$project$ExVariable$organizeLetInVariablesOrder, c, _p11._0)))); + default: + return A2(_user$project$ExExpression$elixirPrimitve, c, e); + } + }); +var _user$project$ExExpression$caseE = F3( + function (c, $var, body) { + return A2( + _elm_lang$core$Basics_ops['++'], + 'case ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, $var), + A2( + _elm_lang$core$Basics_ops['++'], + ' do', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + '', + A2( + _elm_lang$core$List$map, + _user$project$ExExpression$caseBranch( + A2( + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: $var, + _1: {ctor: '[]'} + }, + c)), + body)), + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + 'end'))))); + }); +var _user$project$ExExpression$caseBranch = F2( + function (c, _p21) { + var _p22 = _p21; + var _p23 = _p22._0; + return A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 1), + A2( + _user$project$ExExpression$elixirE, + _user$project$ExContext$inArgs(c), + _p23)), + A2( + _elm_lang$core$Basics_ops['++'], + ' ->', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 2), + A2( + _user$project$ExExpression$elixirE, + A2( + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p23, + _1: {ctor: '[]'} }, - A2(_elm_lang$core$Dict$get, last, c.importedTypes))) : A2(_elm_lang$core$Basics_ops['++'], mod, '.'); - return A2( - _elm_lang$core$Basics_ops['++'], - modulePath, - A4(_user$project$ExType$elixirType, flatten, c, last, _p9._1)); - case 'TypeRecord': - return A2( - _elm_lang$core$Basics_ops['++'], - '%{', - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 1), - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - A2( - _elm_lang$core$Basics_ops['++'], - ',', - _user$project$Helpers$ind(c.indent + 1)), - A2( - _elm_lang$core$List$map, - function (_p13) { - var _p14 = _p13; - return A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, false, _p14._0), - A2( - _elm_lang$core$Basics_ops['++'], - ': ', - A3( - _user$project$ExType$elixirT, - flatten, - _user$project$ExContext$indent(c), - _p14._1))); - }, - _p9._0)), - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - '}')))); - case 'TypeRecordConstructor': + _user$project$ExContext$indent( + _user$project$ExContext$indent(c))), + _p22._1)))); + }); +var _user$project$ExExpression$elixirLetInBranch = F2( + function (c, _p24) { + var _p25 = _p24; + var _p34 = _p25._0; + var _p33 = _p25._1; + var wrapElixirE = F2( + function (c, exp) { + var _p26 = exp; + if (_p26.ctor === 'Let') { return A2( _elm_lang$core$Basics_ops['++'], - '%{', + '(', A2( _elm_lang$core$Basics_ops['++'], _user$project$Helpers$ind(c.indent + 1), A2( _elm_lang$core$Basics_ops['++'], A2( - _elm_lang$core$String$join, - A2( - _elm_lang$core$Basics_ops['++'], - ', ', - _user$project$Helpers$ind(c.indent + 1)), - A3( - _user$project$ExType$typeRecordFields, - _user$project$ExContext$indent(c), - flatten, - _p9)), + _user$project$ExExpression$elixirE, + _user$project$ExContext$indent(c), + exp), A2( _elm_lang$core$Basics_ops['++'], _user$project$Helpers$ind(c.indent), - '}')))); - default: - var _p18 = _p9._1; - var _p17 = _p9._0; - return flatten ? function (_p15) { - var _p16 = _p15; + ')')))); + } else { + return A2(_user$project$ExExpression$elixirE, c, exp); + } + }); + var _p27 = _user$project$Helpers$applicationToList(_p34); + _v18_3: + do { + if (_p27.ctor === '::') { + if (((_p27._0.ctor === 'Variable') && (_p27._0._0.ctor === '::')) && (_p27._0._0._1.ctor === '[]')) { + if (_p27._1.ctor === '[]') { + var _p28 = _p27._0; return A2( - _elm_lang$core$Basics_ops['++'], - '(', + _user$project$Helpers_ops['=>'], + A2( + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p28, + _1: {ctor: '[]'} + }, + c), A2( _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - A2( - _user$project$ExType$elixirT, - flatten, - _user$project$ExContext$indent(c)), - {ctor: '::', _0: _p17, _1: _p16._1})), + A2(_user$project$Helpers$toSnakeCase, true, _p27._0._0._0), A2( _elm_lang$core$Basics_ops['++'], - ' -> ', + ' = ', A2( - _elm_lang$core$Basics_ops['++'], + wrapElixirE, A2( - _elm_lang$core$Maybe$withDefault, - '', - A2( - _elm_lang$core$Maybe$map, - A2(_user$project$ExType$elixirT, flatten, c), - _p16._0)), - ')')))); - }( - _user$project$Helpers$lastAndRest( - _user$project$Helpers$typeApplicationToList(_p18))) : A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A3(_user$project$ExType$elixirT, flatten, c, _p17), + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p28, + _1: {ctor: '[]'} + }, + c), + _p33)))); + } else { + var _p31 = _p27._0; + var _p30 = _p27._0._0._0; + var _p29 = _p27._1; + return _user$project$Helpers$isCapitilzed(_p30) ? A2( + _user$project$Helpers_ops['=>'], + A2(_user$project$ExVariable$rememberVariables, _p29, c), A2( _elm_lang$core$Basics_ops['++'], - ' -> ', - A2( - _elm_lang$core$Basics_ops['++'], - A3(_user$project$ExType$elixirT, flatten, c, _p18), - ')')))); - } - } - }); -var _user$project$ExType$elixirType = F4( - function (flatten, c, name, args) { - var _p19 = {ctor: '_Tuple2', _0: name, _1: args}; - _v12_13: - do { - if (_p19._1.ctor === '::') { - if (_p19._1._1.ctor === '[]') { - switch (_p19._0) { - case 'List': - return A2( - _elm_lang$core$Basics_ops['++'], - 'list(', - A2( - _elm_lang$core$Basics_ops['++'], - A3(_user$project$ExType$elixirT, flatten, c, _p19._1._0), - ')')); - case 'Maybe': - return A2( - _elm_lang$core$Basics_ops['++'], - '{', A2( - _elm_lang$core$Basics_ops['++'], - A3(_user$project$ExType$elixirT, flatten, c, _p19._1._0), - '} | nil')); - case 'Just': - return A3(_user$project$ExType$elixirT, flatten, c, _p19._1._0); - case 'Err': - return A2( - _elm_lang$core$Basics_ops['++'], - '{:error, ', + _user$project$ExExpression$tupleOrFunction, + A2(_user$project$ExVariable$rememberVariables, _p29, c), + _p34), A2( _elm_lang$core$Basics_ops['++'], - A3(_user$project$ExType$elixirT, flatten, c, _p19._1._0), - '}')); - case 'Ok': - var _p20 = _p19._1._0; - return _elm_lang$core$Native_Utils.eq( - _p20, - _Bogdanp$elm_ast$Ast_Statement$TypeTuple( - {ctor: '[]'})) ? 'ok' : A2( + ' = ', + A2(wrapElixirE, c, _p33)))) : A2( + _user$project$Helpers_ops['=>'], + A2( + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p31, + _1: {ctor: '[]'} + }, + c), + A2( _elm_lang$core$Basics_ops['++'], - '{:ok,', + A2(_user$project$Helpers$toSnakeCase, true, _p30), A2( _elm_lang$core$Basics_ops['++'], - A3(_user$project$ExType$elixirT, flatten, c, _p20), - '}')); - default: - break _v12_13; - } - } else { - break _v12_13; - } - } else { - switch (_p19._0) { - case 'String': - return 'String.t'; - case 'Char': - return 'integer'; - case 'Bool': - return 'boolean'; - case 'Int': - return 'integer'; - case 'Pid': - return 'pid'; - case 'Float': - return 'float'; - case 'Nothing': - return 'nil'; - default: - return A2(_user$project$Helpers$toSnakeCase, true, _p19._0); - } - } - } while(false); - return A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p19._0), - A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - A2(_user$project$ExType$elixirT, flatten, c), - _p19._1)), - ')'))); - }); -var _user$project$ExType$typeRecordFields = F3( - function (c, flatten, t) { - typeRecordFields: - while (true) { - var keyValuePair = function (_p21) { - var _p22 = _p21; - return A2( - _elm_lang$core$Basics_ops['++'], - _p22._0, - A2( - _elm_lang$core$Basics_ops['++'], - ': ', - A3(_user$project$ExType$elixirT, flatten, c, _p22._1))); - }; - var _p23 = t; - _v14_6: - do { - switch (_p23.ctor) { - case 'TypeRecordConstructor': - switch (_p23._0.ctor) { - case 'TypeConstructor': - if ((_p23._0._0.ctor === '::') && (_p23._0._0._1.ctor === '[]')) { - var inherited = A2( - _elm_lang$core$Maybe$map, - A2(_user$project$ExType$typeRecordFields, c, flatten), - A2( - _elm_lang$core$Maybe$map, - function (_p24) { - var _p25 = _p24; - return A2(_user$project$ExAlias$resolveTypeBody, _p25.typeBody, _p23._0._1); - }, - A3(_user$project$ExContext$getAlias, c.mod, _p23._0._0._0, c))); - return A2( + ' = rec ', + A2( _elm_lang$core$Basics_ops['++'], - A2(_elm_lang$core$List$map, keyValuePair, _p23._1), + A2(_user$project$Helpers$toSnakeCase, true, _p30), + A2( + _elm_lang$core$Basics_ops['++'], + ', ', + A3( + _user$project$ExExpression$lambda, + A2( + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p31, + _1: {ctor: '[]'} + }, + c), + _p29, + _p33)))))); + } + } else { + if (_p27._1.ctor === '[]') { + var _p32 = _p27._0; + return A2( + _user$project$Helpers_ops['=>'], + A2( + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p32, + _1: {ctor: '[]'} + }, + c), + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _user$project$ExExpression$elixirE, + _user$project$ExContext$inArgs(c), + _p32), + A2( + _elm_lang$core$Basics_ops['++'], + ' = ', + A2( + wrapElixirE, A2( - _elm_lang$core$Maybe$withDefault, + _user$project$ExVariable$rememberVariables, { ctor: '::', - _0: '', + _0: _p32, _1: {ctor: '[]'} }, - inherited)); - } else { - break _v14_6; - } - case 'TypeRecord': - return A2( - _elm_lang$core$List$map, - keyValuePair, - A2(_elm_lang$core$Basics_ops['++'], _p23._1, _p23._0._0)); - case 'TypeVariable': - return A2(_elm_lang$core$List$map, keyValuePair, _p23._1); - case 'TypeTuple': - if ((_p23._0._0.ctor === '::') && (_p23._0._0._1.ctor === '[]')) { - var _v16 = c, - _v17 = flatten, - _v18 = A2(_Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor, _p23._0._0._0, _p23._1); - c = _v16; - flatten = _v17; - t = _v18; - continue typeRecordFields; - } else { - break _v14_6; - } - case 'TypeRecordConstructor': - return A2( - _elm_lang$core$Basics_ops['++'], - A2(_elm_lang$core$List$map, keyValuePair, _p23._1), - A3(_user$project$ExType$typeRecordFields, c, flatten, _p23._0)); - default: - break _v14_6; - } - case 'TypeRecord': - return A2(_elm_lang$core$List$map, keyValuePair, _p23._0); - default: - break _v14_6; + c), + _p33)))); + } else { + break _v18_3; + } } - } while(false); - return _elm_lang$core$Native_Utils.crashCase( - 'ExType', - { - start: {line: 130, column: 9}, - end: {line: 158, column: 79} - }, - _p23)( - A2( - _elm_lang$core$Basics_ops['++'], - 'Wrong type record constructor ', - _elm_lang$core$Basics$toString(_p23))); - } - }); -var _user$project$ExType$elixirTFlat = _user$project$ExType$elixirT(true); -var _user$project$ExType$elixirTNoFlat = _user$project$ExType$elixirT(false); -var _user$project$ExType$typespec0 = F2( - function (c, t) { - return A2( - _elm_lang$core$Basics_ops['++'], - '() :: ', - A2(_user$project$ExType$elixirTNoFlat, c, t)); + } else { + break _v18_3; + } + } while(false); + return A2(_user$project$Helpers_ops['=>'], c, ''); }); -var _user$project$ExType$typespec = F2( - function (c, t) { - var _p27 = _user$project$Helpers$lastAndRest( - _user$project$Helpers$typeApplicationToList(t)); - if (_p27._0.ctor === 'Just') { +var _user$project$ExExpression$lambda = F3( + function (c, args, body) { + var _p35 = args; + if (_p35.ctor === '::') { + var _p36 = _p35._0; return A2( _elm_lang$core$Basics_ops['++'], - '(', + 'fn ', A2( _elm_lang$core$Basics_ops['++'], A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - _user$project$ExType$elixirTNoFlat(c), - _p27._1)), - A2( - _elm_lang$core$Basics_ops['++'], - ') :: ', - A2(_user$project$ExType$elixirTNoFlat, c, _p27._0._0)))); - } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExType', - { - start: {line: 266, column: 5}, - end: {line: 276, column: 37} - }, - _p27)('impossible'); - } - }); -var _user$project$ExType$uniontype = F2( - function (c, t) { - var _p29 = t; - if (((_p29.ctor === 'TypeConstructor') && (_p29._0.ctor === '::')) && (_p29._0._1.ctor === '[]')) { - if (_p29._1.ctor === '[]') { - return _user$project$Helpers$atomize(_p29._0._0); - } else { - return A2( - _elm_lang$core$Basics_ops['++'], - '{', + _user$project$ExExpression$elixirE, + _user$project$ExContext$inArgs(c), + _p36), A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$atomize(_p29._0._0), + ' -> ', A2( _elm_lang$core$Basics_ops['++'], - ', ', - A2( - _elm_lang$core$Basics_ops['++'], + A3( + _user$project$ExExpression$lambda, A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - _user$project$ExType$elixirTNoFlat(c), - _p29._1)), - '}')))); - } + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p36, + _1: {ctor: '[]'} + }, + c), + _p35._1, + body), + ' end')))); } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExType', - { - start: {line: 283, column: 5}, - end: {line: 295, column: 96} - }, - _p29)( - A2( - _elm_lang$core$Basics_ops['++'], - 'I am looking for union type constructor. But got ', - _elm_lang$core$Basics$toString(_p29))); + return A2(_user$project$ExExpression$elixirE, c, body); } }); -var _user$project$ExType$aliasOr = F4( - function (c, name, args, $default) { - return A2( - _elm_lang$core$Maybe$withDefault, - $default, - _elm_lang$core$Maybe$map( - function (_p31) { - var _p32 = _p31; - var _p35 = _p32.typeBody; - var _p34 = _p32.parentModule; - if (_elm_lang$core$Native_Utils.eq(_p34, c.mod)) { - return A2( - _user$project$ExType$elixirTNoFlat, - c, - A2(_user$project$ExAlias$resolveTypeBody, _p35, args)); - } else { - var _p33 = _p32.aliasType; - if (_p33.ctor === 'Type') { - return A2( - _elm_lang$core$Basics_ops['++'], - _p34, - A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2( - _user$project$ExType$elixirTNoFlat, - c, - A2(_user$project$ExAlias$resolveTypeBody, _p35, args)))); - } else { - return A2( - _user$project$ExType$elixirTNoFlat, - _elm_lang$core$Native_Utils.update( - c, - {mod: _p34}), - A2(_user$project$ExAlias$resolveTypeBody, _p35, args)); - } - } - })( - A3(_user$project$ExContext$getAlias, c.mod, name, c))); - }); - -var _user$project$ExOperator$flattenPipes = function (e) { - var _p0 = e; - if (((((_p0.ctor === 'BinOp') && (_p0._0.ctor === 'Variable')) && (_p0._0._0.ctor === '::')) && (_p0._0._0._0 === '|>')) && (_p0._0._0._1.ctor === '[]')) { - if (((((_p0._2.ctor === 'BinOp') && (_p0._2._0.ctor === 'Variable')) && (_p0._2._0._0.ctor === '::')) && (_p0._2._0._0._0 === '|>')) && (_p0._2._0._0._1.ctor === '[]')) { - return A2( - _elm_lang$core$Basics_ops['++'], - { - ctor: '::', - _0: _p0._1, - _1: {ctor: '[]'} - }, - _user$project$ExOperator$flattenPipes(_p0._2)); - } else { +var _user$project$ExExpression$tupleOrFunction = F2( + function (c, a) { + var _p37 = _user$project$ExExpression$flattenTypeApplication(a); + _v20_11: + do { + _v20_10: + do { + if (_p37.ctor === '::') { + switch (_p37._0.ctor) { + case 'Application': + if (_p37._1.ctor === '[]') { + return A3(_user$project$ExExpression$functionApplication, c, _p37._0._0, _p37._0._1); + } else { + break _v20_11; + } + case 'Variable': + if ((_p37._0._0.ctor === '::') && (_p37._0._0._1.ctor === '[]')) { + switch (_p37._0._0._0) { + case 'ffi': + return A2(_user$project$ExContext$crash, c, 'Ffi inside function body is deprecated since Elchemy 0.3'); + case 'macro': + return A2(_user$project$ExContext$crash, c, 'You can\'t use `macro` inside a function body'); + case 'tryFfi': + return A2(_user$project$ExContext$crash, c, 'tryFfi inside function body is deprecated since Elchemy 0.3'); + case 'lffi': + return A2(_user$project$ExContext$crash, c, 'Lffi inside function body is deprecated since Elchemy 0.3'); + case 'flambda': + return A2(_user$project$ExContext$crash, c, 'Flambda is deprecated since Elchemy 0.3'); + case 'Just': + if ((_p37._1.ctor === '::') && (_p37._1._1.ctor === '[]')) { + return A2( + _elm_lang$core$Basics_ops['++'], + '{', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p37._1._0), + '}')); + } else { + break _v20_10; + } + case 'Ok': + if ((_p37._1.ctor === '::') && (_p37._1._1.ctor === '[]')) { + return A2( + _elm_lang$core$Basics_ops['++'], + '{:ok, ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p37._1._0), + '}')); + } else { + break _v20_10; + } + case 'Err': + if ((_p37._1.ctor === '::') && (_p37._1._1.ctor === '[]')) { + return A2( + _elm_lang$core$Basics_ops['++'], + '{:error, ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p37._1._0), + '}')); + } else { + break _v20_10; + } + case 'Do': + if ((_p37._1.ctor === '::') && (_p37._1._1.ctor === '[]')) { + return A2( + _elm_lang$core$Basics_ops['++'], + 'quote do ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, _p37._1._0), + ' end')); + } else { + break _v20_10; + } + default: + break _v20_10; + } + } else { + break _v20_10; + } + default: + break _v20_11; + } + } else { + break _v20_11; + } + } while(false); + var _p41 = _p37._1; return A2( - _elm_lang$core$Basics_ops['++'], - { - ctor: '::', - _0: _p0._1, - _1: {ctor: '[]'} - }, - { - ctor: '::', - _0: _p0._2, - _1: {ctor: '[]'} - }); - } - } else { - return { - ctor: '::', - _0: _p0, - _1: {ctor: '[]'} - }; - } -}; -var _user$project$ExOperator$elixirBinop = F5( - function (c, elixirE, op, l, r) { - elixirBinop: - while (true) { - var _p1 = op; - switch (_p1) { - case '//': - return A2( - _elm_lang$core$Basics_ops['++'], - 'div(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, l), - A2( - _elm_lang$core$Basics_ops['++'], - ', ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, r), - ')')))); - case '%': - return A2( - _elm_lang$core$Basics_ops['++'], - 'rem(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, l), - A2( - _elm_lang$core$Basics_ops['++'], - ', ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, r), - ')')))); - case '^': + _elm_lang$core$Maybe$withDefault, + function (_p38) { + var _p39 = _p38; + var _p40 = _p39._1; return A2( - _elm_lang$core$Basics_ops['++'], - ':math.pow(', + _elm_lang$core$Maybe$withDefault, A2( _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, l), + '{', A2( _elm_lang$core$Basics_ops['++'], - ', ', A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, r), - ')')))); - case '::': - return A2( - _elm_lang$core$Basics_ops['++'], - '[', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, l), - A2( - _elm_lang$core$Basics_ops['++'], - ' | ', + _user$project$ExExpression$elixirE, + c, + _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: _p40, + _1: {ctor: '[]'} + })), A2( _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, r), - ']')))); - case '<<': - var _v2 = c, - _v3 = elixirE, - _v4 = '>>', - _v5 = r, - _v6 = l; - c = _v2; - elixirE = _v3; - op = _v4; - l = _v5; - r = _v6; - continue elixirBinop; - case '<|': - var _v7 = c, - _v8 = elixirE, - _v9 = '|>', - _v10 = r, - _v11 = l; - c = _v7; - elixirE = _v8; - op = _v9; - l = _v10; - r = _v11; - continue elixirBinop; - case '|>': - return A2( - _elm_lang$core$Basics_ops['++'], - '(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, l), - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - '', + ', ', A2( - _elm_lang$core$List$map, - A2( - _elm_lang$core$Basics$flip, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - ').()'), + _elm_lang$core$Basics_ops['++'], A2( - _elm_lang$core$List$map, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - })( - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - '|> (')), + _elm_lang$core$String$join, + ', ', A2( _elm_lang$core$List$map, - elixirE(c), - _user$project$ExOperator$flattenPipes(r))))), - ')'))); - case 'as': - return A2( + _user$project$ExExpression$elixirE(c), + _p41)), + '}')))), + A3( + _user$project$ExExpression$aliasFor, + A2(_user$project$ExContext$changeCurrentModule, _p39._0, c), + _p40, + _p41)); + }( + A2(_user$project$Helpers$moduleAccess, c.mod, _p37._0._0)), + A2( + _elm_lang$core$Maybe$map, + _user$project$ExExpression$encodeAccessMacroAndRest(c), + A3(_user$project$ExSelector$maybeAccessMacro, c, _p37._0, _p41))); + } while(false); + return A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + 'Shouldn\'t ever work for', + _elm_lang$core$Basics$toString(_p37))); + }); +var _user$project$ExExpression$aliasFor = F3( + function (c, name, rest) { + return A2( + _user$project$Helpers$maybeOr, + A3(_user$project$ExExpression$typeAliasApplication, c, name, rest), + A3(_user$project$ExExpression$typeApplication, c, name, rest)); + }); +var _user$project$ExExpression$typeAliasApplication = F3( + function (c, name, args) { + return A2( + _elm_lang$core$Maybe$map, + _user$project$ExExpression$elixirE(c), + A2( + _elm_lang$core$Maybe$andThen, + _user$project$ExType$typeAliasConstructor(args), + A2( + _elm_lang$core$Maybe$andThen, + _user$project$ExExpression$filterTypeAlias, + A3(_user$project$ExContext$getAlias, c.mod, name, c)))); + }); +var _user$project$ExExpression$typeApplication = F3( + function (c, name, args) { + return _elm_lang$core$Maybe$map( + function (_p42) { + var _p43 = _p42; + var _p45 = _p43.arity; + var len = _elm_lang$core$List$length(args); + var dif = _p45 - len; + var $arguments = _user$project$Helpers$generateArguments(dif); + var varArgs = A2( + _elm_lang$core$List$map, + function (_p44) { + return _Bogdanp$elm_ast$Ast_Expression$Variable( + _elm_lang$core$List$singleton(_p44)); + }, + $arguments); + return _elm_lang$core$Native_Utils.eq(_p45, 0) ? _user$project$Helpers$atomize(name) : ((_elm_lang$core$Native_Utils.cmp(dif, 0) > -1) ? A3( + _elm_lang$core$Basics$flip, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + A2(_elm_lang$core$String$repeat, dif, ' end'), + A2( _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, l), A2( - _elm_lang$core$Basics_ops['++'], - ' = ', - A2(elixirE, c, r))); - default: - var _p4 = _p1; - var _p2 = _user$project$Helpers$operatorType(_p4); - switch (_p2.ctor) { - case 'Builtin': - return A2( - _elm_lang$core$String$join, - '', - { - ctor: '::', - _0: '(', - _1: { - ctor: '::', - _0: A2(elixirE, c, l), - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: _user$project$Helpers$translateOperator(_p4), - _1: { - ctor: '::', - _0: ' ', - _1: { - ctor: '::', - _0: A2(elixirE, c, r), - _1: { - ctor: '::', - _0: ')', - _1: {ctor: '[]'} - } - } - } - } - } - } - }); - case 'Custom': - return A2( + _elm_lang$core$String$join, + '', + A2( + _elm_lang$core$List$map, + A2( + _elm_lang$core$Basics$flip, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + ' -> '), + A2( + _elm_lang$core$List$map, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + })('fn '), + $arguments))), + A2( + _elm_lang$core$Basics_ops['++'], + '{', + A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$translateOperator(_p4), + _user$project$Helpers$atomize(name), A2( _elm_lang$core$Basics_ops['++'], - '(', + ', ', A2( _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, l), A2( - _elm_lang$core$Basics_ops['++'], + _elm_lang$core$String$join, ', ', A2( - _elm_lang$core$Basics_ops['++'], - A2(elixirE, c, r), - ')'))))); - default: - return _elm_lang$core$Native_Utils.crashCase( - 'ExOperator', - { - start: {line: 52, column: 13}, - end: {line: 66, column: 60} - }, - _p2)( - A2(_elm_lang$core$Basics_ops['++'], 'Illegal operator ', _p4)); - } - } - } - }); - -var _user$project$ExSelector$Access = function (a) { - return {ctor: 'Access', _0: a}; -}; -var _user$project$ExSelector$getSelector = function (expression) { - var _p0 = expression; - if (_p0.ctor === 'AccessFunction') { - return _user$project$ExSelector$Access( - A2(_user$project$Helpers$toSnakeCase, true, _p0._0)); - } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExSelector', - { - start: {line: 26, column: 5}, - end: {line: 31, column: 65} - }, - _p0)('The only allowed selectors are: .field'); - } -}; -var _user$project$ExSelector$Update = {ctor: 'Update'}; -var _user$project$ExSelector$Put = {ctor: 'Put'}; -var _user$project$ExSelector$Get = {ctor: 'Get'}; -var _user$project$ExSelector$accessMacroType = function (string) { - var getType = function (x) { - return A3( - _elm_lang$core$List$foldl, - F2( - function (_p2, acc) { - var _p3 = _p2; - var _p4 = acc; - if (_p4.ctor === 'Nothing') { - return A2( - _elm_lang$core$Regex$contains, - _elm_lang$core$Regex$regex(_p3._0), - x) ? _elm_lang$core$Maybe$Just(_p3._1) : _elm_lang$core$Maybe$Nothing; - } else { - return _p4; - } - }), - _elm_lang$core$Maybe$Nothing, - { - ctor: '::', - _0: {ctor: '_Tuple2', _0: 'updateIn\\d?', _1: _user$project$ExSelector$Update}, - _1: { - ctor: '::', - _0: {ctor: '_Tuple2', _0: 'putIn\\d?', _1: _user$project$ExSelector$Put}, - _1: { - ctor: '::', - _0: {ctor: '_Tuple2', _0: 'getIn\\d?', _1: _user$project$ExSelector$Get}, - _1: {ctor: '[]'} - } - } - }); - }; - var getArity = function (_p5) { - return A2( - _elm_lang$core$Result$withDefault, - 1, - _elm_lang$core$String$toInt( - A2(_elm_lang$core$String$filter, _elm_lang$core$Char$isDigit, _p5))); - }; - return A2( - _elm_lang$core$Maybe$map, - function (t) { - return { - ctor: '_Tuple2', - _0: t, - _1: getArity(string) - }; - }, - getType(string)); -}; -var _user$project$ExSelector$AccessMacro = F3( - function (a, b, c) { - return {ctor: 'AccessMacro', _0: a, _1: b, _2: c}; - }); -var _user$project$ExSelector$maybeAccessMacro = F2( - function (call, args) { - var accessMacroArgs = F2( - function (arity, args) { - var _p6 = A2( - _elm_lang$core$Basics$compare, - _elm_lang$core$List$length(args), - arity); - switch (_p6.ctor) { - case 'LT': - return _elm_lang$core$Native_Utils.crashCase( - 'ExSelector', - { - start: {line: 38, column: 13}, - end: {line: 50, column: 65} - }, - _p6)( + _elm_lang$core$List$map, + _user$project$ExExpression$elixirE( + A2(_user$project$ExVariable$rememberVariables, varArgs, c)), + A2(_elm_lang$core$Basics_ops['++'], args, varArgs))), + '}')))))) : A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + 'Expected ', + A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString(_p45), A2( _elm_lang$core$Basics_ops['++'], - 'Access macros [updateIn/getIn/putIn] cannot be partially applied. Expecting ', - A2( - _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(arity), - ' selector arguments.'))); - case 'EQ': - return { - ctor: '_Tuple2', - _0: A2(_elm_lang$core$List$map, _user$project$ExSelector$getSelector, args), - _1: {ctor: '[]'} - }; - default: - return A2( - _elm_lang$core$Tuple$mapFirst, - _elm_lang$core$List$map(_user$project$ExSelector$getSelector), - A2(_elm_community$list_extra$List_Extra$splitAt, arity, args)); - } - }); - var _p8 = {ctor: '_Tuple2', _0: call, _1: args}; - if ((((_p8.ctor === '_Tuple2') && (_p8._0.ctor === 'Variable')) && (_p8._0._0.ctor === '::')) && (_p8._0._0._1.ctor === '[]')) { - return A2( - _elm_lang$core$Maybe$map, - function (_p9) { - var _p10 = _p9; - var _p12 = _p10._1; - var _p11 = A2(accessMacroArgs, _p12, _p8._1); - var selectors = _p11._0; - var rest = _p11._1; - return { - ctor: '_Tuple2', - _0: A3(_user$project$ExSelector$AccessMacro, _p10._0, _p12, selectors), - _1: rest - }; - }, - _user$project$ExSelector$accessMacroType(_p8._0._0._0)); - } else { - return _elm_lang$core$Maybe$Nothing; - } - }); - -var _user$project$ExExpression$isTuple = function (a) { - isTuple: - while (true) { - var _p0 = a; - switch (_p0.ctor) { - case 'Application': - var _v1 = _p0._0; - a = _v1; - continue isTuple; - case 'Variable': - if ((_p0._0.ctor === '::') && (_p0._0._1.ctor === '[]')) { - if (_p0._0._0 === '()') { - return true; - } else { - return _user$project$Helpers$isCapitilzed(_p0._0._0); - } - } else { - return function (_p1) { - var _p2 = _p1; - return _user$project$ExExpression$isTuple( - _Bogdanp$elm_ast$Ast_Expression$Variable( - { - ctor: '::', - _0: _p2._1, - _1: {ctor: '[]'} - })); - }( - A2(_user$project$Helpers$moduleAccess, '', _p0._0)); - } - default: - return false; - } - } -}; -var _user$project$ExExpression$filterTypeAlias = function (_p3) { - var _p4 = _p3; - var _p5 = _p4.aliasType; - if (_p5.ctor === 'TypeAlias') { - return _elm_lang$core$Maybe$Just(_p4); - } else { - return _elm_lang$core$Maybe$Nothing; - } -}; -var _user$project$ExExpression$isMacro = function (e) { - isMacro: - while (true) { - var _p6 = e; - _v5_2: - do { - switch (_p6.ctor) { - case 'Application': - var _v6 = _p6._0; - e = _v6; - continue isMacro; - case 'Variable': - if ((_p6._0.ctor === '::') && (_p6._0._1.ctor === '[]')) { - return A2( - _elm_lang$core$List$member, - _p6._0._0, - { - ctor: '::', - _0: 'tryFfi', - _1: { - ctor: '::', - _0: 'ffi', - _1: { - ctor: '::', - _0: 'lffi', - _1: { - ctor: '::', - _0: 'flambda', - _1: { - ctor: '::', - _0: 'updateIn', - _1: { - ctor: '::', - _0: 'updateIn2', - _1: { - ctor: '::', - _0: 'updateIn3', - _1: { - ctor: '::', - _0: 'updateIn4', - _1: { - ctor: '::', - _0: 'updateIn5', - _1: { - ctor: '::', - _0: 'putIn', - _1: { - ctor: '::', - _0: 'putIn', - _1: { - ctor: '::', - _0: 'putIn2', - _1: { - ctor: '::', - _0: 'putIn3', - _1: { - ctor: '::', - _0: 'putIn4', - _1: { - ctor: '::', - _0: 'putIn5', - _1: { - ctor: '::', - _0: 'getIn', - _1: { - ctor: '::', - _0: 'getIn2', - _1: { - ctor: '::', - _0: 'getIn3', - _1: { - ctor: '::', - _0: 'getIn4', - _1: { - ctor: '::', - _0: 'getIn5', - _1: {ctor: '[]'} - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }); - } else { - break _v5_2; - } + ' arguments for \'', + A2( + _elm_lang$core$Basics_ops['++'], + name, + A2( + _elm_lang$core$Basics_ops['++'], + '\'. Got: ', + _elm_lang$core$Basics$toString( + _elm_lang$core$List$length(args))))))))); + })( + A3(_user$project$ExContext$getType, c.mod, name, c)); + }); +var _user$project$ExExpression$encodeAccessMacroAndRest = F2( + function (c, _p46) { + var _p47 = _p46; + var _p52 = _p47._1; + var encodedRest = function () { + var _p48 = _p52; + if (_p48.ctor === '[]') { + return ''; + } else { + return A2( + _elm_lang$core$Basics_ops['++'], + '.(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ').(', + A2( + _elm_lang$core$List$map, + _user$project$ExExpression$elixirE(c), + _p52)), + ')')); + } + }(); + var encodedType = function () { + var _p49 = _p47._0._0; + switch (_p49.ctor) { + case 'Update': + return 'update_in_'; + case 'Get': + return 'get_in_'; default: - break _v5_2; + return 'put_in_'; } - } while(false); - return false; - } -}; -var _user$project$ExExpression$flattenTypeApplication = function (application) { - var _p7 = application; - if (_p7.ctor === 'Application') { - return (_user$project$ExExpression$isMacro(application) || _user$project$ExExpression$isTuple(application)) ? A2( - _elm_lang$core$Basics_ops['++'], - _user$project$ExExpression$flattenTypeApplication(_p7._0), - { - ctor: '::', - _0: _p7._1, - _1: {ctor: '[]'} - }) : { - ctor: '::', - _0: application, - _1: {ctor: '[]'} - }; - } else { - return { - ctor: '::', - _0: _p7, - _1: {ctor: '[]'} + }(); + var encodeSelector = function (_p50) { + var _p51 = _p50; + return A2( + _elm_lang$core$Basics_ops['++'], + ':', + A2(_user$project$Helpers$toSnakeCase, true, _p51._0)); }; - } -}; -var _user$project$ExExpression$elixirE = F2( - function (c, e) { - var _p8 = e; - _v8_7: + var encodedSelectors = A2( + _elm_lang$core$String$join, + ', ', + A2(_elm_lang$core$List$map, encodeSelector, _p47._0._2)); + return A2( + _elm_lang$core$Basics_ops['++'], + encodedType, + A2( + _elm_lang$core$Basics_ops['++'], + '([', + A2( + _elm_lang$core$Basics_ops['++'], + encodedSelectors, + A2(_elm_lang$core$Basics_ops['++'], '])', encodedRest)))); + }); +var _user$project$ExExpression$functionApplication = F3( + function (c, left, right) { + var reduceArgs = F3( + function (c, args, separator) { + return A2( + _elm_lang$core$String$join, + separator, + A2( + _elm_lang$core$List$map, + _user$project$ExExpression$elixirE(c), + args)); + }); + var _p53 = _user$project$Helpers$applicationToList( + A2(_Bogdanp$elm_ast$Ast_Expression$Application, left, right)); + _v27_2: do { - switch (_p8.ctor) { - case 'Variable': - return A2(_user$project$ExExpression$elixirVariable, c, _p8._0); - case 'Application': - return A2(_user$project$ExExpression$tupleOrFunction, c, _p8); - case 'RecordUpdate': - return A2( + if (_p53.ctor === '::') { + switch (_p53._0.ctor) { + case 'Variable': + if ((_p53._0._0.ctor === '::') && (_p53._0._0._1.ctor === '[]')) { + var _p55 = _p53._0._0._0; + var _p54 = _p53._1; + return A4(_user$project$ExContext$areMatchingArity, c, c.mod, _p55, _p54) ? A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, _p55), + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A3(reduceArgs, c, _p54, ', '), + ')'))) : (c.inMeta ? A2(_user$project$ExContext$crash, c, 'You need to use full ') : A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, left), + A2( + _elm_lang$core$Basics_ops['++'], + '.(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, right), + ')')))); + } else { + break _v27_2; + } + case 'Access': + if (((_p53._0._0.ctor === 'Variable') && (_p53._0._1.ctor === '::')) && (_p53._0._1._1.ctor === '[]')) { + var _p57 = _p53._0._1._0; + var _p56 = _p53._1; + var fnName = A2(_user$project$Helpers$toSnakeCase, true, _p57); + var mod = _user$project$Helpers$modulePath(_p53._0._0._0); + return A4(_user$project$ExContext$areMatchingArity, c, mod, _p57, _p56) ? A2( + _elm_lang$core$Basics_ops['++'], + mod, + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2( + _elm_lang$core$Basics_ops['++'], + fnName, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A3(reduceArgs, c, _p56, ', '), + ')'))))) : A2( + _elm_lang$core$Basics_ops['++'], + mod, + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2( + _elm_lang$core$Basics_ops['++'], + fnName, + A2( + _elm_lang$core$Basics_ops['++'], + '().(', + A2( + _elm_lang$core$Basics_ops['++'], + A3(reduceArgs, c, _p56, ').('), + ')'))))); + } else { + break _v27_2; + } + default: + break _v27_2; + } + } else { + break _v27_2; + } + } while(false); + return A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, left), + A2( + _elm_lang$core$Basics_ops['++'], + '.(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, right), + ')'))); + }); +var _user$project$ExExpression$elixirLetInMutualFunctions = F2( + function (context, expressionsList) { + var letBranchToLambda = F2( + function (c, _p58) { + var _p59 = _p58; + var _p62 = _p59._0; + var _p61 = _p59._1; + var _p60 = _user$project$Helpers$applicationToList(_p62); + if (_p60.ctor === '[]') { + return ''; + } else { + if (_p60._1.ctor === '[]') { + return A2(_user$project$ExExpression$elixirE, c, _p61); + } else { + if (((_p60._0.ctor === 'Variable') && (_p60._0._0.ctor === '::')) && (_p60._0._0._1.ctor === '[]')) { + return A3(_user$project$ExExpression$lambda, c, _p60._1, _p61); + } else { + return A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString(_p62), + ' is not a let in branch')); + } + } + } + }); + var vars = A2(_elm_lang$core$List$map, _elm_lang$core$Tuple$first, expressionsList); + var c = A2(_user$project$ExVariable$rememberVariables, vars, context); + var names = A2( + _elm_lang$core$List$map, + function (_p63) { + return A2( + _user$project$Helpers$toSnakeCase, + true, + A2( + _user$project$ExVariable$extractName, + c, + _elm_lang$core$Tuple$first(_p63))); + }, + expressionsList); + return A2( + _user$project$Helpers_ops['=>'], + c, + A2( + _elm_lang$core$Basics_ops['++'], + '{', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_elm_lang$core$String$join, ', ', names), + A2( _elm_lang$core$Basics_ops['++'], - '%{', + '} = let [', A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p8._0), A2( - _elm_lang$core$Basics_ops['++'], - ' | ', + _elm_lang$core$String$join, + ',', A2( - _elm_lang$core$Basics_ops['++'], + _elm_lang$core$List$map, + function (_p64) { + var _p65 = _p64; + return A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 1), + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, _p65._0), + A2(_elm_lang$core$Basics_ops['++'], ': ', _p65._1))); + }, A2( - _elm_lang$core$String$join, - ', ', + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapSecond( + letBranchToLambda( + _user$project$ExContext$indent(c))), A2( _elm_lang$core$List$map, - function (_p9) { - var _p10 = _p9; - return A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p10._0), - A2( - _elm_lang$core$Basics_ops['++'], - ': ', - A2(_user$project$ExExpression$elixirE, c, _p10._1))); + function (_p66) { + var _p67 = _p66; + return { + ctor: '_Tuple2', + _0: A2(_user$project$ExVariable$extractName, c, _p67._0), + _1: _p67 + }; }, - _p8._1)), - '}')))); - case 'Access': - if (_p8._0.ctor === 'Variable') { + expressionsList)))), + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + ']')))))); + }); +var _user$project$ExExpression$elixirPrimitve = F2( + function (c, e) { + var _p68 = e; + switch (_p68.ctor) { + case 'Integer': + return _elm_lang$core$Basics$toString(_p68._0); + case 'Float': + var name = _elm_lang$core$Basics$toString(_p68._0); + return A2(_elm_lang$core$String$contains, '.', name) ? name : A2(_elm_lang$core$Basics_ops['++'], name, '.0'); + case 'Character': + var _p69 = _p68._0; + switch (_p69.valueOf()) { + case ' ': + return '?\\s'; + case '\n': + return '?\\n'; + case '\r': + return '?\\r'; + case '\t': + return '?\\t'; + case '\\': + return '?\\\\'; + case '': + return '?\\0'; + default: return A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$modulePath(_p8._0._0), + '?', + _elm_lang$core$String$fromChar(_p69)); + } + case 'String': + return A2( + _elm_lang$core$Basics_ops['++'], + '\"', + A2(_elm_lang$core$Basics_ops['++'], _p68._0, '\"')); + case 'List': + return A2( + _elm_lang$core$Basics_ops['++'], + '[', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2( - _elm_lang$core$String$join, - '.', - A2( - _elm_lang$core$List$map, - _user$project$Helpers$toSnakeCase(true), - _p8._1)))); - } else { - return A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, _p8._0), + _elm_lang$core$List$map, + _user$project$ExExpression$elixirE(c), + _p68._0)), + ']')); + case 'Tuple': + return A2( + _elm_lang$core$Basics_ops['++'], + '{', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', A2( - _elm_lang$core$Basics_ops['++'], - '.', - A2(_elm_lang$core$String$join, '.', _p8._1))); - } - case 'AccessFunction': - return A2( + _elm_lang$core$List$map, + _user$project$ExExpression$elixirE(c), + _p68._0)), + '}')); + case 'Record': + return A2( + _elm_lang$core$Basics_ops['++'], + '%{', + A2( _elm_lang$core$Basics_ops['++'], - '(fn a -> a.', A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p8._0), - ' end)')); - case 'BinOp': - if (((_p8._0.ctor === 'Variable') && (_p8._0._0.ctor === '::')) && (_p8._0._0._1.ctor === '[]')) { - return A5(_user$project$ExOperator$elixirBinop, c, _user$project$ExExpression$elixirE, _p8._0._0._0, _p8._1, _p8._2); - } else { - break _v8_7; - } - default: - break _v8_7; - } - } while(false); - return A2(_user$project$ExExpression$elixirControlFlow, c, _p8); + _elm_lang$core$String$join, + ', ', + A2( + _elm_lang$core$List$map, + function (_p70) { + var _p71 = _p70; + return A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, _p71._0), + A2( + _elm_lang$core$Basics_ops['++'], + ': ', + A2(_user$project$ExExpression$elixirE, c, _p71._1))); + }, + _p68._0)), + '}')); + default: + return A3(_user$project$ExContext$notImplemented, c, 'expression', e); + } }); -var _user$project$ExExpression$elixirControlFlow = F2( +var _user$project$ExExpression$handleIfExp = F2( function (c, e) { - var _p11 = e; - switch (_p11.ctor) { - case 'Case': - return A3(_user$project$ExExpression$caseE, c, _p11._0, _p11._1); - case 'Lambda': - return A3(_user$project$ExExpression$lambda, c, _p11._0, _p11._1); - case 'If': - if (_p11._2.ctor === 'If') { - return A2( - _elm_lang$core$String$join, - '', - A2( - _elm_lang$core$Basics_ops['++'], - { + var _p72 = e; + if (_p72.ctor === 'If') { + return A2( + _elm_lang$core$Basics_ops['++'], + { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: A2( + _user$project$ExExpression$elixirE, + _user$project$ExContext$indent(c), + _p72._0), + _1: { + ctor: '::', + _0: ' -> ', + _1: { ctor: '::', - _0: 'cond do', + _0: A2( + _user$project$ExExpression$elixirE, + _user$project$ExContext$indent(c), + _p72._1), _1: {ctor: '[]'} - }, - A2( + } + } + } + }, + A2(_user$project$ExExpression$handleIfExp, c, _p72._2)); + } else { + return { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'true -> ', + _1: { + ctor: '::', + _0: A2( + _user$project$ExExpression$elixirE, + _user$project$ExContext$indent(c), + e), + _1: {ctor: '[]'} + } + } + }; + } + }); +var _user$project$ExExpression$elixirVariable = F2( + function (c, $var) { + var _p73 = $var; + _v36_8: + do { + if (_p73.ctor === '[]') { + return ''; + } else { + if (_p73._1.ctor === '[]') { + switch (_p73._0) { + case '()': + return '{}'; + case 'Nothing': + return 'nil'; + case 'Just': + return 'fn x1 -> {x1} end'; + case 'Err': + return 'fn x1 -> {:error, x1} end'; + case 'Ok': + return 'fn x1 -> {:ok, x1} end'; + case 'curry': + return 'curried()'; + case 'uncurry': + return 'uncurried()'; + default: + break _v36_8; + } + } else { + break _v36_8; + } + } + } while(false); + return function (_p74) { + var _p75 = _p74; + var _p77 = _p75._1; + if (_user$project$Helpers$isCapitilzed(_p77)) { + return A2( + _elm_lang$core$Maybe$withDefault, + _user$project$Helpers$atomize(_p77), + A3( + _user$project$ExExpression$aliasFor, + A2(_user$project$ExContext$changeCurrentModule, _p75._0, c), + _p77, + {ctor: '[]'})); + } else { + if (A2(_elm_lang$core$String$startsWith, '@', _p77)) { + return _user$project$Helpers$atomize( + A2(_elm_lang$core$String$dropLeft, 1, _p77)); + } else { + var _p76 = _user$project$Helpers$operatorType(_p77); + switch (_p76.ctor) { + case 'Builtin': + return _elm_lang$core$Native_Utils.eq(_p77, '<|') ? 'flip().((&|>/0).())' : A2( _elm_lang$core$Basics_ops['++'], + '(&XBasics.', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$translateOperator(_p77), + '/0).()')); + case 'Custom': + return _user$project$Helpers$translateOperator(_p77); + default: + return A2( + _user$project$ExVariable$varOrNah, + c, + A2(_user$project$Helpers$toSnakeCase, true, _p77)); + } + } + } + }( + A2(_user$project$Helpers$moduleAccess, c.mod, _p73)); + }); + +var _user$project$ExMeta$Require = function (a) { + return {ctor: 'Require', _0: a}; +}; +var _user$project$ExMeta$Import = F3( + function (a, b, c) { + return {ctor: 'Import', _0: a, _1: b, _2: c}; + }); +var _user$project$ExMeta$metaDefinition = function (c) { + var insertRequirement = F2( + function (rOrI, dict) { + var _p0 = rOrI; + if (_p0.ctor === 'Require') { + return A3( + _elm_lang$core$Dict$update, + _p0._0, + function (_p1) { + return _elm_lang$core$Maybe$Just( + A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + _p1)); + }, + dict); + } else { + var _p4 = _p0._1; + var _p3 = _p0._2; + return A3( + _elm_lang$core$Dict$update, + _p0._0, + function (_p2) { + return _elm_lang$core$Maybe$Just( + A2( + _elm_lang$core$Maybe$withDefault, + { + ctor: '::', + _0: {ctor: '_Tuple2', _0: _p4, _1: _p3}, + _1: {ctor: '[]'} + }, + A2( + _elm_lang$core$Maybe$map, + F2( + function (x, y) { + return {ctor: '::', _0: x, _1: y}; + })( + {ctor: '_Tuple2', _0: _p4, _1: _p3}), + _p2))); + }, + dict); + } + }); + var stringify = function (_p5) { + var _p6 = _p5; + return A2( + _elm_lang$core$Basics_ops['++'], + '{:', + A2( + _elm_lang$core$Basics_ops['++'], + _p6._0, + A2( + _elm_lang$core$Basics_ops['++'], + ', ', + A2( + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString(_p6._1), + '}')))); + }; + var addMacro = F2( + function (t, acc) { + var _p7 = t; + _v2_2: + do { + switch (_p7.ctor) { + case 'Variable': + if ((_p7._0.ctor === '::') && (_p7._0._1.ctor === '[]')) { + var _p10 = _p7._0._0; + return A2( + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + acc, A2( - _user$project$ExExpression$handleIfExp, - _user$project$ExContext$indent(c), - _p11), - { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'end', - _1: {ctor: '[]'} - } - }))); + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + A2( + _elm_lang$core$Maybe$map, + function (_p8) { + var _p9 = _p8; + return { + ctor: '::', + _0: A3(_user$project$ExMeta$Import, _p9._0, _p10, _p9._1), + _1: {ctor: '[]'} + }; + }, + A2(_elm_lang$core$Dict$get, _p10, c.importedFunctions)))); + } else { + break _v2_2; + } + case 'Access': + if (_p7._0.ctor === 'Variable') { + return { + ctor: '::', + _0: _user$project$ExMeta$Require( + _user$project$Helpers$modulePath(_p7._0._0)), + _1: acc + }; + } else { + break _v2_2; + } + default: + break _v2_2; + } + } while(false); + return acc; + }); + var requiredImports = A2( + _elm_lang$core$String$join, + _user$project$Helpers$ind(c.indent), + A2( + _elm_lang$core$List$map, + function (_p11) { + var _p12 = _p11; + var _p14 = _p12._0; + var _p13 = _p12._1; + if (_p13.ctor === '[]') { + return A2(_elm_lang$core$Basics_ops['++'], 'require ', _p14); } else { return A2( _elm_lang$core$Basics_ops['++'], - 'if ', + 'import ', A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, _p11._0), + _p14, A2( _elm_lang$core$Basics_ops['++'], - ' do ', + ', only: [', A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, _p11._1), A2( - _elm_lang$core$Basics_ops['++'], - ' else ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, _p11._2), - ' end')))))); + _elm_lang$core$String$join, + ',', + A2(_elm_lang$core$List$map, stringify, _p13)), + ']')))); } - case 'Let': - return function (_p12) { - var _p13 = _p12; - return A2( - _elm_lang$core$Basics_ops['++'], - _p13._1, - A2(_user$project$ExExpression$elixirE, _p13._0, _p11._1)); - }( - A3( - _elm_lang$core$Basics$flip, - _elm_lang$core$List$foldl, - {ctor: '_Tuple2', _0: c, _1: ''}, - F2( - function (varGroup, _p14) { - var _p15 = _p14; - var _p20 = _p15._0; - return function (_p16) { - var _p17 = _p16; - var _p18 = _p17._0; - return A2( - _user$project$Helpers_ops['=>'], - A2(_user$project$ExContext$mergeVariables, _p18, _p20), - A2( - _elm_lang$core$Basics_ops['++'], - _p15._1, - A2( - _elm_lang$core$Basics_ops['++'], - _p17._1, - _user$project$Helpers$ind(_p18.indent)))); - }( - function () { - var _p19 = varGroup; - if (_p19.ctor === '[]') { - return A2(_user$project$Helpers_ops['=>'], _p20, ''); - } else { - if ((_p19._0.ctor === '_Tuple2') && (_p19._1.ctor === '[]')) { - return A2( - _user$project$ExExpression$elixirLetInBranch, - _p20, - {ctor: '_Tuple2', _0: _p19._0._0, _1: _p19._0._1}); - } else { - return A2(_user$project$ExExpression$elixirLetInMutualFunctions, _p20, _p19); - } - } - }()); - }))( - _user$project$ExVariable$groupByCrossDependency( - _user$project$ExVariable$organizeLetInVariablesOrder(_p11._0)))); - default: - return A2(_user$project$ExExpression$elixirPrimitve, c, e); - } - }); -var _user$project$ExExpression$caseE = F3( - function (c, $var, body) { - return A2( - _elm_lang$core$Basics_ops['++'], - 'case ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, $var), - A2( - _elm_lang$core$Basics_ops['++'], - ' do', + }, + _elm_lang$core$Dict$toList( + A3( + _elm_lang$core$List$foldl, + insertRequirement, + _elm_lang$core$Dict$empty, A2( - _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, A2( - _elm_lang$core$String$join, - '', + _elm_lang$core$Maybe$map, A2( - _elm_lang$core$List$map, - _user$project$ExExpression$caseBranch( - A2( - _user$project$ExVariable$rememberVariables, - { - ctor: '::', - _0: $var, - _1: {ctor: '[]'} - }, - c)), - body)), - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - 'end'))))); - }); -var _user$project$ExExpression$caseBranch = F2( - function (c, _p21) { - var _p22 = _p21; - var _p23 = _p22._0; + _user$project$ExAst$foldExpression, + addMacro, + {ctor: '[]'}), + c.meta)))))); + var getUsedFunctions = _user$project$ExAst$walkExpressionOutwards; + var defMeta = function (meta) { return A2( _elm_lang$core$Basics_ops['++'], + 'defmodule ', A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 1), - A2( - _user$project$ExExpression$elixirE, - _user$project$ExContext$inArgs(c), - _p23)), - A2( - _elm_lang$core$Basics_ops['++'], - ' ->', + c.mod, A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 2), + '.Meta do', A2( - _user$project$ExExpression$elixirE, - A2( - _user$project$ExVariable$rememberVariables, - { - ctor: '::', - _0: _p23, - _1: {ctor: '[]'} - }, - _user$project$ExContext$indent( - _user$project$ExContext$indent(c))), - _p22._1)))); - }); -var _user$project$ExExpression$elixirLetInBranch = F2( - function (c, _p24) { - var _p25 = _p24; - var _p34 = _p25._0; - var _p33 = _p25._1; - var wrapElixirE = F2( - function (c, exp) { - var _p26 = exp; - if (_p26.ctor === 'Let') { - return A2( _elm_lang$core$Basics_ops['++'], - '(', + _user$project$Helpers$ind(c.indent), A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 1), + requiredImports, A2( _elm_lang$core$Basics_ops['++'], - A2( - _user$project$ExExpression$elixirE, - _user$project$ExContext$indent(c), - exp), + '\n', A2( _elm_lang$core$Basics_ops['++'], _user$project$Helpers$ind(c.indent), - ')')))); - } else { - return A2(_user$project$ExExpression$elixirE, c, exp); - } - }); - var _p27 = _user$project$Helpers$applicationToList(_p34); - _v18_3: - do { - if (_p27.ctor === '::') { - if (((_p27._0.ctor === 'Variable') && (_p27._0._0.ctor === '::')) && (_p27._0._0._1.ctor === '[]')) { - if (_p27._1.ctor === '[]') { - var _p28 = _p27._0; - return A2( - _user$project$Helpers_ops['=>'], - A2( - _user$project$ExVariable$rememberVariables, - { - ctor: '::', - _0: _p28, - _1: {ctor: '[]'} - }, - c), - A2( + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExExpression$elixirE, c, meta), + '\nend')))))))); + }; + return A2( + _elm_lang$core$Maybe$withDefault, + '', + A2(_elm_lang$core$Maybe$map, defMeta, c.meta)); +}; + +var _user$project$ExFunction$getLambdaArgumentIndexes = function (t) { + return A2( + _elm_lang$core$List$filter, + function (_p0) { + var _p1 = _p0; + return _elm_lang$core$Native_Utils.cmp(_p1._1, 1) > 0; + }, + A2( + _elm_lang$core$List$map, + _elm_lang$core$Tuple$mapSecond( + function (_p2) { + return A2( + F2( + function (x, y) { + return x + y; + }), + -1, + _elm_lang$core$List$length(_p2)); + }), + A2( + _elm_lang$core$List$indexedMap, + F2( + function (v0, v1) { + return {ctor: '_Tuple2', _0: v0, _1: v1}; + }), + A2( + _elm_lang$core$List$map, + _user$project$Helpers$typeApplicationToList, + A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + A2(_elm_lang$core$Maybe$map, _user$project$Helpers$typeApplicationToList, t)))))); +}; +var _user$project$ExFunction$privateOrPublic = F2( + function (context, name) { + return A2(_user$project$ExContext$isPrivate, context, name) ? 'p' : ''; + }); +var _user$project$ExFunction$functionCurry = F5( + function (c, elixirE, name, arity, lambdasAt) { + var _p3 = { + ctor: '_Tuple2', + _0: arity, + _1: A3(_user$project$ExContext$hasFlag, 'nocurry', name, c) + }; + _v1_0: + do { + if (_p3._1 === true) { + if (_p3._0 === 0) { + break _v1_0; + } else { + return ''; + } + } else { + if (_p3._0 === 0) { + break _v1_0; + } else { + var _p6 = _p3._0; + var lambdas = A2( + _elm_lang$core$List$map, + function (_p4) { + var _p5 = _p4; + return A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p27._0._0._0), + '{', A2( _elm_lang$core$Basics_ops['++'], - ' = ', + _elm_lang$core$Basics$toString(_p5._0), A2( - wrapElixirE, + _elm_lang$core$Basics_ops['++'], + ', ', A2( - _user$project$ExVariable$rememberVariables, - { + _elm_lang$core$Basics_ops['++'], + _elm_lang$core$Basics$toString(_p5._1), + '}')))); + }, + lambdasAt); + var p = A2(_user$project$ExFunction$privateOrPublic, c, name); + var resolvedName = _user$project$Helpers$isCustomOperator(name) ? _user$project$Helpers$translateOperator(name) : A2(_user$project$Helpers$toSnakeCase, true, name); + return (_elm_lang$core$Native_Utils.eq( + lambdas, + {ctor: '[]'}) || _elm_lang$core$Native_Utils.eq(p, 'p')) ? A2( + _elm_lang$core$String$join, + '', + { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'curry', + _1: { + ctor: '::', + _0: ' ', + _1: { + ctor: '::', + _0: resolvedName, + _1: { + ctor: '::', + _0: '/', + _1: { ctor: '::', - _0: _p28, + _0: _elm_lang$core$Basics$toString(_p6), _1: {ctor: '[]'} - }, - c), - _p33)))); - } else { - var _p31 = _p27._0; - var _p30 = _p27._0._0._0; - var _p29 = _p27._1; - return _user$project$Helpers$isCapitilzed(_p30) ? A2( - _user$project$Helpers_ops['=>'], - A2(_user$project$ExVariable$rememberVariables, _p29, c), - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _user$project$ExExpression$tupleOrFunction, - A2(_user$project$ExVariable$rememberVariables, _p29, c), - _p34), - A2( - _elm_lang$core$Basics_ops['++'], - ' = ', - A2(wrapElixirE, c, _p33)))) : A2( - _user$project$Helpers_ops['=>'], - A2( - _user$project$ExVariable$rememberVariables, - { + } + } + } + } + } + }) : A2( + _elm_lang$core$String$join, + '', + { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'curry', + _1: { ctor: '::', - _0: _p31, - _1: {ctor: '[]'} - }, - c), - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p30), - A2( - _elm_lang$core$Basics_ops['++'], - ' = rec ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p30), - A2( - _elm_lang$core$Basics_ops['++'], - ', ', - A3( - _user$project$ExExpression$lambda, + _0: ' ', + _1: { + ctor: '::', + _0: resolvedName, + _1: { + ctor: '::', + _0: '/', + _1: { + ctor: '::', + _0: _elm_lang$core$Basics$toString(_p6), + _1: { + ctor: '::', + _0: ', lambdas: [', + _1: { + ctor: '::', + _0: A2(_elm_lang$core$String$join, ', ', lambdas), + _1: { + ctor: '::', + _0: ']', + _1: {ctor: '[]'} + } + } + } + } + } + } + } + } + }); + } + } + } while(false); + return ''; + }); +var _user$project$ExFunction$genElixirFunc = F6( + function (c, elixirE, name, args, missingArgs, body) { + var _p7 = { + ctor: '_Tuple2', + _0: _user$project$Helpers$operatorType(name), + _1: args + }; + switch (_p7._0.ctor) { + case 'Custom': + return A2( + _elm_lang$core$String$join, + '', + { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'def', + _1: { + ctor: '::', + _0: A2(_user$project$ExFunction$privateOrPublic, c, name), + _1: { + ctor: '::', + _0: ' ', + _1: { + ctor: '::', + _0: _user$project$Helpers$translateOperator(name), + _1: { + ctor: '::', + _0: '(', + _1: { + ctor: '::', + _0: A2( + _elm_lang$core$String$join, + ', ', + A3( + _elm_lang$core$Basics$flip, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + _user$project$Helpers$generateArguments(missingArgs), + A2( + _elm_lang$core$List$map, + elixirE( + A2(_user$project$ExVariable$rememberVariables, args, c)), + args))), + _1: { + ctor: '::', + _0: ') do', + _1: { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent + 1), + _1: { + ctor: '::', + _0: A2( + elixirE, + A2( + _user$project$ExVariable$rememberVariables, + args, + _user$project$ExContext$indent(c)), + body), + _1: { + ctor: '::', + _0: A2( + _elm_lang$core$String$join, + '', + A2( + _elm_lang$core$List$map, + function (a) { + return A2( + _elm_lang$core$Basics_ops['++'], + '.(', + A2(_elm_lang$core$Basics_ops['++'], a, ')')); + }, + _user$project$Helpers$generateArguments(missingArgs))), + _1: { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'end', + _1: {ctor: '[]'} + } + } + } + } + } + } + } + } + } + } + } + } + }); + case 'Builtin': + if (((_p7._1.ctor === '::') && (_p7._1._1.ctor === '::')) && (_p7._1._1._1.ctor === '[]')) { + var _p9 = _p7._1._1._0; + var _p8 = _p7._1._0; + return A2( + _elm_lang$core$String$join, + '', + { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'def', + _1: { + ctor: '::', + _0: A2(_user$project$ExFunction$privateOrPublic, c, name), + _1: { + ctor: '::', + _0: ' ', + _1: { + ctor: '::', + _0: A2( + elixirE, A2( _user$project$ExVariable$rememberVariables, { ctor: '::', - _0: _p31, + _0: _p8, _1: {ctor: '[]'} }, c), - _p29, - _p33)))))); - } + _p8), + _1: { + ctor: '::', + _0: ' ', + _1: { + ctor: '::', + _0: _user$project$Helpers$translateOperator(name), + _1: { + ctor: '::', + _0: ' ', + _1: { + ctor: '::', + _0: A2( + elixirE, + A2( + _user$project$ExVariable$rememberVariables, + { + ctor: '::', + _0: _p9, + _1: {ctor: '[]'} + }, + c), + _p9), + _1: { + ctor: '::', + _0: ' do', + _1: { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent + 1), + _1: { + ctor: '::', + _0: A2( + elixirE, + A2( + _user$project$ExVariable$rememberVariables, + args, + _user$project$ExContext$indent(c)), + body), + _1: { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'end', + _1: {ctor: '[]'} + } + } + } + } + } + } + } + } + } + } + } + } + } + }); } else { - if (_p27._1.ctor === '[]') { - var _p32 = _p27._0; - return A2( - _user$project$Helpers_ops['=>'], - A2( - _user$project$ExVariable$rememberVariables, - { - ctor: '::', - _0: _p32, - _1: {ctor: '[]'} - }, - c), + return A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + 'operator ', A2( _elm_lang$core$Basics_ops['++'], - A2( - _user$project$ExExpression$elixirE, - _user$project$ExContext$inArgs(c), - _p32), + name, A2( _elm_lang$core$Basics_ops['++'], - ' = ', - A2( - wrapElixirE, - A2( - _user$project$ExVariable$rememberVariables, - { - ctor: '::', - _0: _p32, - _1: {ctor: '[]'} - }, - c), - _p33)))); - } else { - break _v18_3; - } + ' has to have 2 arguments but has ', + _elm_lang$core$Basics$toString(args))))); } - } else { - break _v18_3; - } - } while(false); - return A2(_user$project$Helpers_ops['=>'], c, ''); - }); -var _user$project$ExExpression$lambda = F3( - function (c, args, body) { - var _p35 = args; - if (_p35.ctor === '::') { - var _p36 = _p35._0; - return A2( - _elm_lang$core$Basics_ops['++'], - 'fn ', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _user$project$ExExpression$elixirE, - _user$project$ExContext$inArgs(c), - _p36), - A2( - _elm_lang$core$Basics_ops['++'], - ' -> ', - A2( - _elm_lang$core$Basics_ops['++'], - A3( - _user$project$ExExpression$lambda, - A2( - _user$project$ExVariable$rememberVariables, - { + default: + var missing = _user$project$Helpers$generateArguments(missingArgs); + var wrapIfMiss = function (s) { + return (_elm_lang$core$Native_Utils.cmp( + _elm_lang$core$List$length(missing), + 0) > 0) ? s : ''; + }; + var missingVarargs = A2( + _elm_lang$core$List$map, + function (_p10) { + return _Bogdanp$elm_ast$Ast_Expression$Variable( + _elm_lang$core$List$singleton(_p10)); + }, + missing); + return A2( + _elm_lang$core$String$join, + '', + { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'def', + _1: { + ctor: '::', + _0: A2(_user$project$ExFunction$privateOrPublic, c, name), + _1: { + ctor: '::', + _0: ' ', + _1: { ctor: '::', - _0: _p36, - _1: {ctor: '[]'} - }, - c), - _p35._1, - body), - ' end')))); - } else { - return A2(_user$project$ExExpression$elixirE, c, body); - } - }); -var _user$project$ExExpression$tupleOrFunction = F2( - function (c, a) { - var _p37 = _user$project$ExExpression$flattenTypeApplication(a); - _v20_9: - do { - _v20_8: - do { - if (_p37.ctor === '::') { - switch (_p37._0.ctor) { - case 'Application': - if (_p37._1.ctor === '[]') { - return A3(_user$project$ExExpression$functionApplication, c, _p37._0._0, _p37._0._1); - } else { - break _v20_9; - } - case 'Variable': - if ((_p37._0._0.ctor === '::') && (_p37._0._0._1.ctor === '[]')) { - switch (_p37._0._0._0) { - case 'ffi': - return _elm_lang$core$Native_Utils.crashCase( - 'ExExpression', - { - start: {line: 443, column: 5}, - end: {line: 489, column: 70} - }, - _p37)('Ffi inside function body is deprecated since Elchemy 0.3'); - case 'tryFfi': - return _elm_lang$core$Native_Utils.crashCase( - 'ExExpression', - { - start: {line: 443, column: 5}, - end: {line: 489, column: 70} - }, - _p37)('tryFfi inside function body is deprecated since Elchemy 0.3'); - case 'lffi': - return _elm_lang$core$Native_Utils.crashCase( - 'ExExpression', - { - start: {line: 443, column: 5}, - end: {line: 489, column: 70} - }, - _p37)('Lffi inside function body is deprecated since Elchemy 0.3'); - case 'flambda': - return _elm_lang$core$Native_Utils.crashCase( - 'ExExpression', - { - start: {line: 443, column: 5}, - end: {line: 489, column: 70} - }, - _p37)('Flambda is deprecated since Elchemy 0.3'); - case 'Just': - if ((_p37._1.ctor === '::') && (_p37._1._1.ctor === '[]')) { - return A2( - _elm_lang$core$Basics_ops['++'], - '{', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, _p37._1._0), - '}')); - } else { - break _v20_8; - } - case 'Ok': - if ((_p37._1.ctor === '::') && (_p37._1._1.ctor === '[]')) { - return A2( - _elm_lang$core$Basics_ops['++'], - '{:ok, ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, _p37._1._0), - '}')); - } else { - break _v20_8; - } - case 'Err': - if ((_p37._1.ctor === '::') && (_p37._1._1.ctor === '[]')) { - return A2( - _elm_lang$core$Basics_ops['++'], - '{:error, ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, _p37._1._0), - '}')); - } else { - break _v20_8; + _0: A2(_user$project$Helpers$toSnakeCase, true, name), + _1: { + ctor: '::', + _0: '(', + _1: { + ctor: '::', + _0: A2( + _elm_lang$core$String$join, + ', ', + A2( + _elm_lang$core$List$map, + elixirE( + _user$project$ExContext$inArgs(c)), + A2(_elm_lang$core$Basics_ops['++'], args, missingVarargs))), + _1: { + ctor: '::', + _0: ') do', + _1: { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent + 1), + _1: { + ctor: '::', + _0: wrapIfMiss('('), + _1: { + ctor: '::', + _0: A2( + elixirE, + A2( + _user$project$ExVariable$rememberVariables, + A2(_elm_lang$core$Basics_ops['++'], args, missingVarargs), + _user$project$ExContext$indent(c)), + body), + _1: { + ctor: '::', + _0: wrapIfMiss(')'), + _1: { + ctor: '::', + _0: A2( + _elm_lang$core$String$join, + '', + A2( + _elm_lang$core$List$map, + function (a) { + return A2( + _elm_lang$core$Basics_ops['++'], + '.(', + A2(_elm_lang$core$Basics_ops['++'], a, ')')); + }, + missing)), + _1: { + ctor: '::', + _0: _user$project$Helpers$ind(c.indent), + _1: { + ctor: '::', + _0: 'end', + _1: {ctor: '[]'} + } + } + } + } + } + } + } + } + } } - default: - break _v20_8; + } } - } else { - break _v20_8; } - default: - break _v20_9; - } - } else { - break _v20_9; - } - } while(false); - var _p45 = _p37._1; - return A2( - _elm_lang$core$Maybe$withDefault, - function (_p42) { - var _p43 = _p42; - var _p44 = _p43._1; - return A2( - _elm_lang$core$Maybe$withDefault, - A2( - _elm_lang$core$Basics_ops['++'], - '{', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _user$project$ExExpression$elixirE, - c, - _Bogdanp$elm_ast$Ast_Expression$Variable( - { - ctor: '::', - _0: _p44, - _1: {ctor: '[]'} - })), - A2( - _elm_lang$core$Basics_ops['++'], - ', ', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - _user$project$ExExpression$elixirE(c), - _p45)), - '}')))), - A3( - _user$project$ExExpression$aliasFor, - A2(_user$project$ExContext$changeCurrentModule, _p43._0, c), - _p44, - _p45)); - }( - A2(_user$project$Helpers$moduleAccess, c.mod, _p37._0._0)), - A2( - _elm_lang$core$Maybe$map, - _user$project$ExExpression$encodeAccessMacroAndRest(c), - A2(_user$project$ExSelector$maybeAccessMacro, _p37._0, _p45))); - } while(false); - return _elm_lang$core$Native_Utils.crashCase( - 'ExExpression', - { - start: {line: 443, column: 5}, - end: {line: 489, column: 70} + } + }); + } + }); +var _user$project$ExFunction$genOverloadedFunctionDefinition = F6( + function (c, elixirE, name, args, body, expressions) { + var pairAsArgs = function (asArgs) { + return A3( + _elm_lang$core$List$map2, + _elm_lang$core$Basics$flip( + _Bogdanp$elm_ast$Ast_Expression$BinOp( + _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: 'as', + _1: {ctor: '[]'} + }))), + args, + asArgs); + }; + var typeDef = A2( + _elm_lang$core$Maybe$andThen, + function (_p11) { + return A2( + _elm_lang$core$Dict$get, + name, + function (_) { + return _.definitions; + }(_p11)); }, - _p37)( + A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)); + var arity = A2( + _elm_lang$core$Maybe$withDefault, + 0, A2( - _elm_lang$core$Basics_ops['++'], - 'Shouldn\'t ever work for', - _elm_lang$core$Basics$toString(_p37))); - }); -var _user$project$ExExpression$aliasFor = F3( - function (c, name, rest) { - return A2( - _user$project$Helpers$maybeOr, - A3(_user$project$ExExpression$typeAliasApplication, c, name, rest), - A3(_user$project$ExExpression$typeApplication, c, name, rest)); - }); -var _user$project$ExExpression$typeAliasApplication = F3( - function (c, name, args) { - return A2( - _elm_lang$core$Maybe$map, - _user$project$ExExpression$elixirE(c), + _elm_lang$core$Maybe$map, + function (_) { + return _.arity; + }, + typeDef)); + var caseBranch = function (_p12) { + var _p13 = _p12; + var _p17 = _p13._1; + var _p16 = _p13._0; + var _p14 = _p16; + if (_p14.ctor === 'Tuple') { + var _p15 = _p14._0; + return A6( + _user$project$ExFunction$genElixirFunc, + c, + elixirE, + name, + pairAsArgs(_p15), + arity - _elm_lang$core$List$length( + pairAsArgs(_p15)), + _p17); + } else { + return A6( + _user$project$ExFunction$genElixirFunc, + c, + elixirE, + name, + pairAsArgs( + { + ctor: '::', + _0: _p16, + _1: {ctor: '[]'} + }), + arity - 1, + _p17); + } + }; + var lambdasAt = _user$project$ExFunction$getLambdaArgumentIndexes( A2( - _elm_lang$core$Maybe$andThen, - _user$project$ExType$typeAliasConstructor(args), - A2( - _elm_lang$core$Maybe$andThen, - _user$project$ExExpression$filterTypeAlias, - A3(_user$project$ExContext$getAlias, c.mod, name, c)))); - }); -var _user$project$ExExpression$typeApplication = F3( - function (c, name, args) { - return _elm_lang$core$Maybe$map( - function (_p47) { - var _p48 = _p47; - var _p50 = _p48.arity; - var len = _elm_lang$core$List$length(args); - var dif = _p50 - len; - var $arguments = _user$project$Helpers$generateArguments(dif); - var varArgs = A2( - _elm_lang$core$List$map, - function (_p49) { - return _Bogdanp$elm_ast$Ast_Expression$Variable( - _elm_lang$core$List$singleton(_p49)); - }, - $arguments); - return _elm_lang$core$Native_Utils.eq(_p50, 0) ? _user$project$Helpers$atomize(name) : ((_elm_lang$core$Native_Utils.cmp(dif, 0) > -1) ? A3( - _elm_lang$core$Basics$flip, + _elm_lang$core$Maybe$map, + function (_) { + return _.def; + }, + typeDef)); + return A3(_user$project$ExContext$hasFlag, 'nodef', name, c) ? A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt) : A2( + _elm_lang$core$Basics_ops['++'], + A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt), + A3( + _elm_lang$core$Basics$flip, + F2( + function (x, y) { + return A2(_elm_lang$core$Basics_ops['++'], x, y); + }), + '\n', + A3( + _elm_lang$core$List$foldr, F2( function (x, y) { return A2(_elm_lang$core$Basics_ops['++'], x, y); }), - A2(_elm_lang$core$String$repeat, dif, ' end'), - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - '', - A2( - _elm_lang$core$List$map, - A2( - _elm_lang$core$Basics$flip, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - }), - ' -> '), - A2( - _elm_lang$core$List$map, - F2( - function (x, y) { - return A2(_elm_lang$core$Basics_ops['++'], x, y); - })('fn '), - $arguments))), - A2( - _elm_lang$core$Basics_ops['++'], - '{', - A2( + '', + A2(_elm_lang$core$List$map, caseBranch, expressions)))); + }); +var _user$project$ExFunction$genFunctionDefinition = F5( + function (c, elixirE, name, args, body) { + var typeDef = A2( + _elm_lang$core$Maybe$andThen, + function (_p18) { + return A2( + _elm_lang$core$Dict$get, + name, + function (_) { + return _.definitions; + }(_p18)); + }, + A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)); + var arity = A2( + _elm_lang$core$Maybe$withDefault, + 0, + A2( + _elm_lang$core$Maybe$map, + function (_) { + return _.arity; + }, + typeDef)); + var lambdasAt = _user$project$ExFunction$getLambdaArgumentIndexes( + A2( + _elm_lang$core$Maybe$map, + function (_) { + return _.def; + }, + typeDef)); + return A3(_user$project$ExContext$hasFlag, 'nodef', name, c) ? A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt) : A2( + _elm_lang$core$Basics_ops['++'], + A5(_user$project$ExFunction$functionCurry, c, elixirE, name, arity, lambdasAt), + A2( + _elm_lang$core$Basics_ops['++'], + A6( + _user$project$ExFunction$genElixirFunc, + c, + elixirE, + name, + args, + arity - _elm_lang$core$List$length(args), + body), + '\n')); + }); + +var _user$project$ExFfi$resolveFfi = F3( + function (c, elixirE, ffi) { + var combineComas = function (args) { + return A2( + _elm_lang$core$String$join, + ',', + A2( + _elm_lang$core$List$map, + elixirE(c), + args)); + }; + var _p0 = ffi; + _v0_9: + do { + switch (_p0.ctor) { + case 'TryFfi': + if ((_p0._0.ctor === 'String') && (_p0._1.ctor === 'String')) { + if (_p0._2.ctor === 'Tuple') { + return A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$atomize(name), + 'try_catch fn _ -> ', A2( _elm_lang$core$Basics_ops['++'], - ', ', + _p0._0._0, A2( _elm_lang$core$Basics_ops['++'], + '.', A2( - _elm_lang$core$String$join, - ', ', + _elm_lang$core$Basics_ops['++'], + _p0._1._0, A2( - _elm_lang$core$List$map, - _user$project$ExExpression$elixirE( - A2(_user$project$ExVariable$rememberVariables, varArgs, c)), - A2(_elm_lang$core$Basics_ops['++'], args, varArgs))), - '}')))))) : _elm_lang$core$Native_Utils.crash( - 'ExExpression', - { - start: {line: 558, column: 29}, - end: {line: 558, column: 40} - })( - A2( - _elm_lang$core$Basics_ops['++'], - 'Expected ', - A2( - _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(_p50), - A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + combineComas(_p0._2._0), + A2(_elm_lang$core$Basics_ops['++'], ')', ' end'))))))); + } else { + return A2( _elm_lang$core$Basics_ops['++'], - ' arguments for \'', + 'try_catch fn _ -> ', A2( _elm_lang$core$Basics_ops['++'], - name, + _p0._0._0, A2( _elm_lang$core$Basics_ops['++'], - '\'. Got: ', - _elm_lang$core$Basics$toString( - _elm_lang$core$List$length(args))))))))); - })( - A3(_user$project$ExContext$getType, c.mod, name, c)); - }); -var _user$project$ExExpression$encodeAccessMacroAndRest = F2( - function (c, _p51) { - var _p52 = _p51; - var _p57 = _p52._1; - var encodedRest = function () { - var _p53 = _p57; - if (_p53.ctor === '[]') { - return ''; - } else { - return A2( - _elm_lang$core$Basics_ops['++'], - '.(', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ').(', - A2( - _elm_lang$core$List$map, - _user$project$ExExpression$elixirE(c), - _p57)), - ')')); - } - }(); - var encodedType = function () { - var _p54 = _p52._0._0; - switch (_p54.ctor) { - case 'Update': - return 'update_in_'; - case 'Get': - return 'get_in_'; - default: - return 'put_in_'; - } - }(); - var encodeSelector = function (_p55) { - var _p56 = _p55; - return A2( - _elm_lang$core$Basics_ops['++'], - ':', - A2(_user$project$Helpers$toSnakeCase, true, _p56._0)); - }; - var encodedSelectors = A2( - _elm_lang$core$String$join, - ', ', - A2(_elm_lang$core$List$map, encodeSelector, _p52._0._2)); - return A2( - _elm_lang$core$Basics_ops['++'], - encodedType, - A2( - _elm_lang$core$Basics_ops['++'], - '([', - A2( - _elm_lang$core$Basics_ops['++'], - encodedSelectors, - A2(_elm_lang$core$Basics_ops['++'], '])', encodedRest)))); - }); -var _user$project$ExExpression$functionApplication = F3( - function (c, left, right) { - var reduceArgs = F3( - function (c, args, separator) { - return A2( - _elm_lang$core$String$join, - separator, - A2( - _elm_lang$core$List$map, - _user$project$ExExpression$elixirE(c), - args)); - }); - var _p58 = _user$project$Helpers$applicationToList( - A2(_Bogdanp$elm_ast$Ast_Expression$Application, left, right)); - _v27_2: - do { - if (_p58.ctor === '::') { - switch (_p58._0.ctor) { - case 'Variable': - if ((_p58._0._0.ctor === '::') && (_p58._0._0._1.ctor === '[]')) { - var _p60 = _p58._0._0._0; - var _p59 = _p58._1; - return A4(_user$project$ExContext$areMatchingArity, c, c.mod, _p60, _p59) ? A2( + '.', + A2( + _elm_lang$core$Basics_ops['++'], + _p0._1._0, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, _p0._2), + A2(_elm_lang$core$Basics_ops['++'], ')', ' end'))))))); + } + } else { + break _v0_9; + } + case 'Ffi': + if ((_p0._0.ctor === 'String') && (_p0._1.ctor === 'String')) { + if (_p0._2.ctor === 'Tuple') { + return A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p60), + _p0._0._0, A2( _elm_lang$core$Basics_ops['++'], - '(', + '.', A2( _elm_lang$core$Basics_ops['++'], - A3(reduceArgs, c, _p59, ', '), - ')'))) : A2( + _p0._1._0, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + combineComas(_p0._2._0), + ')'))))); + } else { + return A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, left), + _p0._0._0, A2( _elm_lang$core$Basics_ops['++'], - '.(', + '.', A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, right), - ')'))); - } else { - break _v27_2; + _p0._1._0, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, _p0._2), + ')'))))); } - case 'Access': - if (((_p58._0._0.ctor === 'Variable') && (_p58._0._1.ctor === '::')) && (_p58._0._1._1.ctor === '[]')) { - var _p62 = _p58._0._1._0; - var _p61 = _p58._1; - var fnName = A2(_user$project$Helpers$toSnakeCase, true, _p62); - var mod = _user$project$Helpers$modulePath(_p58._0._0._0); - return A4(_user$project$ExContext$areMatchingArity, c, mod, _p62, _p61) ? A2( + } else { + break _v0_9; + } + case 'Macro': + if ((_p0._0.ctor === 'String') && (_p0._1.ctor === 'String')) { + if (_p0._2.ctor === 'Tuple') { + return A2( _elm_lang$core$Basics_ops['++'], - mod, + _p0._0._0, A2( _elm_lang$core$Basics_ops['++'], '.', A2( _elm_lang$core$Basics_ops['++'], - fnName, + _p0._1._0, A2( _elm_lang$core$Basics_ops['++'], '(', A2( _elm_lang$core$Basics_ops['++'], - A3(reduceArgs, c, _p61, ', '), - ')'))))) : A2( + combineComas(_p0._2._0), + ')'))))); + } else { + return A2( _elm_lang$core$Basics_ops['++'], - mod, + _p0._0._0, A2( _elm_lang$core$Basics_ops['++'], '.', A2( _elm_lang$core$Basics_ops['++'], - fnName, + _p0._1._0, A2( _elm_lang$core$Basics_ops['++'], - '().(', + '(', A2( _elm_lang$core$Basics_ops['++'], - A3(reduceArgs, c, _p61, ').('), + A2(elixirE, c, _p0._2), ')'))))); - } else { - break _v27_2; } - default: - break _v27_2; - } - } else { - break _v27_2; - } - } while(false); - return A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, left), - A2( - _elm_lang$core$Basics_ops['++'], - '.(', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$ExExpression$elixirE, c, right), - ')'))); - }); -var _user$project$ExExpression$elixirLetInMutualFunctions = F2( - function (context, expressionsList) { - var letBranchToLambda = F2( - function (c, _p63) { - var _p64 = _p63; - var _p68 = _p64._0; - var _p67 = _p64._1; - var _p65 = _user$project$Helpers$applicationToList(_p68); - if (_p65.ctor === '[]') { - return ''; - } else { - if (_p65._1.ctor === '[]') { - return A2(_user$project$ExExpression$elixirE, c, _p67); } else { - if (((_p65._0.ctor === 'Variable') && (_p65._0._0.ctor === '::')) && (_p65._0._0._1.ctor === '[]')) { - return A3(_user$project$ExExpression$lambda, c, _p65._1, _p67); + break _v0_9; + } + case 'Lffi': + if (_p0._0.ctor === 'String') { + if (_p0._1.ctor === 'Tuple') { + return A2( + _elm_lang$core$Basics_ops['++'], + _p0._0._0, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + combineComas(_p0._1._0), + ')'))); } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExExpression', - { - start: {line: 152, column: 13}, - end: {line: 163, column: 78} - }, - _p65)( + return A2( + _elm_lang$core$Basics_ops['++'], + _p0._0._0, A2( _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(_p68), - ' is not a let in branch')); + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, _p0._1), + ')'))); } + } else { + break _v0_9; } - } - }); - var names = A2( - _elm_lang$core$List$map, - function (_p69) { - return A2( - _user$project$Helpers$toSnakeCase, - true, - _user$project$ExVariable$extractName( - _elm_lang$core$Tuple$first(_p69))); - }, - expressionsList); - var vars = A2(_elm_lang$core$List$map, _elm_lang$core$Tuple$first, expressionsList); - var c = A2(_user$project$ExVariable$rememberVariables, vars, context); - return A2( - _user$project$Helpers_ops['=>'], - c, - A2( - _elm_lang$core$Basics_ops['++'], - '{', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_elm_lang$core$String$join, ', ', names), - A2( + default: + var args = _user$project$Helpers$generateArguments(_p0._0); + return A2( _elm_lang$core$Basics_ops['++'], - '} = let [', + 'fn (', A2( _elm_lang$core$Basics_ops['++'], + A2(_elm_lang$core$String$join, ',', args), A2( - _elm_lang$core$String$join, - ',', + _elm_lang$core$Basics_ops['++'], + ') -> ', A2( - _elm_lang$core$List$map, - function (_p70) { - var _p71 = _p70; - return A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent + 1), - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p71._0), - A2(_elm_lang$core$Basics_ops['++'], ': ', _p71._1))); - }, + _elm_lang$core$Basics_ops['++'], + A2(elixirE, c, _p0._1), A2( - _elm_lang$core$List$map, - _elm_lang$core$Tuple$mapSecond( - letBranchToLambda( - _user$project$ExContext$indent(c))), + _elm_lang$core$Basics_ops['++'], A2( - _elm_lang$core$List$map, - function (_p72) { - var _p73 = _p72; - return { - ctor: '_Tuple2', - _0: _user$project$ExVariable$extractName(_p73._0), - _1: _p73 - }; - }, - expressionsList)))), - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - ']')))))); + _elm_lang$core$String$join, + '', + A2( + _elm_lang$core$List$map, + function (a) { + return A2( + _elm_lang$core$Basics_ops['++'], + '.(', + A2(_elm_lang$core$Basics_ops['++'], a, ')')); + }, + args)), + ' end'))))); + } + } while(false); + return A2(_user$project$ExContext$crash, c, 'Wrong ffi call'); }); -var _user$project$ExExpression$elixirPrimitve = F2( - function (c, e) { - var _p74 = e; - switch (_p74.ctor) { - case 'Integer': - return _elm_lang$core$Basics$toString(_p74._0); - case 'Float': - var name = _elm_lang$core$Basics$toString(_p74._0); - return A2(_elm_lang$core$String$contains, '.', name) ? name : A2(_elm_lang$core$Basics_ops['++'], name, '.0'); - case 'Character': - var _p75 = _p74._0; - switch (_p75.valueOf()) { - case ' ': - return '?\\s'; - case '\n': - return '?\\n'; - case '\r': - return '?\\r'; - case '\t': - return '?\\t'; - case '\\': - return '?\\\\'; - case '': - return '?\\0'; - default: +var _user$project$ExFfi$Macro = F3( + function (a, b, c) { + return {ctor: 'Macro', _0: a, _1: b, _2: c}; + }); +var _user$project$ExFfi$Flambda = F2( + function (a, b) { + return {ctor: 'Flambda', _0: a, _1: b}; + }); +var _user$project$ExFfi$uncurrify = F3( + function (c, elixirE, argTypes) { + var arity = _elm_lang$core$List$length(argTypes) - 1; + var indexes = A2(_elm_lang$core$List$range, 1, arity); + return A2( + _elm_lang$core$List$map, + function (_p1) { + var _p2 = _p1; + var _p4 = _p2._0; + var _p3 = _p2._1; + if (_p3.ctor === '[]') { + return A2(_user$project$ExContext$crash, c, 'Impossible'); + } else { + if (_p3._1.ctor === '[]') { return A2( _elm_lang$core$Basics_ops['++'], - '?', - _elm_lang$core$String$fromChar(_p75)); + 'a', + _elm_lang$core$Basics$toString(_p4)); + } else { + var makeFlambda = _user$project$ExFfi$Flambda( + _elm_lang$core$List$length(_p3) - 1); + var $var = _Bogdanp$elm_ast$Ast_Expression$Variable( + { + ctor: '::', + _0: A2( + _elm_lang$core$Basics_ops['++'], + 'a', + _elm_lang$core$Basics$toString(_p4)), + _1: {ctor: '[]'} + }); + return A3( + _user$project$ExFfi$resolveFfi, + c, + elixirE, + makeFlambda($var)); + } } - case 'String': - return A2( - _elm_lang$core$Basics_ops['++'], - '\"', - A2(_elm_lang$core$Basics_ops['++'], _p74._0, '\"')); - case 'List': - return A2( - _elm_lang$core$Basics_ops['++'], - '[', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - _user$project$ExExpression$elixirE(c), - _p74._0)), - ']')); - case 'Tuple': - return A2( - _elm_lang$core$Basics_ops['++'], - '{', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - _user$project$ExExpression$elixirE(c), - _p74._0)), - '}')); - case 'Record': + }, + A3( + _elm_lang$core$List$map2, + F2( + function (v0, v1) { + return {ctor: '_Tuple2', _0: v0, _1: v1}; + }), + indexes, + argTypes)); + }); +var _user$project$ExFfi$generateFfi = F5( + function (c, elixirE, name, argTypes, e) { + var wrapAllInVar = _elm_lang$core$List$map( + function (_p5) { + return _Bogdanp$elm_ast$Ast_Expression$Variable( + _elm_lang$core$List$singleton(_p5)); + }); + var uncurryArguments = function (c) { + return A3(_user$project$ExFfi$uncurrify, c, elixirE, argTypes); + }; + var appList = _user$project$Helpers$applicationToList(e); + var typeDef = A2( + _elm_lang$core$Maybe$andThen, + function (_p6) { return A2( - _elm_lang$core$Basics_ops['++'], - '%{', - A2( - _elm_lang$core$Basics_ops['++'], - A2( - _elm_lang$core$String$join, - ', ', - A2( - _elm_lang$core$List$map, - function (_p76) { - var _p77 = _p76; - return A2( + _elm_lang$core$Dict$get, + name, + function (_) { + return _.definitions; + }(_p6)); + }, + A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)); + var _p7 = { + ctor: '_Tuple2', + _0: typeDef, + _1: _user$project$Helpers$applicationToList(e) + }; + _v3_5: + do { + if (_p7.ctor === '_Tuple2') { + if (_p7._0.ctor === 'Nothing') { + if ((((_p7._1.ctor === '::') && (_p7._1._0.ctor === 'Variable')) && (_p7._1._0._0.ctor === '::')) && (_p7._1._0._0._1.ctor === '[]')) { + switch (_p7._1._0._0._0) { + case 'ffi': + return A2(_user$project$ExContext$crash, c, 'Ffi requires type definition'); + case 'macro': + return A2(_user$project$ExContext$crash, c, 'Macro requires type definition'); + default: + break _v3_5; + } + } else { + break _v3_5; + } + } else { + if (((((((((_p7._1.ctor === '::') && (_p7._1._0.ctor === 'Variable')) && (_p7._1._0._0.ctor === '::')) && (_p7._1._0._0._1.ctor === '[]')) && (_p7._1._1.ctor === '::')) && (_p7._1._1._0.ctor === 'String')) && (_p7._1._1._1.ctor === '::')) && (_p7._1._1._1._0.ctor === 'String')) && (_p7._1._1._1._1.ctor === '[]')) { + switch (_p7._1._0._0._0) { + case 'ffi': + var _p10 = _p7._1._1._0._0; + var _p9 = _p7._1._1._1._0._0; + var _p8 = _p7._0._0; + var $arguments = A2(_user$project$Helpers$generateArguments_, 'a', _p8.arity); + return A2( + _elm_lang$core$Basics_ops['++'], + A5( + _user$project$ExFunction$functionCurry, + c, + elixirE, + name, + _p8.arity, + {ctor: '[]'}), + A2( + _elm_lang$core$Basics_ops['++'], + A4( + _user$project$ExContext$onlyWithoutFlag, + c, + 'noverify', + name, + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + A2( + _elm_lang$core$Basics_ops['++'], + 'verify as: ', + A2( + _elm_lang$core$Basics_ops['++'], + _p10, + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2( + _elm_lang$core$Basics_ops['++'], + _p9, + A2( + _elm_lang$core$Basics_ops['++'], + '/', + _elm_lang$core$Basics$toString(_p8.arity)))))))), + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + A2( + _elm_lang$core$Basics_ops['++'], + 'def', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExFunction$privateOrPublic, c, name), + A2( + _elm_lang$core$Basics_ops['++'], + ' ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, name), + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_elm_lang$core$String$join, ', ', $arguments), + A2( + _elm_lang$core$Basics_ops['++'], + ')', + A2( + _elm_lang$core$Basics_ops['++'], + ', do: ', + A2( + _elm_lang$core$Basics_ops['++'], + _p10, + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2( + _elm_lang$core$Basics_ops['++'], + _p9, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + uncurryArguments( + A2( + _user$project$ExVariable$rememberVariables, + wrapAllInVar($arguments), + c))), + ')')))))))))))))))); + case 'macro': + var _p11 = _p7._0._0; + var $arguments = A2(_user$project$Helpers$generateArguments_, 'a', _p11.arity); + var varArgs = wrapAllInVar($arguments); + return A2( + _user$project$ExType$hasReturnedType, + A2( + _Bogdanp$elm_ast$Ast_Statement$TypeConstructor, + { + ctor: '::', + _0: 'Macro', + _1: {ctor: '[]'} + }, + {ctor: '[]'}), + _p11.def) ? A2( + _elm_lang$core$Basics_ops['++'], + 'defmacro', + A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p77._0), + A2(_user$project$ExFunction$privateOrPublic, c, name), A2( _elm_lang$core$Basics_ops['++'], - ': ', - A2(_user$project$ExExpression$elixirE, c, _p77._1))); - }, - _p74._0)), - '}')); - default: - return A2(_user$project$Helpers$notImplemented, 'expression', e); - } - }); -var _user$project$ExExpression$handleIfExp = F2( - function (c, e) { - var _p78 = e; - if (_p78.ctor === 'If') { - return A2( - _elm_lang$core$Basics_ops['++'], - { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: A2( - _user$project$ExExpression$elixirE, - _user$project$ExContext$indent(c), - _p78._0), - _1: { - ctor: '::', - _0: ' -> ', - _1: { - ctor: '::', - _0: A2( - _user$project$ExExpression$elixirE, - _user$project$ExContext$indent(c), - _p78._1), - _1: {ctor: '[]'} - } + ' ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, name), + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_elm_lang$core$String$join, ', ', $arguments), + A2( + _elm_lang$core$Basics_ops['++'], + ')', + A2( + _elm_lang$core$Basics_ops['++'], + ', do: ', + A2( + _elm_lang$core$Basics_ops['++'], + _p7._1._1._0._0, + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2( + _elm_lang$core$Basics_ops['++'], + _p7._1._1._1._0._0, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + A2( + _elm_lang$core$List$map, + elixirE( + A2(_user$project$ExVariable$rememberVariables, varArgs, c)), + varArgs)), + ')'))))))))))))) : A2(_user$project$ExContext$crash, c, 'Macro calls have to return a Macro type'); + case 'tryFfi': + var _p12 = _p7._0._0; + var $arguments = A2(_user$project$Helpers$generateArguments_, 'a', _p12.arity); + return A2( + _elm_lang$core$Basics_ops['++'], + A5( + _user$project$ExFunction$functionCurry, + c, + elixirE, + name, + _p12.arity, + {ctor: '[]'}), + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + A2( + _elm_lang$core$Basics_ops['++'], + 'def', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$ExFunction$privateOrPublic, c, name), + A2( + _elm_lang$core$Basics_ops['++'], + ' ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, name), + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + A2(_user$project$Helpers$generateArguments_, 'a', _p12.arity)), + A2( + _elm_lang$core$Basics_ops['++'], + ')', + A2( + _elm_lang$core$Basics_ops['++'], + ' do ', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 1), + A2( + _elm_lang$core$Basics_ops['++'], + 'try_catch fn -> ', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 2), + A2( + _elm_lang$core$Basics_ops['++'], + _p7._1._1._0._0, + A2( + _elm_lang$core$Basics_ops['++'], + '.', + A2( + _elm_lang$core$Basics_ops['++'], + _p7._1._1._1._0._0, + A2( + _elm_lang$core$Basics_ops['++'], + '(', + A2( + _elm_lang$core$Basics_ops['++'], + A2( + _elm_lang$core$String$join, + ', ', + uncurryArguments( + A2( + _user$project$ExVariable$rememberVariables, + wrapAllInVar($arguments), + c))), + A2( + _elm_lang$core$Basics_ops['++'], + ')', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 1), + A2( + _elm_lang$core$Basics_ops['++'], + 'end', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent), + 'end')))))))))))))))))))))); + default: + break _v3_5; } - } - }, - A2(_user$project$ExExpression$handleIfExp, c, _p78._2)); - } else { - return { - ctor: '::', - _0: _user$project$Helpers$ind(c.indent), - _1: { - ctor: '::', - _0: 'true -> ', - _1: { - ctor: '::', - _0: A2( - _user$project$ExExpression$elixirE, - _user$project$ExContext$indent(c), - e), - _1: {ctor: '[]'} + } else { + break _v3_5; } } - }; - } - }); -var _user$project$ExExpression$elixirVariable = F2( - function (c, $var) { - var _p79 = $var; - _v36_8: - do { - if (_p79.ctor === '[]') { - return ''; } else { - if (_p79._1.ctor === '[]') { - switch (_p79._0) { - case '()': - return '{}'; - case 'Nothing': - return 'nil'; - case 'Just': - return 'fn x1 -> {x1} end'; - case 'Err': - return 'fn x1 -> {:error, x1} end'; - case 'Ok': - return 'fn x1 -> {:ok, x1} end'; - case 'curry': - return 'curried()'; - case 'uncurry': - return 'uncurried()'; - default: - break _v36_8; - } - } else { - break _v36_8; - } + break _v3_5; } } while(false); - return function (_p80) { - var _p81 = _p80; - var _p83 = _p81._1; - if (_user$project$Helpers$isCapitilzed(_p83)) { - return A2( - _elm_lang$core$Maybe$withDefault, - _user$project$Helpers$atomize(_p83), - A3( - _user$project$ExExpression$aliasFor, - A2(_user$project$ExContext$changeCurrentModule, _p81._0, c), - _p83, - {ctor: '[]'})); - } else { - if (A2(_elm_lang$core$String$startsWith, '@', _p83)) { - return _user$project$Helpers$atomize( - A2(_elm_lang$core$String$dropLeft, 1, _p83)); - } else { - var _p82 = _user$project$Helpers$operatorType(_p83); - switch (_p82.ctor) { - case 'Builtin': - return _elm_lang$core$Native_Utils.eq(_p83, '<|') ? 'flip().((&|>/0).())' : A2( - _elm_lang$core$Basics_ops['++'], - '(&XBasics.', - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$translateOperator(_p83), - '/0).()')); - case 'Custom': - return _user$project$Helpers$translateOperator(_p83); - default: - return A2( - _user$project$ExVariable$varOrNah, - c, - A2(_user$project$Helpers$toSnakeCase, true, _p83)); - } - } - } - }( - A2(_user$project$Helpers$moduleAccess, c.mod, _p79)); + return A2(_user$project$ExContext$crash, c, 'Wrong ffi definition'); + }); +var _user$project$ExFfi$TryFfi = F3( + function (a, b, c) { + return {ctor: 'TryFfi', _0: a, _1: b, _2: c}; + }); +var _user$project$ExFfi$Ffi = F3( + function (a, b, c) { + return {ctor: 'Ffi', _0: a, _1: b, _2: c}; + }); +var _user$project$ExFfi$Lffi = F2( + function (a, b) { + return {ctor: 'Lffi', _0: a, _1: b}; }); var _user$project$ExStatement$maybeDoctest = F3( @@ -18778,57 +19252,98 @@ var _user$project$ExStatement$exportSetToList = function (exp) { _0: _p2._0, _1: {ctor: '[]'} }; + case 'AllExport': + return {ctor: '[]'}; default: - return _elm_lang$core$Native_Utils.crashCase( - 'ExStatement', - { - start: {line: 481, column: 5}, - end: {line: 489, column: 62} - }, - _p2)( - A2( - _elm_lang$core$Basics_ops['++'], - 'You can\'t export ', - _elm_lang$core$Basics$toString(exp))); + return {ctor: '[]'}; } }; -var _user$project$ExStatement$verifyFlag = function (flag) { - var _p4 = flag; - _v2_2: - do { - if (_p4.ctor === '::') { - if (_p4._1.ctor === '::') { - if (_p4._1._1.ctor === '[]') { - return _elm_lang$core$Maybe$Just( - {ctor: '_Tuple2', _0: _p4._0, _1: _p4._1._0}); +var _user$project$ExStatement$verifyFlag = F2( + function (c, flag) { + var _p3 = flag; + _v2_2: + do { + if (_p3.ctor === '::') { + if (_p3._1.ctor === '::') { + if (_p3._1._1.ctor === '[]') { + return _elm_lang$core$Maybe$Just( + {ctor: '_Tuple2', _0: _p3._0, _1: _p3._1._0}); + } else { + break _v2_2; + } } else { - break _v2_2; + if (_p3._0 === '') { + return _elm_lang$core$Maybe$Nothing; + } else { + break _v2_2; + } } } else { - if (_p4._0 === '') { - return _elm_lang$core$Maybe$Nothing; - } else { - break _v2_2; - } + break _v2_2; } - } else { - break _v2_2; - } - } while(false); - return _elm_lang$core$Native_Utils.crashCase( - 'ExStatement', - { - start: {line: 368, column: 5}, - end: {line: 376, column: 62} - }, - _p4)( - A2( - _elm_lang$core$Basics_ops['++'], - 'Wrong flag format ', - _elm_lang$core$Basics$toString(_p4))); -}; -var _user$project$ExStatement$insertImportedTypes = F3( + } while(false); + return A2( + _user$project$ExContext$crash, + c, + A2( + _elm_lang$core$Basics_ops['++'], + 'Wrong flag format ', + _elm_lang$core$Basics$toString(_p3))); + }); +var _user$project$ExStatement$insertImports = F3( function (mod, subset, c) { + var importedFunctions = function (subset) { + var _p4 = subset; + switch (_p4.ctor) { + case 'AllExport': + return A2( + _elm_lang$core$List$map, + function (_p5) { + var _p6 = _p5; + return {ctor: '_Tuple2', _0: _p6._0, _1: _p6._1.arity}; + }, + A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + A2( + _elm_lang$core$Maybe$map, + _elm_lang$core$Dict$toList, + A2( + _elm_lang$core$Maybe$map, + function (_) { + return _.definitions; + }, + A2(_elm_lang$core$Dict$get, mod, c.commons.modules))))); + case 'SubsetExport': + return A2(_elm_lang$core$List$concatMap, importedFunctions, _p4._0); + case 'FunctionExport': + var _p9 = _p4._0; + return A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + A2( + _elm_lang$core$Maybe$map, + function (_p7) { + var _p8 = _p7; + return { + ctor: '::', + _0: {ctor: '_Tuple2', _0: _p9, _1: _p8.arity}, + _1: {ctor: '[]'} + }; + }, + A2( + _elm_lang$core$Maybe$andThen, + _elm_lang$core$Dict$get(_p9), + A2( + _elm_lang$core$Maybe$map, + function (_) { + return _.definitions; + }, + A2(_elm_lang$core$Dict$get, mod, c.commons.modules))))); + default: + return {ctor: '[]'}; + } + }; var exportNames = A3(_user$project$ExType$getExportedTypeNames, c, mod, subset); return _elm_lang$core$Native_Utils.update( c, @@ -18837,16 +19352,49 @@ var _user$project$ExStatement$insertImportedTypes = F3( _elm_lang$core$List$foldl, A2(_elm_lang$core$Basics$flip, _elm_lang$core$Dict$insert, mod), c.importedTypes, - exportNames) + exportNames), + importedFunctions: A3( + _elm_lang$core$List$foldl, + F2( + function (_p10, acc) { + var _p11 = _p10; + return A3( + _elm_lang$core$Dict$insert, + _p11._0, + {ctor: '_Tuple2', _0: mod, _1: _p11._1}, + acc); + }), + c.importedFunctions, + importedFunctions(subset)) }); }); +var _user$project$ExStatement$definitionExists = F2( + function (name, c) { + return A2( + F2( + function (x, y) { + return !_elm_lang$core$Native_Utils.eq(x, y); + }), + _elm_lang$core$Maybe$Nothing, + A2( + _elm_lang$core$Maybe$andThen, + function (_p12) { + return A2( + _elm_lang$core$Dict$get, + name, + function (_) { + return _.definitions; + }(_p12)); + }, + A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules))); + }); var _user$project$ExStatement$moduleStatement = function (s) { - var _p6 = s; - if (_p6.ctor === 'ModuleDeclaration') { + var _p13 = s; + if (_p13.ctor === 'ModuleDeclaration') { return A2( _user$project$ExContext$empty, - _user$project$Helpers$modulePath(_p6._0), - _p6._1); + _user$project$Helpers$modulePath(_p13._0), + _p13._1); } else { return _elm_lang$core$Native_Utils.crashCase( 'ExStatement', @@ -18854,7 +19402,7 @@ var _user$project$ExStatement$moduleStatement = function (s) { start: {line: 51, column: 5}, end: {line: 56, column: 69} }, - _p6)('First statement must be module declaration'); + _p13)('First statement must be module declaration'); } }; var _user$project$ExStatement$Flag = function (a) { @@ -18872,18 +19420,18 @@ var _user$project$ExStatement$Doc = function (a) { var _user$project$ExStatement$getCommentType = function (comment) { var findCommentType = F3( function (regex, commentType, acc) { - var _p8 = acc; - if (_p8.ctor === 'Normal') { - var _p9 = _p8._0; - return A2(_elm_lang$core$Regex$contains, regex, _p9) ? commentType( + var _p15 = acc; + if (_p15.ctor === 'Normal') { + var _p16 = _p15._0; + return A2(_elm_lang$core$Regex$contains, regex, _p16) ? commentType( A4( _elm_lang$core$Regex$replace, _elm_lang$core$Regex$AtMost(1), regex, _elm_lang$core$Basics$always(''), - _p9)) : _user$project$ExStatement$Normal(_p9); + _p16)) : _user$project$ExStatement$Normal(_p16); } else { - return _p8; + return _p15; } }); return A3( @@ -18892,12 +19440,12 @@ var _user$project$ExStatement$getCommentType = function (comment) { _user$project$ExStatement$Normal(comment), A2( _elm_lang$core$List$map, - function (_p10) { - var _p11 = _p10; + function (_p17) { + var _p18 = _p17; return { ctor: '_Tuple2', - _0: _elm_lang$core$Regex$regex(_p11._0), - _1: _p11._1 + _0: _elm_lang$core$Regex$regex(_p18._0), + _1: _p18._1 }; }, { @@ -18968,7 +19516,7 @@ var _user$project$ExStatement$elixirDoc = F4( }); var _user$project$ExStatement$typeDefinition = F5( function (c, name, args, types, isUnion) { - var mapType = function (_p12) { + var mapType = function (_p19) { return (isUnion ? _user$project$ExType$uniontype( _elm_lang$core$Native_Utils.update( c, @@ -18978,20 +19526,16 @@ var _user$project$ExStatement$typeDefinition = F5( _elm_lang$core$Native_Utils.update( c, {inTypeDefiniton: true})))( - A2(_user$project$ExAlias$replaceTypeAliases, c, _p12)); + A2(_user$project$ExAlias$replaceTypeAliases, c, _p19)); }; var getVariableName = function (t) { - var _p13 = t; - if (_p13.ctor === 'TypeVariable') { - return _p13._0; + var _p20 = t; + if (_p20.ctor === 'TypeVariable') { + return _p20._0; } else { - return _elm_lang$core$Native_Utils.crashCase( - 'ExStatement', - { - start: {line: 68, column: 13}, - end: {line: 73, column: 74} - }, - _p13)( + return A2( + _user$project$ExContext$crash, + c, A2( _elm_lang$core$Basics_ops['++'], _elm_lang$core$Basics$toString(t), @@ -19010,15 +19554,15 @@ var _user$project$ExStatement$typeDefinition = F5( ', ', A2(_elm_lang$core$List$map, getVariableName, args)), ')')); - var _p15 = A2( + var _p21 = A2( _elm_lang$core$Maybe$withDefault, {ctor: '_Tuple2', _0: c, _1: ''}, A2( _elm_lang$core$Maybe$map, A3(_user$project$ExStatement$elixirDoc, c, _user$project$ExStatement$Typedoc, name), c.lastDoc)); - var newC = _p15._0; - var code = _p15._1; + var newC = _p21._0; + var code = _p21._1; return A2( F2( function (v0, v1) { @@ -19058,18 +19602,18 @@ var _user$project$ExStatement$typeDefinition = F5( }); var _user$project$ExStatement$elixirComment = F2( function (c, content) { - var _p16 = _user$project$ExStatement$getCommentType(content); - switch (_p16.ctor) { + var _p22 = _user$project$ExStatement$getCommentType(content); + switch (_p22.ctor) { case 'Doc': - var _p17 = _p16._0; + var _p23 = _p22._0; return c.hasModuleDoc ? A2( _user$project$Helpers_ops['=>'], _elm_lang$core$Native_Utils.update( c, { - lastDoc: _elm_lang$core$Maybe$Just(_p17) + lastDoc: _elm_lang$core$Maybe$Just(_p23) }), - '') : A4(_user$project$ExStatement$elixirDoc, c, _user$project$ExStatement$ModuleDoc, c.mod, _p17); + '') : A4(_user$project$ExStatement$elixirDoc, c, _user$project$ExStatement$ModuleDoc, c.mod, _p23); case 'Ex': return A2( F2( @@ -19085,8 +19629,12 @@ var _user$project$ExStatement$elixirComment = F2( '\n', A2( _elm_lang$core$List$map, - _elm_lang$core$String$trim, - A2(_elm_lang$core$String$split, '\n', _p16._0))))); + A3( + _elm_lang$core$Regex$replace, + _elm_lang$core$Regex$All, + _elm_lang$core$Regex$regex('^ '), + _elm_lang$core$Basics$always('')), + A2(_elm_lang$core$String$split, '\n', _p22._0))))); case 'Flag': return A3( _elm_lang$core$Basics$flip, @@ -19101,7 +19649,7 @@ var _user$project$ExStatement$elixirComment = F2( c, A2( _elm_lang$core$List$filterMap, - _user$project$ExStatement$verifyFlag, + _user$project$ExStatement$verifyFlag(c), A2( _elm_lang$core$List$map, _elm_lang$core$String$split(':+'), @@ -19109,7 +19657,7 @@ var _user$project$ExStatement$elixirComment = F2( _elm_lang$core$Regex$split, _elm_lang$core$Regex$All, _elm_lang$core$Regex$regex('\\s+'), - _p16._0))))); + _p22._0))))); default: return A2( F2( @@ -19120,282 +19668,255 @@ var _user$project$ExStatement$elixirComment = F2( A2( _user$project$Helpers$indAll, c.indent, - A2(_user$project$Helpers$prependAll, '# ', _p16._0))); + A2(_user$project$Helpers$prependAll, '# ', _p22._0))); } }); var _user$project$ExStatement$elixirS = F2( function (c, s) { - var _p18 = s; - _v8_12: + var _p24 = s; + _v12_13: do { - switch (_p18.ctor) { + switch (_p24.ctor) { case 'InfixDeclaration': return {ctor: '_Tuple2', _0: c, _1: ''}; case 'TypeDeclaration': - if (((_p18._0.ctor === 'TypeConstructor') && (_p18._0._0.ctor === '::')) && (_p18._0._0._1.ctor === '[]')) { - return A5(_user$project$ExStatement$typeDefinition, c, _p18._0._0._0, _p18._0._1, _p18._1, true); + if (((_p24._0.ctor === 'TypeConstructor') && (_p24._0._0.ctor === '::')) && (_p24._0._0._1.ctor === '[]')) { + return A5(_user$project$ExStatement$typeDefinition, c, _p24._0._0._0, _p24._0._1, _p24._1, true); } else { - break _v8_12; + break _v12_13; } case 'TypeAliasDeclaration': - if (((_p18._0.ctor === 'TypeConstructor') && (_p18._0._0.ctor === '::')) && (_p18._0._0._1.ctor === '[]')) { + if (((_p24._0.ctor === 'TypeConstructor') && (_p24._0._0.ctor === '::')) && (_p24._0._0._1.ctor === '[]')) { return A5( _user$project$ExStatement$typeDefinition, c, - _p18._0._0._0, - _p18._0._1, + _p24._0._0._0, + _p24._0._1, { ctor: '::', - _0: _p18._1, + _0: _p24._1, _1: {ctor: '[]'} }, false); } else { - break _v8_12; + break _v12_13; } case 'FunctionTypeDeclaration': - if (_p18._1.ctor === 'TypeApplication') { - var _p21 = _p18._0; - var resolved = A2(_user$project$ExAlias$replaceTypeAliases, c, _p18._1); - var _p19 = A2( + if (_p24._0 === 'meta') { + return _elm_lang$core$Native_Utils.eq( + _p24._1, + A2( + _Bogdanp$elm_ast$Ast_Statement$TypeConstructor, + { + ctor: '::', + _0: 'List', + _1: {ctor: '[]'} + }, + { + ctor: '::', + _0: A2( + _Bogdanp$elm_ast$Ast_Statement$TypeConstructor, + { + ctor: '::', + _0: 'Macro', + _1: {ctor: '[]'} + }, + {ctor: '[]'}), + _1: {ctor: '[]'} + })) ? {ctor: '_Tuple2', _0: c, _1: ''} : A2(_user$project$ExContext$crash, c, 'Function `meta` is reserved and its type has to be of List Macro'); + } else { + return {ctor: '_Tuple2', _0: c, _1: ''}; + } + case 'FunctionDeclaration': + if ((_p24._0 === 'meta') && (_p24._1.ctor === '[]')) { + return (!A2(_user$project$ExStatement$definitionExists, 'meta', c)) ? A2(_user$project$ExContext$crash, c, 'Function `meta` requires type definition of List Macro') : { + ctor: '_Tuple2', + _0: _elm_lang$core$Native_Utils.update( + c, + { + meta: _elm_lang$core$Maybe$Just(_p24._2) + }), + _1: '' + }; + } else { + var _p33 = _p24._0; + var _p32 = _p24._2; + var isTuple = function (t) { + var _p25 = t; + if (_p25.ctor === 'Tuple') { + return true; + } else { + return false; + } + }; + var isPrivate = A2(_user$project$ExContext$isPrivate, c, _p33); + var genFfi = A4( + _user$project$ExFfi$generateFfi, + c, + _user$project$ExExpression$elixirE, + _p33, + A2( + _elm_lang$core$List$map, + _user$project$Helpers$typeApplicationToList, + A2( + _elm_lang$core$Maybe$withDefault, + {ctor: '[]'}, + A2( + _elm_lang$core$Maybe$map, + function (_p26) { + return _user$project$Helpers$typeApplicationToList( + function (_) { + return _.def; + }(_p26)); + }, + A2( + _elm_lang$core$Maybe$andThen, + function (_p27) { + return A2( + _elm_lang$core$Dict$get, + _p33, + function (_) { + return _.definitions; + }(_p27)); + }, + A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)))))); + var _p28 = A2( _elm_lang$core$Maybe$withDefault, {ctor: '_Tuple2', _0: c, _1: ''}, A2( _elm_lang$core$Maybe$map, - A3(_user$project$ExStatement$elixirDoc, c, _user$project$ExStatement$Fundoc, _p21), + A3(_user$project$ExStatement$elixirDoc, c, _user$project$ExStatement$Fundoc, _p33), c.lastDoc)); - var newC = _p19._0; - var code = _p19._1; - return A2( - F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - }), - newC, + var newC = _p28._0; + var code = _p28._1; + var definition = A2( + _elm_lang$core$Maybe$map, + _user$project$ExAlias$replaceTypeAliases(c), A2( - _elm_lang$core$Basics_ops['++'], - A4(_user$project$ExContext$onlyWithoutFlag, newC, 'nodef', _p21, code), - function () { - var _p20 = _user$project$Helpers$operatorType(_p21); - switch (_p20.ctor) { - case 'Builtin': - return ''; - case 'Custom': - return A4( - _user$project$ExContext$onlyWithoutFlag, - newC, - 'nospec', - _p21, - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(newC.indent), - A2( - _elm_lang$core$Basics_ops['++'], - '@spec ', + _elm_lang$core$Maybe$andThen, + function (_p29) { + return A2( + _elm_lang$core$Maybe$map, + function (_) { + return _.def; + }, + A2( + _elm_lang$core$Dict$get, + _p33, + function (_) { + return _.definitions; + }(_p29))); + }, + A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules))); + var spec = A2( + _elm_lang$core$Basics_ops['++'], + A4(_user$project$ExContext$onlyWithoutFlag, newC, 'nodef', _p33, code), + function () { + var _p30 = _user$project$Helpers$operatorType(_p33); + switch (_p30.ctor) { + case 'Builtin': + return ''; + case 'Custom': + return A2( + _elm_lang$core$Maybe$withDefault, + '', + A2( + _elm_lang$core$Maybe$map, + function (def) { + return A4( + _user$project$ExContext$onlyWithoutFlag, + newC, + 'nospec', + _p33, A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$translateOperator(_p21), - A2(_user$project$ExType$typespec, newC, resolved))))); - default: - return A4( - _user$project$ExContext$onlyWithoutFlag, - newC, - 'nospec', - _p21, - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(newC.indent), - A2( - _elm_lang$core$Basics_ops['++'], - '@spec ', + _user$project$Helpers$ind(newC.indent), + A2( + _elm_lang$core$Basics_ops['++'], + '@spec ', + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$translateOperator(_p33), + A2(_user$project$ExType$typespec, newC, def))))); + }, + definition)); + default: + return A2( + _elm_lang$core$Maybe$withDefault, + '', + A2( + _elm_lang$core$Maybe$map, + function (def) { + return A4( + _user$project$ExContext$onlyWithoutFlag, + newC, + 'nospec', + _p33, A2( _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p21), - A2(_user$project$ExType$typespec, newC, resolved))))); - } - }())); - } else { - var _p25 = _p18._1; - var _p24 = _p18._0; - var _p22 = A2( - _elm_lang$core$Maybe$withDefault, - {ctor: '_Tuple2', _0: c, _1: ''}, - A2( - _elm_lang$core$Maybe$map, - A3(_user$project$ExStatement$elixirDoc, c, _user$project$ExStatement$Fundoc, _p24), - c.lastDoc)); - var newC = _p22._0; - var code = _p22._1; + _user$project$Helpers$ind(newC.indent), + A2( + _elm_lang$core$Basics_ops['++'], + '@spec ', + A2( + _elm_lang$core$Basics_ops['++'], + A2(_user$project$Helpers$toSnakeCase, true, _p33), + A2(_user$project$ExType$typespec, newC, def))))); + }, + definition)); + } + }()); return A2( - F2( - function (v0, v1) { - return {ctor: '_Tuple2', _0: v0, _1: v1}; - }), + _user$project$Helpers_ops['=>'], newC, - A2( - _elm_lang$core$Basics_ops['++'], - code, - function () { - var _p23 = _user$project$Helpers$operatorType(_p24); - switch (_p23.ctor) { - case 'Builtin': - return ''; - case 'Custom': - return A4( - _user$project$ExContext$onlyWithoutFlag, - newC, - _p24, - 'nospec', - A2( + function () { + var _p31 = _p32; + _v15_3: + do { + if (((((_p31.ctor === 'Application') && (_p31._0.ctor === 'Application')) && (_p31._0._0.ctor === 'Variable')) && (_p31._0._0._0.ctor === '::')) && (_p31._0._0._0._1.ctor === '[]')) { + switch (_p31._0._0._0._0) { + case 'ffi': + return A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), + spec, A2( _elm_lang$core$Basics_ops['++'], - '@spec ', - A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$translateOperator(_p24), - A2(_user$project$ExType$typespec, newC, _p25))))); - default: - return A4( - _user$project$ExContext$onlyWithoutFlag, - newC, - _p24, - 'nospec', - A2( + _user$project$Helpers$ind(c.indent + 1), + genFfi(_p31))); + case 'tryFfi': + return A2( + _elm_lang$core$Basics_ops['++'], + spec, + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Helpers$ind(c.indent + 1), + genFfi(_p31))); + case 'macro': + return A2( _elm_lang$core$Basics_ops['++'], _user$project$Helpers$ind(c.indent), A2( _elm_lang$core$Basics_ops['++'], - '@spec ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p24), - A2(_user$project$ExType$typespec, newC, _p25))))); - } - }())); - } - case 'FunctionDeclaration': - var _p33 = _p18._0; - var _p32 = _p18._2; - var _p31 = _p18._1; - var definitionExists = A2( - F2( - function (x, y) { - return !_elm_lang$core$Native_Utils.eq(x, y); - }), - _elm_lang$core$Maybe$Nothing, - A2( - _elm_lang$core$Maybe$andThen, - function (_p26) { - return A2( - _elm_lang$core$Dict$get, - _p33, - function (_) { - return _.definitions; - }(_p26)); - }, - A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules))); - var preCurry = ((!definitionExists) && (!_elm_lang$core$Native_Utils.eq( - _p31, - {ctor: '[]'}))) ? A2( - _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$ind(c.indent), - A2( - _elm_lang$core$Basics_ops['++'], - 'curryp ', - A2( - _elm_lang$core$Basics_ops['++'], - A2(_user$project$Helpers$toSnakeCase, true, _p33), - A2( - _elm_lang$core$Basics_ops['++'], - '/', - _elm_lang$core$Basics$toString( - _elm_lang$core$List$length(_p31)))))) : ''; - var isTuple = function (t) { - var _p27 = t; - if (_p27.ctor === 'Tuple') { - return true; - } else { - return false; - } - }; - var isPrivate = A2(_user$project$ExContext$isPrivate, c, _p33); - var genFfi = A4( - _user$project$ExFfi$generateFfi, - c, - _user$project$ExExpression$elixirE, - _p33, - A2( - _elm_lang$core$List$map, - _user$project$Helpers$typeApplicationToList, - A2( - _elm_lang$core$Maybe$withDefault, - {ctor: '[]'}, - A2( - _elm_lang$core$Maybe$map, - function (_p28) { - return _user$project$Helpers$typeApplicationToList( - function (_) { - return _.def; - }(_p28)); - }, - A2( - _elm_lang$core$Maybe$andThen, - function (_p29) { - return A2( - _elm_lang$core$Dict$get, - _p33, - function (_) { - return _.definitions; - }(_p29)); - }, - A2(_elm_lang$core$Dict$get, c.mod, c.commons.modules)))))); - return A2( - _user$project$Helpers_ops['=>'], - c, - ((!definitionExists) && (!isPrivate)) ? _elm_lang$core$Native_Utils.crash( - 'ExStatement', - { - start: {line: 213, column: 25}, - end: {line: 213, column: 36} - })( - A2( - _elm_lang$core$Basics_ops['++'], - 'To be able to export it, you need to provide function type for `', - A2( - _elm_lang$core$Basics_ops['++'], - _p33, - A2( - _elm_lang$core$Basics_ops['++'], - '` function in module ', - _elm_lang$core$Basics$toString(c.mod))))) : A2( - _elm_lang$core$Basics_ops['++'], - preCurry, - function () { - var _p30 = _p32; - _v12_2: - do { - if (((((_p30.ctor === 'Application') && (_p30._0.ctor === 'Application')) && (_p30._0._0.ctor === 'Variable')) && (_p30._0._0._0.ctor === '::')) && (_p30._0._0._0._1.ctor === '[]')) { - switch (_p30._0._0._0._0) { - case 'ffi': - return genFfi(_p30); - case 'tryFfi': - return genFfi(_p30); + genFfi(_p31), + '\n')); default: - break _v12_2; + break _v15_3; } } else { - break _v12_2; + break _v15_3; } } while(false); - return A5(_user$project$ExFunction$genFunctionDefinition, c, _user$project$ExExpression$elixirE, _p33, _p31, _p32); - }())); + return A2( + _elm_lang$core$Basics_ops['++'], + spec, + A5(_user$project$ExFunction$genFunctionDefinition, c, _user$project$ExExpression$elixirE, _p33, _p24._1, _p32)); + }()); + } case 'Comment': - return A2(_user$project$ExStatement$elixirComment, c, _p18._0); + return A2(_user$project$ExStatement$elixirComment, c, _p24._0); case 'ImportStatement': - if (_p18._1.ctor === 'Just') { - if (_p18._2.ctor === 'Nothing') { + if (_p24._1.ctor === 'Just') { + if (_p24._2.ctor === 'Nothing') { return A2( _user$project$Helpers_ops['=>'], c, @@ -19407,13 +19928,13 @@ var _user$project$ExStatement$elixirS = F2( 'alias ', A2( _elm_lang$core$Basics_ops['++'], - _user$project$Helpers$modulePath(_p18._0), - A2(_elm_lang$core$Basics_ops['++'], ', as: ', _p18._1._0))))); + _user$project$Helpers$modulePath(_p24._0), + A2(_elm_lang$core$Basics_ops['++'], ', as: ', _p24._1._0))))); } else { - break _v8_12; + break _v12_13; } } else { - if (_p18._2.ctor === 'Nothing') { + if (_p24._2.ctor === 'Nothing') { return A2( _user$project$Helpers_ops['=>'], c, @@ -19423,12 +19944,12 @@ var _user$project$ExStatement$elixirS = F2( A2( _elm_lang$core$Basics_ops['++'], 'alias ', - _user$project$Helpers$modulePath(_p18._0)))); + _user$project$Helpers$modulePath(_p24._0)))); } else { - switch (_p18._2._0.ctor) { + switch (_p24._2._0.ctor) { case 'SubsetExport': - var _p36 = _p18._2._0; - var _p35 = _p18._0; + var _p36 = _p24._2._0; + var _p35 = _p24._0; var imports = A3( _elm_lang$core$List$foldr, F2( @@ -19436,7 +19957,7 @@ var _user$project$ExStatement$elixirS = F2( return A2(_elm_lang$core$Basics_ops['++'], x, y); }), {ctor: '[]'}, - A2(_elm_lang$core$List$map, _user$project$ExStatement$exportSetToList, _p18._2._0._0)); + A2(_elm_lang$core$List$map, _user$project$ExStatement$exportSetToList, _p24._2._0._0)); var excepts = A2( _elm_lang$core$Maybe$withDefault, {ctor: '[]'}, @@ -19496,7 +20017,7 @@ var _user$project$ExStatement$elixirS = F2( _user$project$ExContext$mergeTypes, _p36, _user$project$Helpers$modulePath(_p35), - A3(_user$project$ExStatement$insertImportedTypes, moduleName, _p36, c)), + A3(_user$project$ExStatement$insertImports, moduleName, _p36, c)), A2( _elm_lang$core$Basics_ops['++'], _user$project$Helpers$ind(c.indent), @@ -19531,10 +20052,10 @@ var _user$project$ExStatement$elixirS = F2( } }))))); case 'AllExport': - if (((_p18._0.ctor === '::') && (_p18._0._0 === 'Elchemy')) && (_p18._0._1.ctor === '[]')) { + if (((_p24._0.ctor === '::') && (_p24._0._0 === 'Elchemy')) && (_p24._0._1.ctor === '[]')) { return {ctor: '_Tuple2', _0: c, _1: ''}; } else { - var mod = _user$project$Helpers$modulePath(_p18._0); + var mod = _user$project$Helpers$modulePath(_p24._0); var exports = A2( _elm_lang$core$Maybe$withDefault, {ctor: '[]'}, @@ -19581,7 +20102,7 @@ var _user$project$ExStatement$elixirS = F2( return A2( _user$project$Helpers_ops['=>'], A3( - _user$project$ExStatement$insertImportedTypes, + _user$project$ExStatement$insertImports, mod, _Bogdanp$elm_ast$Ast_Statement$AllExport, A3(_user$project$ExContext$mergeTypes, _Bogdanp$elm_ast$Ast_Statement$AllExport, mod, c)), @@ -19616,12 +20137,12 @@ var _user$project$ExStatement$elixirS = F2( }))))); } default: - break _v8_12; + break _v12_13; } } } default: - break _v8_12; + break _v12_13; } } while(false); return A2( @@ -19630,7 +20151,7 @@ var _user$project$ExStatement$elixirS = F2( return {ctor: '_Tuple2', _0: v0, _1: v1}; }), c, - A2(_user$project$Helpers$notImplemented, 'statement', _p18)); + A3(_user$project$ExContext$notImplemented, c, 'statement', _p24)); }); var _user$project$Compiler$getLinePosition = F2( @@ -19689,8 +20210,8 @@ var _user$project$Compiler$parse = F2( return _elm_lang$core$Native_Utils.crash( 'Compiler', { - start: {line: 216, column: 17}, - end: {line: 216, column: 28} + start: {line: 220, column: 17}, + end: {line: 220, column: 28} })( A2( _elm_lang$core$Basics_ops['++'], @@ -19737,8 +20258,8 @@ var _user$project$Compiler$parse = F2( return _elm_lang$core$Native_Utils.crashCase( 'Compiler', { - start: {line: 207, column: 5}, - end: {line: 234, column: 39} + start: {line: 211, column: 5}, + end: {line: 238, column: 39} }, _p1)( _elm_lang$core$Basics$toString(_p1)); @@ -19823,9 +20344,16 @@ var _user$project$Compiler$glueStart = A2( _elm_lang$core$Basics_ops['++'], _user$project$Helpers$ind(0), A2(_elm_lang$core$Basics_ops['++'], 'use Elchemy', '\n')); -var _user$project$Compiler$version = '0.6.6'; +var _user$project$Compiler$version = '0.7.2'; var _user$project$Compiler$getCode = F2( function (context, statements) { + var _p11 = A3( + _elm_lang$core$List$foldl, + _user$project$Compiler$aggregateStatements, + {ctor: '_Tuple2', _0: context, _1: ''}, + statements); + var newC = _p11._0; + var code = _p11._1; var shadowsBasics = _user$project$ExContext$importBasicsWithoutShadowed(context); return A2( _elm_lang$core$Basics_ops['++'], @@ -19850,13 +20378,17 @@ var _user$project$Compiler$getCode = F2( shadowsBasics, A2( _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Tuple$second( - A3( - _elm_lang$core$List$foldl, - _user$project$Compiler$aggregateStatements, - {ctor: '_Tuple2', _0: context, _1: ''}, - statements)), - _user$project$Compiler$glueEnd))))))); + code, + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$Compiler$glueEnd, + A2( + _elm_lang$core$Basics_ops['++'], + _user$project$ExMeta$metaDefinition( + _elm_lang$core$Native_Utils.update( + newC, + {inMeta: true})), + '\n\n'))))))))); }); var _user$project$Compiler$fullTree = F2( function (cachedCommons, m) { @@ -19870,23 +20402,23 @@ var _user$project$Compiler$fullTree = F2( _elm_lang$core$String$contains, A2(_elm_lang$core$Basics_ops['++'], '>>', '>>'), m)) { - return function (_p11) { - var _p12 = _p11; - var _p13 = _p12._0; - if (_p13.ctor === 'Nothing') { + return function (_p12) { + var _p13 = _p12; + var _p14 = _p13._0; + if (_p14.ctor === 'Nothing') { return _elm_lang$core$Native_Utils.crashCase( 'Compiler', { - start: {line: 78, column: 21}, - end: {line: 83, column: 55} + start: {line: 79, column: 21}, + end: {line: 84, column: 55} }, - _p13)('Failed getting context'); + _p14)('Failed getting context'); } else { - var _p15 = _p13._0; + var _p16 = _p14._0; return { ctor: '_Tuple2', - _0: A2(_user$project$Compiler$getCode, _p15, _p12._1), - _1: _p15.commons + _0: A2(_user$project$Compiler$getCode, _p16, _p13._1), + _1: _p16.commons }; } }( @@ -19901,19 +20433,19 @@ var _user$project$Compiler$fullTree = F2( _elm_lang$core$Debug$log, 'Number of files', _elm_lang$core$List$length(multiple)); - var compileWithIndex = function (_p16) { - var _p17 = _p16; - var _p19 = _p17._1._0; - var _p18 = A3( + var compileWithIndex = function (_p17) { + var _p18 = _p17; + var _p20 = _p18._1._0; + var _p19 = A3( _elm_lang$core$Basics$flip, _elm_lang$core$Debug$log, - _p19, + _p20, A2( _elm_lang$core$Basics_ops['++'], 'Compiling ', A2( _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(count - _p17._0), + _elm_lang$core$Basics$toString(count - _p18._0), A2( _elm_lang$core$Basics_ops['++'], '/', @@ -19929,27 +20461,27 @@ var _user$project$Compiler$fullTree = F2( '>>', A2( _elm_lang$core$Basics_ops['++'], - _p19, + _p20, A2( _elm_lang$core$Basics_ops['++'], '\n', - A2(_user$project$Compiler$getCode, _p17._1._1, _p17._1._2))))); + A2(_user$project$Compiler$getCode, _p18._1._1, _p18._1._2))))); }; var files = A2( _elm_lang$core$List$map, - function (_p20) { - var _p21 = _p20; - var _p23 = _p21._1._0; - var _p22 = A3( + function (_p21) { + var _p22 = _p21; + var _p24 = _p22._1._0; + var _p23 = A3( _elm_lang$core$Basics$flip, _elm_lang$core$Debug$log, - _p23, + _p24, A2( _elm_lang$core$Basics_ops['++'], 'Parsing ', A2( _elm_lang$core$Basics_ops['++'], - _elm_lang$core$Basics$toString(count - _p21._0), + _elm_lang$core$Basics$toString(count - _p22._0), A2( _elm_lang$core$Basics_ops['++'], '/', @@ -19959,8 +20491,8 @@ var _user$project$Compiler$fullTree = F2( ' # '))))); return { ctor: '_Tuple2', - _0: _p23, - _1: A2(_user$project$Compiler$parse, _p23, _p21._1._1) + _0: _p24, + _1: A2(_user$project$Compiler$parse, _p24, _p22._1._1) }; }, A2( @@ -19973,22 +20505,22 @@ var _user$project$Compiler$fullTree = F2( var wContexts = A2( _elm_lang$core$List$filterMap, function (a) { - var _p24 = a; - if (_p24._1._0.ctor === 'Nothing') { + var _p25 = a; + if (_p25._1._0.ctor === 'Nothing') { return _elm_lang$core$Maybe$Nothing; } else { return _elm_lang$core$Maybe$Just( - {ctor: '_Tuple3', _0: _p24._0, _1: _p24._1._0._0, _2: _p24._1._1}); + {ctor: '_Tuple3', _0: _p25._0, _1: _p25._1._0._0, _2: _p25._1._1}); } }, A2( _elm_lang$core$List$map, - function (_p25) { - var _p26 = _p25; + function (_p26) { + var _p27 = _p26; return { ctor: '_Tuple2', - _0: _p26._0, - _1: _user$project$Compiler$getContext(_p26._1) + _0: _p27._0, + _1: _user$project$Compiler$getContext(_p27._1) }; }, files)); @@ -20004,22 +20536,22 @@ var _user$project$Compiler$fullTree = F2( cachedCommons, A2( _elm_lang$core$List$map, - function (_p27) { - var _p28 = _p27; - return _p28._1.commons; + function (_p28) { + var _p29 = _p28; + return _p29._1.commons; }, wContexts)))); var wTrueContexts = A2( _elm_lang$core$List$map, - function (_p29) { - var _p30 = _p29; + function (_p30) { + var _p31 = _p30; return { ctor: '_Tuple3', - _0: _p30._0, + _0: _p31._0, _1: _elm_lang$core$Native_Utils.update( - _p30._1, + _p31._1, {commons: commons}), - _2: _p30._2 + _2: _p31._2 }; }, wContexts); @@ -20049,9 +20581,9 @@ var _user$project$Compiler$fullTree = F2( var _user$project$Compiler$treeAndCommons = function (m) { return A2(_user$project$Compiler$fullTree, _user$project$ExContext$emptyCommons, m); }; -var _user$project$Compiler$tree = function (_p31) { +var _user$project$Compiler$tree = function (_p32) { return _elm_lang$core$Tuple$first( - _user$project$Compiler$treeAndCommons(_p31)); + _user$project$Compiler$treeAndCommons(_p32)); }; var _user$project$Main$update = F2( diff --git a/docs/static/css/main.e1c8fc29.css b/docs/static/css/main.e997bdbd.css similarity index 100% rename from docs/static/css/main.e1c8fc29.css rename to docs/static/css/main.e997bdbd.css diff --git a/docs/static/js/main.e1c8fc29.js b/docs/static/js/main.e1c8fc29.js deleted file mode 100644 index 98b2708..0000000 --- a/docs/static/js/main.e1c8fc29.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n={};r.m=t,r.c=n,r.i=function(t){return t},r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:e})},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},r.p="",r(r.s=2)}([function(t,r){(function(){"use strict";function r(t){function r(r){return function(n){return t(r,n)}}return r.arity=2,r.func=t,r}function n(t){function r(r){return function(n){return function(e){return t(r,n,e)}}}return r.arity=3,r.func=t,r}function e(t){function r(r){return function(n){return function(e){return function(o){return t(r,n,e,o)}}}}return r.arity=4,r.func=t,r}function o(t){function r(r){return function(n){return function(e){return function(o){return function(c){return t(r,n,e,o,c)}}}}}return r.arity=5,r.func=t,r}function c(t){function r(r){return function(n){return function(e){return function(o){return function(c){return function(u){return t(r,n,e,o,c,u)}}}}}}return r.arity=6,r.func=t,r}function u(t){function r(r){return function(n){return function(e){return function(o){return function(c){return function(u){return function(i){return t(r,n,e,o,c,u,i)}}}}}}}return r.arity=7,r.func=t,r}function i(t){function r(r){return function(n){return function(e){return function(o){return function(c){return function(u){return function(i){return function(_){return t(r,n,e,o,c,u,i,_)}}}}}}}}return r.arity=8,r.func=t,r}function _(t){function r(r){return function(n){return function(e){return function(o){return function(c){return function(u){return function(i){return function(_){return function(a){return t(r,n,e,o,c,u,i,_,a)}}}}}}}}}return r.arity=9,r.func=t,r}function a(t,r,n){return 2===t.arity?t.func(r,n):t(r)(n)}function l(t,r,n,e){return 3===t.arity?t.func(r,n,e):t(r)(n)(e)}function f(t,r,n,e,o){return 4===t.arity?t.func(r,n,e,o):t(r)(n)(e)(o)}function s(t,r,n,e,o,c){return 5===t.arity?t.func(r,n,e,o,c):t(r)(n)(e)(o)(c)}function d(t,r,n,e,o,c,u){return 6===t.arity?t.func(r,n,e,o,c,u):t(r)(n)(e)(o)(c)(u)}var p=function(){function t(t){var r,n=!1;return function(e){return n||(r=t(e),n=!0),r}}return{memoize:t}}(),h=function(){function t(t,r){return t/r|0}function e(t,r){return t%r}function o(t,r){if(0===r)throw new Error("Cannot perform mod 0. Division by zero error.");var n=t%r,e=0===t?0:r>0?t>=0?n:n+r:-o(-t,-r);return e===r?0:e}function c(t,r){return Math.log(r)/Math.log(t)}function u(t){return-t}function i(t){return t<0?-t:t}function _(t,r){return v.cmp(t,r)<0?t:r}function a(t,r){return v.cmp(t,r)>0?t:r}function l(t,r,n){return v.cmp(n,t)<0?t:v.cmp(n,r)>0?r:n}function f(t,r){return{ctor:k[v.cmp(t,r)+1]}}function s(t,r){return t!==r}function d(t){return!t}function p(t){return t===1/0||t===-1/0}function h(t){return 0|t}function g(t){return t*Math.PI/180}function m(t){return 2*Math.PI*t}function b(t){var r=t._0,n=t._1;return v.Tuple2(r*Math.cos(n),r*Math.sin(n))}function y(t){var r=t._0,n=t._1;return v.Tuple2(Math.sqrt(r*r+n*n),Math.atan2(n,r))}var k=["LT","EQ","GT"];return{div:r(t),rem:r(e),mod:r(o),pi:Math.PI,e:Math.E,cos:Math.cos,sin:Math.sin,tan:Math.tan,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:r(Math.atan2),degrees:g,turns:m,fromPolar:b,toPolar:y,sqrt:Math.sqrt,logBase:r(c),negate:u,abs:i,min:r(_),max:r(a),clamp:n(l),compare:r(f),xor:r(s),not:d,truncate:h,ceiling:Math.ceil,floor:Math.floor,round:Math.round,toFloat:function(t){return t},isNaN:isNaN,isInfinite:p}}(),v=function(){function t(t,r){for(var e,o=[],c=n(t,r,0,o);c&&(e=o.pop());)c=n(e.x,e.y,0,o);return c}function n(t,r,e,o){if(e>100)return o.push({x:t,y:r}),!0;if(t===r)return!0;if("object"!=typeof t){if("function"==typeof t)throw new Error('Trying to use `(==)` on functions. There is no way to know if functions are "the same" in the Elm sense. Read more about this at http://package.elm-lang.org/packages/elm-lang/core/latest/Basics#== which describes why it is this way and what the better version will look like.');return!1}if(null===t||null===r)return!1;if(t instanceof Date)return t.getTime()===r.getTime();if(!("ctor"in t)){for(var c in t)if(!n(t[c],r[c],e+1,o))return!1;return!0}if("RBNode_elm_builtin"!==t.ctor&&"RBEmpty_elm_builtin"!==t.ctor||(t=ln(t),r=ln(r)),"Set_elm_builtin"===t.ctor&&(t=Ie(t),r=Ie(r)),"::"===t.ctor){for(var u=t,i=r;"::"===u.ctor&&"::"===i.ctor;){if(!n(u._0,i._0,e+1,o))return!1;u=u._1,i=i._1}return u.ctor===i.ctor}if("_Array"===t.ctor){var _=Fu.toJSArray(t),a=Fu.toJSArray(r);if(_.length!==a.length)return!1;for(var l=0;l<_.length;l++)if(!n(_[l],a[l],e+1,o))return!1;return!0}if(!n(t.ctor,r.ctor,e+1,o))return!1;for(var c in t)if(!n(t[c],r[c],e+1,o))return!1;return!0}function e(t,r){if("object"!=typeof t)return t===r?v:t=1){if((c=e(t._0,r._0))!==v)return c;if(u>=2){if((c=e(t._1,r._1))!==v)return c;if(u>=3){if((c=e(t._2,r._2))!==v)return c;if(u>=4){if((c=e(t._3,r._3))!==v)return c;if(u>=5){if((c=e(t._4,r._4))!==v)return c;if(u>=6){if((c=e(t._5,r._5))!==v)return c;if(u>=7)throw new Error("Comparison error: cannot compare tuples with more than 6 elements.")}}}}}}return v}throw new Error("Comparison error: comparison is only defined on ints, floats, times, chars, strings, lists of comparable values, and tuples of comparable values.")}function o(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}function c(t){return new String(t)}function u(t){return b++}function i(t,r){var n={};for(var e in t)n[e]=t[e];for(var e in r)n[e]=r[e];return n}function _(t,r){return{ctor:"::",_0:t,_1:r}}function a(t,r){if("string"==typeof t)return t+r;if("[]"===t.ctor)return r;var n=_(t._0,y),e=n;for(t=t._1;"[]"!==t.ctor;)e._1=_(t._0,y),t=t._1,e=e._1;return e._1=r,n}function l(t,r){return function(n){throw new Error("Ran into a `Debug.crash` in module `"+t+"` "+s(r)+"\nThe message provided by the code author is:\n\n "+n)}}function f(t,r,n){return function(e){throw new Error("Ran into a `Debug.crash` in module `"+t+"`\n\nThis was caused by the `case` expression "+s(r)+".\nOne of the branches ended with a crash and the following value got through:\n\n "+d(n)+"\n\nThe message provided by the code author is:\n\n "+e)}}function s(t){return t.start.line==t.end.line?"on line "+t.start.line:"between lines "+t.start.line+" and "+t.end.line}function d(t){var r=typeof t;if("function"===r)return"";if("boolean"===r)return t?"True":"False";if("number"===r)return t+"";if(t instanceof String)return"'"+p(t,!0)+"'";if("string"===r)return'"'+p(t,!1)+'"';if(null===t)return"null";if("object"===r&&"ctor"in t){var n=t.ctor.substring(0,5);if("_Tupl"===n){var e=[];for(var o in t)"ctor"!==o&&e.push(d(t[o]));return"("+e.join(",")+")"}if("_Task"===n)return"";if("_Array"===t.ctor)return"Array.fromList "+d(Du(t));if(""===t.ctor)return"";if("_Process"===t.ctor)return"";if("::"===t.ctor){var e="["+d(t._0);for(t=t._1;"::"===t.ctor;)e+=","+d(t._0),t=t._1;return e+"]"}if("[]"===t.ctor)return"[]";if("Set_elm_builtin"===t.ctor)return"Set.fromList "+d(Ie(t));if("RBNode_elm_builtin"===t.ctor||"RBEmpty_elm_builtin"===t.ctor)return"Dict.fromList "+d(ln(t));var e="";for(var c in t)if("ctor"!==c){var u=d(t[c]),i=u[0],_="{"===i||"("===i||"<"===i||'"'===i||u.indexOf(" ")<0;e+=" "+(_?u:"("+u+")")}return t.ctor+e}if("object"===r){if(t instanceof Date)return"<"+t.toString()+">";if(t.elm_web_socket)return"";var e=[];for(var o in t)e.push(o+" = "+d(t[o]));return 0===e.length?"{}":"{ "+e.join(", ")+" }"}return""}function p(t,r){var n=t.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\v/g,"\\v").replace(/\0/g,"\\0");return r?n.replace(/\'/g,"\\'"):n.replace(/\"/g,'\\"')}var h=-1,v=0,g=1,m={ctor:"_Tuple0"},b=0,y={ctor:"[]"};return{eq:t,cmp:e,Tuple0:m,Tuple2:o,chr:c,update:i,guid:u,append:r(a),crash:l,crashCase:f,toString:d}}(),g=r(function(t,r){var n=r;return a(t,n._0,n._1)}),m=(n(function(t,r,n){return t({ctor:"_Tuple2",_0:r,_1:n})}),n(function(t,r,n){return a(t,n,r)})),b=r(function(t,r){return t}),y=function(t){return t},k=k||{};k["<|"]=r(function(t,r){return t(r)});var k=k||{};k["|>"]=r(function(t,r){return r(t)});var k=k||{};k[">>"]=n(function(t,r,n){return r(t(n))});var k=k||{};k["<<"]=n(function(t,r,n){return t(r(n))});var k=k||{};k["++"]=v.append;var T=v.toString,w=(h.isInfinite,h.isNaN,h.toFloat),k=(h.ceiling,h.floor,h.truncate,h.round,h.not,h.xor,k||{});k["||"]=h.or;var k=k||{};k["&&"]=h.and;var x=(h.max,h.min,h.compare),k=k||{};k[">="]=h.ge;var k=k||{};k["<="]=h.le;var k=k||{};k[">"]=h.gt;var k=k||{};k["<"]=h.lt;var k=k||{};k["/="]=h.neq;var k=k||{};k["=="]=h.eq;var E=(h.e,h.pi,h.clamp,h.logBase,h.abs,h.negate),k=(h.sqrt,h.atan2,h.atan,h.asin,h.acos,h.tan,h.sin,h.cos,k||{});k["^"]=h.exp;var k=k||{};k["%"]=h.mod;var k=(h.rem,k||{});k["//"]=h.div;var k=k||{};k["/"]=h.floatDiv;var k=k||{};k["*"]=h.mul;var k=k||{};k["-"]=h.sub;var k=k||{};k["+"]=h.add;var B=(h.toPolar,h.fromPolar,h.turns,h.degrees,function(){function t(t,r){var n=t+": "+v.toString(r),e=e||{};return e.stdout?e.stdout.write(n):console.log(n),r}function n(t){throw new Error(t)}return{crash:n,log:r(t)}}()),C=(B.crash,B.log),N=r(function(t,r){var n=r;return"Just"===n.ctor?n._0:t}),R={ctor:"Nothing"},A=r(function(t,r){var n=r;return"Just"===n.ctor?t(n._0):R}),S=function(t){return{ctor:"Just",_0:t}},$=r(function(t,r){var n=r;return"Just"===n.ctor?S(t(n._0)):R}),L=n(function(t,r,n){var e={ctor:"_Tuple2",_0:r,_1:n};return"_Tuple2"===e.ctor&&"Just"===e._0.ctor&&"Just"===e._1.ctor?S(a(t,e._0._0,e._1._0)):R}),O=(e(function(t,r,n,e){var o={ctor:"_Tuple3",_0:r,_1:n,_2:e};return"_Tuple3"===o.ctor&&"Just"===o._0.ctor&&"Just"===o._1.ctor&&"Just"===o._2.ctor?S(l(t,o._0._0,o._1._0,o._2._0)):R}),o(function(t,r,n,e,o){var c={ctor:"_Tuple4",_0:r,_1:n,_2:e,_3:o};return"_Tuple4"===c.ctor&&"Just"===c._0.ctor&&"Just"===c._1.ctor&&"Just"===c._2.ctor&&"Just"===c._3.ctor?S(f(t,c._0._0,c._1._0,c._2._0,c._3._0)):R}),c(function(t,r,n,e,o,c){var u={ctor:"_Tuple5",_0:r,_1:n,_2:e,_3:o,_4:c};return"_Tuple5"===u.ctor&&"Just"===u._0.ctor&&"Just"===u._1.ctor&&"Just"===u._2.ctor&&"Just"===u._3.ctor&&"Just"===u._4.ctor?S(s(t,u._0._0,u._1._0,u._2._0,u._3._0,u._4._0)):R}),function(){function t(t,r){return{ctor:"::",_0:t,_1:r}}function u(r){for(var n=y,e=r.length;e--;)n=t(r[e],n);return n}function i(t){for(var r=[];"[]"!==t.ctor;)r.push(t._0),t=t._1;return r}function _(t,r,n){for(var e=i(n),o=r,c=e.length;c--;)o=a(t,e[c],o);return o}function d(t,r,n){for(var e=[];"[]"!==r.ctor&&"[]"!==n.ctor;)e.push(a(t,r._0,n._0)),r=r._1,n=n._1;return u(e)}function p(t,r,n,e){for(var o=[];"[]"!==r.ctor&&"[]"!==n.ctor&&"[]"!==e.ctor;)o.push(l(t,r._0,n._0,e._0)),r=r._1,n=n._1,e=e._1;return u(o)}function h(t,r,n,e,o){for(var c=[];"[]"!==r.ctor&&"[]"!==n.ctor&&"[]"!==e.ctor&&"[]"!==o.ctor;)c.push(f(t,r._0,n._0,e._0,o._0)),r=r._1,n=n._1,e=e._1,o=o._1;return u(c)}function g(t,r,n,e,o,c){for(var i=[];"[]"!==r.ctor&&"[]"!==n.ctor&&"[]"!==e.ctor&&"[]"!==o.ctor&&"[]"!==c.ctor;)i.push(s(t,r._0,n._0,e._0,o._0,c._0)),r=r._1,n=n._1,e=e._1,o=o._1,c=c._1;return u(i)}function m(t,r){return u(i(r).sort(function(r,n){return v.cmp(t(r),t(n))}))}function b(t,r){return u(i(r).sort(function(r,n){var e=t(r)(n).ctor;return"EQ"===e?0:"LT"===e?-1:1}))}var y={ctor:"[]"};return{Nil:y,Cons:t,cons:r(t),toArray:i,fromArray:u,foldr:n(_),map2:n(d),map3:e(p),map4:o(h),map5:c(g),sortBy:r(m),sortWith:r(b)}}()),I=O.sortWith,z=(O.sortBy,function(t){return{ctor:"::",_0:t,_1:{ctor:"[]"}}}),q=r(function(t,r){for(;;){if(v.cmp(t,0)<1)return r;var n=r;if("[]"===n.ctor)return r;var e=t-1,o=n._1;t=e,r=o}}),M=O.map5,F=O.map4,D=O.map3,P=O.map2,J=r(function(t,r){for(;;){var n=r;if("[]"===n.ctor)return!1;if(t(n._0))return!0;var e=t,o=n._1;t=e,r=o}}),j=r(function(t,r){return!a(J,function(r){return!t(r)},r)}),V=O.foldr,U=n(function(t,r,n){for(;;){var e=n;if("[]"===e.ctor)return r;var o=t,c=a(t,e._0,r),u=e._1;t=o,r=c,n=u}}),W=function(t){return l(U,r(function(t,r){return r+1}),0,t)},H=r(function(t,r){return a(J,function(r){return v.eq(r,t)},r)}),Q=function(t){var r=t;return"::"===r.ctor?S(r._1):R},K=function(t){var r=t;return"::"===r.ctor?S(r._0):R},X=X||{};X["::"]=O.cons;var G=r(function(t,n){return l(V,r(function(r,n){return{ctor:"::",_0:t(r),_1:n}}),{ctor:"[]"},n)}),Y=r(function(t,n){var e=r(function(r,n){return t(r)?{ctor:"::",_0:r,_1:n}:n});return l(V,e,{ctor:"[]"},n)}),Z=n(function(t,r,n){var e=t(r);return"Just"===e.ctor?{ctor:"::",_0:e._0,_1:n}:n}),tt=r(function(t,r){return l(V,Z(t),{ctor:"[]"},r)}),rt=function(t){return l(U,r(function(t,r){return{ctor:"::",_0:t,_1:r}}),{ctor:"[]"},t)},nt=n(function(t,n,e){var o=r(function(r,n){var e=n;return"::"===e.ctor?{ctor:"::",_0:a(t,r,e._0),_1:n}:{ctor:"[]"}});return rt(l(U,o,{ctor:"::",_0:n,_1:{ctor:"[]"}},e))}),et=r(function(t,n){return"[]"===n.ctor?t:l(V,r(function(t,r){return{ctor:"::",_0:t,_1:r}}),n,t)}),ot=function(t){return l(V,et,{ctor:"[]"},t)},ct=r(function(t,r){return ot(a(G,t,r))}),ut=(r(function(t,n){var e=r(function(r,n){var e=n,o=e._0,c=e._1;return t(r)?{ctor:"_Tuple2",_0:{ctor:"::",_0:r,_1:o},_1:c}:{ctor:"_Tuple2",_0:o,_1:{ctor:"::",_0:r,_1:c}}});return l(V,e,{ctor:"_Tuple2",_0:{ctor:"[]"},_1:{ctor:"[]"}},n)}),r(function(t,n){var e=n;if("[]"===e.ctor)return{ctor:"[]"};var o=r(function(r,n){return{ctor:"::",_0:t,_1:{ctor:"::",_0:r,_1:n}}}),c=l(V,o,{ctor:"[]"},e._1);return{ctor:"::",_0:e._0,_1:c}}),n(function(t,r,n){for(;;){if(v.cmp(t,0)<1)return n;var e=r;if("[]"===e.ctor)return n;var o=t-1,c=e._1,u={ctor:"::",_0:e._0,_1:n};t=o,r=c,n=u}})),it=r(function(t,r){return rt(l(ut,t,r,{ctor:"[]"}))}),_t=n(function(t,r,n){if(v.cmp(r,0)<1)return{ctor:"[]"};var e={ctor:"_Tuple2",_0:r,_1:n};t:do{r:do{if("_Tuple2"!==e.ctor)break t;if("[]"===e._1.ctor)return n;if("::"!==e._1._1.ctor){if(1===e._0)break r;break t}switch(e._0){case 1:break r;case 2:return{ctor:"::",_0:e._1._0,_1:{ctor:"::",_0:e._1._1._0,_1:{ctor:"[]"}}};case 3:if("::"===e._1._1._1.ctor)return{ctor:"::",_0:e._1._0,_1:{ctor:"::",_0:e._1._1._0,_1:{ctor:"::",_0:e._1._1._1._0,_1:{ctor:"[]"}}}};break t;default:if("::"===e._1._1._1.ctor&&"::"===e._1._1._1._1.ctor){var o=e._1._1._1._0,c=e._1._1._0,u=e._1._0,i=e._1._1._1._1._0,_=e._1._1._1._1._1;return v.cmp(t,1e3)>0?{ctor:"::",_0:u,_1:{ctor:"::",_0:c,_1:{ctor:"::",_0:o,_1:{ctor:"::",_0:i,_1:a(it,r-4,_)}}}}:{ctor:"::",_0:u,_1:{ctor:"::",_0:c,_1:{ctor:"::",_0:o,_1:{ctor:"::",_0:i,_1:l(_t,t+1,r-4,_)}}}}}break t}}while(!1);return{ctor:"::",_0:e._1._0,_1:{ctor:"[]"}}}while(!1);return n}),at=r(function(t,r){return l(_t,0,t,r)}),lt=n(function(t,r,n){for(;;){if(v.cmp(r,0)<1)return t;var e={ctor:"::",_0:n,_1:t},o=r-1,c=n;t=e,r=o,n=c}}),ft=r(function(t,r){return l(lt,{ctor:"[]"},t,r)}),st=n(function(t,r,n){for(;;){if(!(v.cmp(t,r)<1))return n;var e=t,o=r-1,c={ctor:"::",_0:r,_1:n};t=e,r=o,n=c}}),dt=r(function(t,r){return l(st,t,r,{ctor:"[]"})}),pt=r(function(t,r){return l(P,t,a(dt,0,W(r)-1),r)}),ht=r(function(t,r){var n=r;return"Ok"===n.ctor?n._0:t}),vt=function(t){return{ctor:"Err",_0:t}},gt=(r(function(t,r){var n=r;return"Ok"===n.ctor?t(n._0):vt(n._0)}),function(t){return{ctor:"Ok",_0:t}}),mt=r(function(t,r){var n=r;return"Ok"===n.ctor?gt(t(n._0)):vt(n._0)}),bt=(n(function(t,r,n){var e={ctor:"_Tuple2",_0:r,_1:n};return"Ok"===e._0.ctor?"Ok"===e._1.ctor?gt(a(t,e._0._0,e._1._0)):vt(e._1._0):vt(e._0._0)}),e(function(t,r,n,e){var o={ctor:"_Tuple3",_0:r,_1:n,_2:e};return"Ok"===o._0.ctor?"Ok"===o._1.ctor?"Ok"===o._2.ctor?gt(l(t,o._0._0,o._1._0,o._2._0)):vt(o._2._0):vt(o._1._0):vt(o._0._0)}),o(function(t,r,n,e,o){var c={ctor:"_Tuple4",_0:r,_1:n,_2:e,_3:o};return"Ok"===c._0.ctor?"Ok"===c._1.ctor?"Ok"===c._2.ctor?"Ok"===c._3.ctor?gt(f(t,c._0._0,c._1._0,c._2._0,c._3._0)):vt(c._3._0):vt(c._2._0):vt(c._1._0):vt(c._0._0)}),c(function(t,r,n,e,o,c){var u={ctor:"_Tuple5",_0:r,_1:n,_2:e,_3:o,_4:c};return"Ok"===u._0.ctor?"Ok"===u._1.ctor?"Ok"===u._2.ctor?"Ok"===u._3.ctor?"Ok"===u._4.ctor?gt(s(t,u._0._0,u._1._0,u._2._0,u._3._0,u._4._0)):vt(u._4._0):vt(u._3._0):vt(u._2._0):vt(u._1._0):vt(u._0._0)}),r(function(t,r){var n=r;return"Ok"===n.ctor?gt(n._0):vt(t(n._0))})),yt=(r(function(t,r){var n=r;return"Just"===n.ctor?gt(n._0):vt(t)}),function(){function t(t){return 0===t.length}function e(t,r){return t+r}function o(t){var r=t[0];return r?S(v.Tuple2(v.chr(r),t.slice(1))):R}function c(t,r){return t+r}function u(t){return O.toArray(t).join("")}function i(t){return t.length}function _(t,r){for(var n=r.split(""),e=n.length;e--;)n[e]=t(v.chr(n[e]));return n.join("")}function l(t,r){return r.split("").map(v.chr).filter(t).join("")}function f(t){return t.split("").reverse().join("")}function s(t,r,n){for(var e=n.length,o=0;o0;)1&t&&(n+=r),t>>=1,r+=r;return n}function m(t,r,n){return n.slice(t,r)}function b(t,r){return t<1?"":r.slice(0,t)}function y(t,r){return t<1?"":r.slice(-t)}function k(t,r){return t<1?r:r.slice(t)}function T(t,r){return t<1?r:r.slice(0,-t)}function w(t,r,n){var e=(t-n.length)/2;return g(Math.ceil(e),r)+n+g(0|e,r)}function x(t,r,n){return n+g(t-n.length,r)}function E(t,r,n){return g(t-n.length,r)+n}function B(t){return t.trim()}function C(t){return t.replace(/^\s+/,"")}function N(t){return t.replace(/\s+$/,"")}function A(t){return O.fromArray(t.trim().split(/\s+/g))}function $(t){return O.fromArray(t.split(/\r\n|\r|\n/g))}function L(t){return t.toUpperCase()}function I(t){return t.toLowerCase()}function z(t,r){for(var n=r.length;n--;)if(t(v.chr(r[n])))return!0;return!1}function q(t,r){for(var n=r.length;n--;)if(!t(v.chr(r[n])))return!1;return!0}function M(t,r){return r.indexOf(t)>-1}function F(t,r){return 0===r.indexOf(t)}function D(t,r){return r.length>=t.length&&r.lastIndexOf(t)===r.length-t.length}function P(t,r){var n=t.length;if(n<1)return O.Nil;for(var e=0,o=[];(e=r.indexOf(t,e))>-1;)o.push(e),e+=n;return O.fromArray(o)}function J(t){var r=t.length;if(0===r)return j(t);var n=t[0];if("0"===n&&"x"===t[1]){for(var e=2;e"9"||n<"0"&&"-"!==n&&"+"!==n)return j(t);for(var e=1;e-1&&v.cmp(e,wt(r))<1})),Et=a(xt,v.chr("A"),v.chr("Z")),Bt=a(xt,v.chr("a"),v.chr("z")),Ct=a(xt,v.chr("0"),v.chr("9")),Nt=a(xt,v.chr("0"),v.chr("7")),Rt=function(t){return Ct(t)||l(xt,v.chr("a"),v.chr("f"),t)||l(xt,v.chr("A"),v.chr("F"),t)},At=yt.fromList,St=yt.toList,$t=yt.toFloat,Lt=yt.toInt,Ot=(yt.indexes,yt.indexes,yt.endsWith,yt.startsWith),It=yt.contains,zt=(yt.all,yt.any,yt.toLower),qt=yt.toUpper,Mt=yt.lines,Ft=(yt.words,yt.trimRight),Dt=(yt.trimLeft,yt.trim),Pt=(yt.padRight,yt.padLeft,yt.pad,yt.dropRight,yt.dropLeft),Jt=(yt.right,yt.left,yt.slice),jt=yt.repeat,Vt=yt.join,Ut=yt.split,Wt=(yt.foldr,yt.foldl,yt.reverse,yt.filter),Ht=(yt.map,yt.length),Qt=yt.concat,Kt=(yt.append,yt.uncons),Xt=yt.cons,Gt=function(t){return a(Xt,t,"")},Yt=yt.isEmpty,Zt=r(function(t,r){var n=r;return{ctor:"_Tuple2",_0:n._0,_1:t(n._1)}}),tr=r(function(t,r){var n=r;return{ctor:"_Tuple2",_0:t(n._0),_1:n._1}}),rr=function(t){return t._1},nr=function(t){return t._0},er=function(){function t(t){return function(r){return function(r,n){r.worker=function(r){if(void 0!==r)throw new Error("The `"+n+"` module does not need flags.\nCall "+n+".worker() with no arguments and you should be all set!");return u(t.init,t.update,t.subscriptions,o)}}}}function e(t){return function(r){return function(n,e){n.worker=function(n){if(void 0===r)throw new Error("Are you trying to sneak a Never value into Elm? Trickster!\nIt looks like "+e+".main is defined with `programWithFlags` but has type `Program Never`.\nUse `program` instead if you do not want flags.");var c=a(Ju.run,r,n);if("Err"===c.ctor)throw new Error(e+".worker(...) was called with an unexpected argument.\nI tried to convert it to an Elm value, but ran into this problem:\n\n"+c._0);return u(t.init(c._0),t.update,t.subscriptions,o)}}}}function o(t,r){return function(t){}}function c(t){var n=g(O.Nil),e=v.Tuple2(v.Tuple0,n);return Ku({init:e,view:function(t){return main},update:r(function(t,r){return e}),subscriptions:function(t){return n}})}function u(t,r,n,e){function o(t,e){return or.nativeBinding(function(o){var c=a(r,t,e);e=c._0,u(e);var i=c._1,l=n(e);b(_,i,l),o(or.succeed(e))})}function c(t){or.rawSend(f,t)}var u,_={},l=or.nativeBinding(function(r){var o=t._0;u=e(c,o);var i=t._1,a=n(o);b(_,i,a),r(or.succeed(o))}),f=p(l,o),s=i(_,c);return s?{ports:s}:{}}function i(t,r){var n;for(var e in N){var o=N[e];o.isForeign&&(n=n||{},n[e]="cmd"===o.tag?E(e):C(e,r)),t[e]=_(o,r)}return n}function _(t,r){function n(t,r){if("self"===t.ctor)return l(u,e,t._0,r);var n=t._0;switch(o){case"cmd":return l(c,e,n.cmds,r);case"sub":return l(c,e,n.subs,r);case"fx":return f(c,e,n.cmds,n.subs,r)}}var e={main:r,self:void 0},o=t.tag,c=t.onEffects,u=t.onSelfMsg,i=p(t.init,n);return e.self=i,i}function s(t,r){return or.nativeBinding(function(n){t.main(r),n(or.succeed(v.Tuple0))})}function d(t,r){return a(or.send,t.self,{ctor:"self",_0:r})}function p(t,r){function n(t){var o=or.receive(function(n){return r(n,t)});return a(e,n,o)}var e=or.andThen,o=a(e,n,t);return or.rawSpawn(o)}function h(t){return function(r){return{type:"leaf",home:t,value:r}}}function g(t){return{type:"node",branches:t}}function m(t,r){return{type:"map",tagger:t,tree:r}}function b(t,r,n){var e={};y(!0,r,e,null),y(!1,n,e,null);for(var o in t){var c=o in e?e[o]:{cmds:O.Nil,subs:O.Nil};or.rawSend(t[o],{ctor:"fx",_0:c})}}function y(t,r,n,e){switch(r.type){case"leaf":var o=r.home,c=k(t,o,e,r.value);return void(n[o]=T(t,c,n[o]));case"node":for(var u=r.branches;"[]"!==u.ctor;)y(t,u._0,n,e),u=u._1;return;case"map":return void y(t,r.tree,n,{tagger:r.tagger,rest:e})}}function k(t,r,n,e){function o(t){for(var r=n;r;)t=r.tagger(t),r=r.rest;return t}return a(t?N[r].cmdMap:N[r].subMap,o,e)}function T(t,r,n){return n=n||{cmds:O.Nil,subs:O.Nil},t?(n.cmds=O.Cons(r,n.cmds),n):(n.subs=O.Cons(r,n.subs),n)}function w(t){if(t in N)throw new Error("There can only be one port named `"+t+"`, but your program has multiple.")}function x(t,r){return w(t),N[t]={tag:"cmd",cmdMap:R,converter:r,isForeign:!0},h(t)}function E(t){function r(t,r,n){for(;"[]"!==r.ctor;){for(var e=c,o=u(r._0),_=0;_=0&&c.splice(r,1)}var c=[],u=N[t].converter,i=or.succeed(null);return N[t].init=i,N[t].onEffects=n(r),{subscribe:e,unsubscribe:o}}function B(t,r){return w(t),N[t]={tag:"sub",subMap:A,converter:r,isForeign:!0},h(t)}function C(t,r){function e(t,r,n){for(var e=o(t,r,n),c=0;c0;){var f=e[a];l[--a]=void 0===f?R:S(f)}o.push({match:e[0],submatches:O.fromArray(l),index:e.index,number:c}),_=r.lastIndex}return r.lastIndex=i,O.fromArray(o)}function _(t,r,n,e){function o(r){if(c++>=t)return r;for(var e=arguments.length-3,o=new Array(e);e>0;){var u=arguments[e];o[--e]=void 0===u?R:S(u)}return n({match:r,submatches:O.fromArray(o),index:arguments[arguments.length-2],number:c})}t="All"===t.ctor?1/0:t._0;var c=0;return e.replace(r,o)}function a(t,r,n){if((t="All"===t.ctor?1/0:t._0)===1/0)return O.fromArray(n.split(r));for(var e,o=n,c=[],u=r.lastIndex,i=r.lastIndex;t--&&(e=r.exec(o));)c.push(o.slice(u,e.index)),u=r.lastIndex;return c.push(o.slice(u)),r.lastIndex=i,O.fromArray(c)}return{regex:c,caseInsensitive:o,escape:t,contains:r(u),find:n(i),replace:e(_),split:n(a)}}()),pr=dr.split,hr=dr.replace,vr=dr.find,gr=dr.contains,mr=(dr.caseInsensitive,dr.regex),br=(dr.escape,e(function(t,r,n,e){return{match:t,submatches:r,index:n,number:e}}),function(t){return{ctor:"AtMost",_0:t}}),yr={ctor:"All"},kr=function(t){var r=t;return"Parser"===r.ctor?r._0:lr(r._0)},Tr=n(function(t,r,n){return{data:t,input:r,position:n}}),wr=function(t){return l(Tr,t,t,0)},xr=n(function(t,r,n){var e=l(kr,t,r,wr(n));return"Ok"===e._2.ctor?gt({ctor:"_Tuple3",_0:e._0,_1:e._1,_2:e._2._0}):vt({ctor:"_Tuple3",_0:e._0,_1:e._1,_2:e._2._0})}),Er=function(t){return a(xr,t,{ctor:"_Tuple0"})},Br=(n(function(t,r,n){return{source:t,line:r,column:n}}),function(t){return{ctor:"RecursiveParser",_0:t}}),Cr=function(t){return Br(sr(function(r){return kr(t({ctor:"_Tuple0"}))}))},Nr=function(t){return{ctor:"Parser",_0:t}},Rr=Nr,Ar=n(function(t,n,e){return Nr(r(function(r,o){var c=l(kr,e,r,o);return"Ok"===c._2.ctor?{ctor:"_Tuple3",_0:c._0,_1:c._1,_2:gt(t(c._2._0))}:{ctor:"_Tuple3",_0:c._0,_1:c._1,_2:vt(n(c._2._0))}}))}),Sr=r(function(t,r){return l(Ar,t,y,r)}),$r=$r||{};$r["<$>"]=Sr;var $r=$r||{};$r["<$"]=function(t){return Sr(b(t))};var $r=$r||{};$r["$>"]=m(r(function(t,r){return a($r["<$"],t,r)}));var Lr=Ar(y),$r=$r||{};$r[""]=r(function(t,r){return a(Lr,b({ctor:"::",_0:r,_1:{ctor:"[]"}}),t)});var Or=r(function(t,n){return Nr(r(function(r,e){var o=l(kr,n,r,e);return"Ok"===o._2.ctor?l(kr,t(o._2._0),o._0,o._1):{ctor:"_Tuple3",_0:o._0,_1:o._1,_2:vt(o._2._0)}}))}),$r=$r||{};$r[">>="]=m(Or);var Ir=r(function(t,r){return a($r[">>="],r,a(m,Sr,t))}),$r=$r||{};$r["<*>"]=m(Ir);var $r=$r||{};$r["<*"]=r(function(t,r){return a(Ir,r,a(Sr,b,t))});var $r=$r||{};$r["*>"]=r(function(t,r){return a(Ir,r,a(Sr,m(b),t))});var zr=n(function(t,r,n){return a($r["<*"],a($r["*>"],t,n),r)}),qr=function(t){var n=e(function(t,r,n,e){for(;;){var o=r;if("[]"===o.ctor)return{ctor:"_Tuple3",_0:n,_1:e,_2:gt(rt(t))};var c=l(kr,o._0,n,e);if("Ok"!==c._2.ctor)return{ctor:"_Tuple3",_0:c._0,_1:c._1,_2:vt(c._2._0)};var u={ctor:"::",_0:c._2._0,_1:t},i=o._1,_=c._0,a=c._1;t=u,r=i,n=_,e=a}});return Nr(r(function(r,e){return f(n,{ctor:"[]"},t,r,e)}))},Mr=function(t){return Nr(r(function(r,n){return{ctor:"_Tuple3",_0:r,_1:n,_2:vt({ctor:"::",_0:t,_1:{ctor:"[]"}})}}))},Fr=Nr(r(function(t,r){return{ctor:"_Tuple3",_0:t,_1:r,_2:vt({ctor:"[]"})}})),Dr=function(t){return Nr(r(function(r,n){return{ctor:"_Tuple3",_0:r,_1:n,_2:gt(t)}}))},Pr=(r(function(t,n){var e=r(function(t,r){return v.cmp(t,0)<1?Dr(rt(r)):a(Or,function(n){return a(e,t-1,{ctor:"::",_0:n,_1:r})},n)});return a(e,t,{ctor:"[]"})}),function(t){return Nr(r(function(r,n){if(a(Ot,t,n.input)){var e=Ht(t),o=a(Pt,e,n.input),c=n.position+e;return{ctor:"_Tuple3",_0:r,_1:v.update(n,{input:o,position:c}),_2:gt(t)}}return{ctor:"_Tuple3",_0:r,_1:n,_2:vt({ctor:"::",_0:a(k["++"],"expected ",T(t)),_1:{ctor:"[]"}})}}))}),Jr=a(zr,Pr("("),Pr(")")),jr=a(zr,Pr("{"),Pr("}")),Vr=a(zr,Pr("["),Pr("]")),Ur=function(t){var n=a(Ot,"^",t)?t:a(k["++"],"^",t);return Nr(r(function(t,r){var e=l(vr,br(1),mr(n),r.input);if("::"===e.ctor&&"[]"===e._1.ctor){var o=e._0,c=Ht(o.match),u=a(Pt,c,r.input),i=r.position+c;return{ctor:"_Tuple3",_0:t,_1:v.update(r,{input:u,position:i}),_2:gt(o.match)}}return{ctor:"_Tuple3",_0:t,_1:r,_2:vt({ctor:"::",_0:a(k["++"],"expected input matching Regexp /",a(k["++"],n,"/")),_1:{ctor:"[]"}})}}))},Wr=a($r[""],Ur("[ \t\r\n]*"),"whitespace"),Hr=(a($r[""],Ur("[ \t\r\n]+"),"whitespace"),Nr(r(function(t,r){return v.eq(r.input,"")?{ctor:"_Tuple3",_0:t,_1:r,_2:gt({ctor:"_Tuple0"})}:{ctor:"_Tuple3",_0:t,_1:r,_2:vt({ctor:"::",_0:"expected end of input",_1:{ctor:"[]"}})}}))),Qr=function(t){return Nr(r(function(r,n){var e=l(kr,t,r,n);return"_Tuple3"===e.ctor&&"Ok"===e._2.ctor?{ctor:"_Tuple3",_0:e._0,_1:n,_2:gt(e._2._0)}:e}))},Kr=r(function(t,n){return Nr(r(function(r,e){var o=l(kr,t,r,e);if("Ok"===o._2.ctor)return o;var c=l(kr,n,r,e);return"Ok"===c._2.ctor?c:{ctor:"_Tuple3",_0:r,_1:e,_2:vt(a(k["++"],o._2._0,c._2._0))}}))}),Xr=function(t){return l(V,Kr,Fr,t)},$r=$r||{};$r["<|>"]=Kr;var Gr=r(function(t,r){return a($r["<|>"],r,Dr(t))}),Yr=r(function(t,r){var n=function(e){return a($r["<|>"],a(Or,function(t){return a(Or,function(r){return n(a(t,e,r))},r)},t),Dr(e))};return a(Or,n,r)}),Zr=r(function(t,r){var n=function(e){return a($r["<|>"],a(Or,function(t){return a(Or,function(r){return Dr(a(t,e,r))},a(Or,n,r))},t),Dr(e))};return a(Or,n,r)}),tn=function(t){return Nr(r(function(r,n){var e=l(kr,t,r,n);return"_Tuple3"===e.ctor&&"Ok"===e._2.ctor?{ctor:"_Tuple3",_0:e._0,_1:e._1,_2:gt(S(e._2._0))}:{ctor:"_Tuple3",_0:r,_1:n,_2:gt(R)}}))},rn=function(t){var e=n(function(r,n,e){for(;;){var o=l(kr,t,n,e);if("_Tuple3"!==o.ctor||"Ok"!==o._2.ctor)return{ctor:"_Tuple3",_0:n,_1:e,_2:rt(r)};var c=o._1,u=o._0;if(v.eq(e,c))return{ctor:"_Tuple3",_0:u,_1:c,_2:rt(r)};var i={ctor:"::",_0:o._2._0,_1:r},_=u,a=c;r=i,n=_,e=a}});return Nr(r(function(t,r){var n=l(e,{ctor:"[]"},t,r),o=n._0,c=n._1,u=n._2;return{ctor:"_Tuple3",_0:o,_1:c,_2:gt(u)}}))},nn=function(t){return a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"::",_0:t,_1:r}}),t),rn(t))},en=r(function(t,n){return a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"::",_0:t,_1:r}}),n),rn(a($r["*>"],t,n)))}),on=r(function(t,r){return a($r["<|>"],a(en,t,r),Dr({ctor:"[]"}))}),cn=r(function(t,r){return a($r["<*"],a(en,t,r),tn(t))}),un=(r(function(t,r){return a($r["<|>"],a(cn,t,r),Dr({ctor:"[]"}))}),r(function(t,r){var e=n(function(n,e,o){for(;;){var c=l(kr,r,e,o);if("Ok"===c._2.ctor)return{ctor:"_Tuple3",_0:c._0,_1:c._1,_2:gt(rt(n))};var u=l(kr,t,e,o);if("_Tuple3"!==u.ctor||"Ok"!==u._2.ctor)return{ctor:"_Tuple3",_0:c._0,_1:c._1,_2:vt(c._2._0)};var i={ctor:"::",_0:u._2._0,_1:n},_=u._0,a=u._1;n=i,e=_,o=a}});return Nr(e({ctor:"[]"}))})),_n=n(function(t,r,n){for(;;){var e=n;if("RBEmpty_elm_builtin"===e.ctor)return r;var o=t,c=l(t,e._1,e._2,l(_n,t,r,e._4)),u=e._3;t=o,r=c,n=u}}),an=function(t){return l(_n,n(function(t,r,n){return{ctor:"::",_0:t,_1:n}}),{ctor:"[]"},t)},ln=function(t){return l(_n,n(function(t,r,n){return{ctor:"::",_0:{ctor:"_Tuple2",_0:t,_1:r},_1:n}}),{ctor:"[]"},t)},fn=n(function(t,r,n){for(;;){var e=n;if("RBEmpty_elm_builtin"===e.ctor)return r;var o=t,c=l(t,e._1,e._2,l(fn,t,r,e._3)),u=e._4;t=o,r=c,n=u}}),sn=c(function(t,e,o,c,u,i){var _=n(function(r,n,c){for(;;){var u=c,i=u._1,_=u._0,a=_;if("[]"===a.ctor)return{ctor:"_Tuple2",_0:_,_1:l(o,r,n,i)};var s=a._1,d=a._0._1,p=a._0._0;if(!(v.cmp(p,r)<0))return v.cmp(p,r)>0?{ctor:"_Tuple2",_0:_,_1:l(o,r,n,i)}:{ctor:"_Tuple2",_0:s,_1:f(e,p,d,n,i)};var h=r,g=n,m={ctor:"_Tuple2",_0:s,_1:l(t,p,d,i)};r=h,n=g,c=m}}),a=l(fn,_,{ctor:"_Tuple2",_0:ln(c),_1:i},u),s=a._0,d=a._1;return l(U,r(function(r,n){var e=r;return l(t,e._0,e._1,n)}),d,s)}),dn=e(function(t,r,n,e){return B.crash(Qt({ctor:"::",_0:"Internal red-black tree invariant violated, expected ",_1:{ctor:"::",_0:t,_1:{ctor:"::",_0:" and got ",_1:{ctor:"::",_0:T(r),_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:n,_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:e,_1:{ctor:"::",_0:"\nPlease report this bug to ",_1:{ctor:"[]"}}}}}}}}}}))}),pn=function(t){var r=t;t:do{if("RBNode_elm_builtin"===r.ctor){if("BBlack"===r._0.ctor)return!0;break t}if("LBBlack"===r._0.ctor)return!0;break t}while(!1);return!1},hn=r(function(t,r){for(;;){var n=r;if("RBEmpty_elm_builtin"===n.ctor)return t;var e=a(hn,t+1,n._4),o=n._3;t=e,r=o}}),vn=r(function(t,r){t:for(;;){var n=r;if("RBEmpty_elm_builtin"===n.ctor)return R;var e=a(x,t,n._1);switch(e.ctor){case"LT":var o=t,c=n._3;t=o,r=c;continue t;case"EQ":return S(n._2);default:var u=t,i=n._4;t=u,r=i;continue t}}}),gn=r(function(t,r){return"Just"===a(vn,t,r).ctor}),mn=n(function(t,r,n){for(;;){var e=n;if("RBEmpty_elm_builtin"===e.ctor)return{ctor:"_Tuple2",_0:t,_1:r};var o=e._1,c=e._2,u=e._4;t=o,r=c,n=u}}),bn={ctor:"NBlack"},yn={ctor:"BBlack"},kn={ctor:"Black"},Tn=function(t){var r=t;if("RBNode_elm_builtin"===r.ctor){var n=r._0;return v.eq(n,kn)||v.eq(n,yn)}return!0},wn={ctor:"Red"},xn=function(t){switch(t.ctor){case"Black":return yn;case"Red":return kn;case"NBlack":return wn;default:return B.crash("Can't make a double black node more black!")}},En=function(t){switch(t.ctor){case"BBlack":return kn;case"Black":return wn;case"Red":return bn;default:return B.crash("Can't make a negative black node less black!")}},Bn={ctor:"LBBlack"},Cn={ctor:"LBlack"},Nn=function(t){return{ctor:"RBEmpty_elm_builtin",_0:t}},Rn=Nn(Cn),An=o(function(t,r,n,e,o){return{ctor:"RBNode_elm_builtin",_0:t,_1:r,_2:n,_3:e,_4:o}}),Sn=function(t){var r=t;return"RBNode_elm_builtin"===r.ctor&&"Red"===r._0.ctor?s(An,kn,r._1,r._2,r._3,r._4):t},$n=function(t){var r=t;return"RBNode_elm_builtin"===r.ctor?s(An,En(r._0),r._1,r._2,r._3,r._4):Nn(Cn)},Ln=function(t){return function(r){return function(n){return function(e){return function(o){return function(c){return function(u){return function(i){return function(_){return function(a){return function(l){return s(An,En(t),e,o,s(An,kn,r,n,i,_),s(An,kn,c,u,a,l))}}}}}}}}}}},On=function(t){var r=t;return"RBEmpty_elm_builtin"===r.ctor?Nn(Cn):s(An,kn,r._1,r._2,r._3,r._4)},In=function(t){var r=t;return"RBEmpty_elm_builtin"===r.ctor?B.crash("can't make a Leaf red"):s(An,wn,r._1,r._2,r._3,r._4)},zn=function(t){var r=t;t:do{r:do{n:do{e:do{o:do{c:do{u:do{if("RBNode_elm_builtin"!==r.ctor)break t;if("RBNode_elm_builtin"===r._3.ctor)if("RBNode_elm_builtin"===r._4.ctor)switch(r._3._0.ctor){case"Red":switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break e;break t;case"NBlack":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break n;break t;default:if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;break t}case"NBlack":switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break e;if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t;case"NBlack":if("BBlack"===r._0.ctor){if("RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break n;if("RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t}break t;default:if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t}default:switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break e;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break n;break t;default:break t}}else switch(r._3._0.ctor){case"Red":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t;default:break t}else{if("RBNode_elm_builtin"!==r._4.ctor)break t;switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break e;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break n;break t;default:break t}}}while(!1);return Ln(r._0)(r._3._3._1)(r._3._3._2)(r._3._1)(r._3._2)(r._1)(r._2)(r._3._3._3)(r._3._3._4)(r._3._4)(r._4)}while(!1);return Ln(r._0)(r._3._1)(r._3._2)(r._3._4._1)(r._3._4._2)(r._1)(r._2)(r._3._3)(r._3._4._3)(r._3._4._4)(r._4)}while(!1);return Ln(r._0)(r._1)(r._2)(r._4._3._1)(r._4._3._2)(r._4._1)(r._4._2)(r._3)(r._4._3._3)(r._4._3._4)(r._4._4)}while(!1);return Ln(r._0)(r._1)(r._2)(r._4._1)(r._4._2)(r._4._4._1)(r._4._4._2)(r._3)(r._4._3)(r._4._4._3)(r._4._4._4)}while(!1);return s(An,kn,r._4._3._1,r._4._3._2,s(An,kn,r._1,r._2,r._3,r._4._3._3),s(qn,kn,r._4._1,r._4._2,r._4._3._4,In(r._4._4)))}while(!1);return s(An,kn,r._3._4._1,r._3._4._2,s(qn,kn,r._3._1,r._3._2,In(r._3._3),r._3._4._3),s(An,kn,r._1,r._2,r._3._4._4,r._4))}while(!1);return t},qn=o(function(t,r,n,e,o){var c=s(An,t,r,n,e,o);return Tn(c)?zn(c):c}),Mn=o(function(t,r,n,e,o){return pn(e)||pn(o)?s(qn,xn(t),r,n,$n(e),$n(o)):s(An,t,r,n,e,o)}),Fn=o(function(t,r,n,e,o){var c=o;return"RBEmpty_elm_builtin"===c.ctor?l(Dn,t,e,o):s(Mn,t,r,n,e,s(Fn,c._0,c._1,c._2,c._3,c._4))}),Dn=n(function(t,r,n){var e={ctor:"_Tuple2",_0:r,_1:n};if("RBEmpty_elm_builtin"!==e._0.ctor){if("RBEmpty_elm_builtin"===e._1.ctor){var o=e._1._0,c=e._0._0,u={ctor:"_Tuple3",_0:t,_1:c,_2:o};return"_Tuple3"===u.ctor&&"Black"===u._0.ctor&&"Red"===u._1.ctor&&"LBlack"===u._2.ctor?s(An,kn,e._0._1,e._0._2,e._0._3,e._0._4):f(dn,"Black/Red/LBlack",t,T(c),T(o))}var i=e._0._2,_=e._0._4,a=e._0._1,d=s(Fn,e._0._0,a,i,e._0._3,_),p=l(mn,a,i,_),h=p._0,v=p._1;return s(Mn,t,h,v,d,n)}if("RBEmpty_elm_builtin"!==e._1.ctor){var g=e._1._0,m=e._0._0,b={ctor:"_Tuple3",_0:t,_1:m,_2:g};return"_Tuple3"===b.ctor&&"Black"===b._0.ctor&&"LBlack"===b._1.ctor&&"Red"===b._2.ctor?s(An,kn,e._1._1,e._1._2,e._1._3,e._1._4):f(dn,"Black/LBlack/Red",t,T(m),T(g))}switch(t.ctor){case"Red":return Nn(Cn);case"Black":return Nn(Bn);default:return B.crash("cannot have bblack or nblack nodes at this point")}}),Pn=r(function(t,r){var n=r;if("RBEmpty_elm_builtin"===n.ctor)return Nn(Cn);var e=n._1;return s(An,n._0,e,a(t,e,n._2),a(Pn,t,n._3),a(Pn,t,n._4))}),Jn={ctor:"Same"},jn={ctor:"Remove"},Vn={ctor:"Insert"},Un=n(function(t,r,n){var e=function(n){var o=n;if("RBEmpty_elm_builtin"===o.ctor){var c=r(R);return"Nothing"===c.ctor?{ctor:"_Tuple2",_0:Jn,_1:Rn}:{ctor:"_Tuple2",_0:Vn,_1:s(An,wn,t,c._0,Rn,Rn)}}var u=o._2,i=o._4,_=o._3,f=o._1,d=o._0;switch(a(x,t,f).ctor){case"EQ":var p=r(S(u));return"Nothing"===p.ctor?{ctor:"_Tuple2",_0:jn,_1:l(Dn,d,_,i)}:{ctor:"_Tuple2",_0:Jn,_1:s(An,d,f,p._0,_,i)};case"LT":var h=e(_),v=h._0,g=h._1;switch(v.ctor){case"Same":return{ctor:"_Tuple2",_0:Jn,_1:s(An,d,f,u,g,i)};case"Insert":return{ctor:"_Tuple2",_0:Vn,_1:s(qn,d,f,u,g,i)};default:return{ctor:"_Tuple2",_0:jn,_1:s(Mn,d,f,u,g,i)}}default:var m=e(i),v=m._0,b=m._1;switch(v.ctor){case"Same":return{ctor:"_Tuple2",_0:Jn,_1:s(An,d,f,u,_,b)};case"Insert":return{ctor:"_Tuple2",_0:Vn,_1:s(qn,d,f,u,_,b)};default:return{ctor:"_Tuple2",_0:jn,_1:s(Mn,d,f,u,_,b)}}}},o=e(n),c=o._0,u=o._1;switch(c.ctor){case"Same":return u;case"Insert":return Sn(u);default:return On(u)}}),Wn=n(function(t,r,n){return l(Un,t,b(S(r)),n)}),Hn=r(function(t,r){return l(Wn,t,r,Rn)}),Qn=r(function(t,r){return l(fn,Wn,r,t)}),Kn=r(function(t,r){var e=n(function(r,n,e){return a(t,r,n)?l(Wn,r,n,e):e});return l(fn,e,Rn,r)}),Xn=r(function(t,n){return a(Kn,r(function(t,r){return a(gn,t,n)}),t)}),Gn=r(function(t,r){var e=n(function(r,n,e){var o=e,c=o._1,u=o._0;return a(t,r,n)?{ctor:"_Tuple2",_0:l(Wn,r,n,u),_1:c}:{ctor:"_Tuple2",_0:u,_1:l(Wn,r,n,c)}});return l(fn,e,{ctor:"_Tuple2",_0:Rn,_1:Rn},r)}),Yn=function(t){return l(U,r(function(t,r){var n=t;return l(Wn,n._0,n._1,r)}),Rn,t)},Zn=r(function(t,r){return l(Un,t,b(R),r)}),te=r(function(t,r){return l(fn,n(function(t,r,n){return a(Zn,t,n)}),t,r)}),re=a($r["<$"],v.chr("\n"),a($r[""],Ur("\r\n"),"expected crlf")),ne=function(t){return Rr(r(function(r,n){var e="could not satisfy predicate",o=Kt(n.input);if("Just"===o.ctor){var c=o._0._0;return t(c)?{ctor:"_Tuple3",_0:r,_1:v.update(n,{input:o._0._1,position:n.position+1}),_2:gt(c)}:{ctor:"_Tuple3",_0:r,_1:n,_2:vt({ctor:"::",_0:e,_1:{ctor:"[]"}})}}return{ctor:"_Tuple3",_0:r,_1:n,_2:vt({ctor:"::",_0:e,_1:{ctor:"[]"}})}}))},ee=a($r[""],ne(b(!0)),"expected any character"),oe=(a($r[""],ne(r(function(t,r){return v.eq(t,r)})(v.chr(" "))),"expected space"),a($r[""],ne(r(function(t,r){return v.eq(t,r)})(v.chr("\t"))),"expected tab"),a($r[""],ne(r(function(t,r){return v.eq(t,r)})(v.chr("\n"))),"expected newline")),ce=(a($r["<|>"],oe,re),a($r[""],ne(Bt),"expected a lowercase character")),ue=a($r[""],ne(Et),"expected an uppercase character"),ie=a($r[""],ne(Ct),"expected a digit"),_e=(a($r[""],ne(Nt),"expected an octal digit"),a($r[""],ne(Rt),"expected a hexadecimal digit"),Pr("()")),ae=function(t){return a($r["<*>"],a($r["<$>"],Xt,t),Ur("[a-zA-Z0-9-_]*"))},le=ae(ue),fe=Ur("[ \\t]+"),se=function(t){return a($r["<*"],Pr(t),fe)},de=Ur("[ \\t]*"),pe=function(t){return a(zr,t,t)},he=function(t){return a(pe,Wr,a($r["<*"],Pr(t),Ur("( |\\n)+")))},ve=function(t){return a(pe,Wr,Pr(t))},ge=function(t){return a(en,Pr(","),a(pe,Wr,t))},me=function(t){return a(on,Pr(","),a(pe,Wr,t))},be=a(pe,de,a(en,Pr("."),le)),ye={ctor:"::",_0:"=",_1:{ctor:"::",_0:".",_1:{ctor:"::",_0:"..",_1:{ctor:"::",_0:"->",_1:{ctor:"::",_0:"--",_1:{ctor:"::",_0:"|",_1:{ctor:"::",_0:":",_1:{ctor:"[]"}}}}}}}},ke=Cr(function(t){return a($r[">>="],Ur("[+\\-\\/*=.$<>:&|^?%#@~!]+|Šs\b"),function(t){return a(H,t,ye)?Mr(a(k["++"],"operator '",a(k["++"],t,"' is reserved"))):Dr(t)})}),Te={ctor:"::",_0:"module",_1:{ctor:"::",_0:"where",_1:{ctor:"::",_0:"import",_1:{ctor:"::",_0:"as",_1:{ctor:"::",_0:"exposing",_1:{ctor:"::",_0:"type",_1:{ctor:"::",_0:"alias",_1:{ctor:"::",_0:"port",_1:{ctor:"::",_0:"if",_1:{ctor:"::",_0:"then",_1:{ctor:"::",_0:"else",_1:{ctor:"::",_0:"let",_1:{ctor:"::",_0:"in",_1:{ctor:"::",_0:"case",_1:{ctor:"::",_0:"of",_1:{ctor:"[]"}}}}}}}}}}}}}}}},we=function(){var t=a($r[">>="],ae(ce),function(t){return a(H,t,Te)?Mr(a(k["++"],"name '",a(k["++"],t,"' is reserved"))):Dr(t)});return a($r["<|>"],Pr("_"),t)}(),xe=we,Ee={ctor:"R"},Be={ctor:"L"},Ce=l(Wn,"=",{ctor:"_Tuple2",_0:Ee,_1:0},l(Wn,"|>",{ctor:"_Tuple2",_0:Ee,_1:1},l(Wn,"<|",{ctor:"_Tuple2",_0:Ee,_1:1},l(Wn,">>",{ctor:"_Tuple2",_0:Be,_1:9},l(Wn,"<<",{ctor:"_Tuple2",_0:Be,_1:9},l(Wn,"^",{ctor:"_Tuple2",_0:Be,_1:8},l(Wn,"rem",{ctor:"_Tuple2",_0:Be,_1:7},l(Wn,"//",{ctor:"_Tuple2",_0:Be,_1:7},l(Wn,"%",{ctor:"_Tuple2",_0:Be,_1:7},l(Wn,"/",{ctor:"_Tuple2",_0:Be,_1:7},l(Wn,"*",{ctor:"_Tuple2",_0:Be,_1:7},l(Wn,"-",{ctor:"_Tuple2",_0:Be,_1:6},l(Wn,"+",{ctor:"_Tuple2",_0:Be,_1:6},l(Wn,"::",{ctor:"_Tuple2",_0:Ee,_1:5},l(Wn,"++",{ctor:"_Tuple2",_0:Ee,_1:5},l(Wn,"<=",{ctor:"_Tuple2",_0:Be,_1:4},l(Wn,">=",{ctor:"_Tuple2",_0:Be,_1:4},l(Wn,">",{ctor:"_Tuple2",_0:Be,_1:4},l(Wn,"<",{ctor:"_Tuple2",_0:Be,_1:4},l(Wn,"/=",{ctor:"_Tuple2",_0:Be,_1:4},l(Wn,"==",{ctor:"_Tuple2",_0:Be,_1:4},l(Wn,"&&",{ctor:"_Tuple2",_0:Be,_1:3},l(Wn,"||",{ctor:"_Tuple2",_0:Be,_1:2},Rn))))))))))))))))))))))),Ne={ctor:"N"},Re=(function(){var t=function(t){return wt(t)-wt(v.chr("0"))};a($r["<$>"],t,a($r[""],ie,"expected a digit"))}(),a(Gr,1,Xr({ctor:"::",_0:a($r["<$"],1,Pr("+")),_1:{ctor:"::",_0:a($r["<$"],-1,Pr("-")),_1:{ctor:"[]"}}}))),Ae=r(function(t,r){var n=t(r);return"Ok"===n.ctor?n._0:v.crashCase("Combine.Num",{start:{line:23,column:5},end:{line:28,column:83}},n)(a(k["++"],"impossible state in Combine.Num.unwrap: ",T(n._0)))}),Se=Ae(Lt),$e=a($r["<*>"],a($r["<$>"],r(function(t,r){return t*r}),Re),a($r[""],a($r["<$>"],Se,Ur("(0|[1-9][0-9]*)")),"expected an integer")),Le=Ae($t),Oe=a($r["<*>"],a($r["<$>"],function(t){return r(function(t,r){return t*r})(w(t))},Re),a($r[""],a($r["<$>"],Le,Ur("(0|[1-9][0-9]*)(\\.[0-9]+)")),"expected a float")),Ie=(n(function(t,r,e){var o=e;return l(_n,n(function(r,n,e){return a(t,r,e)}),r,o._0)}),n(function(t,r,e){var o=e;return l(fn,n(function(r,n,e){return a(t,r,e)}),r,o._0)}),function(t){return an(t._0)}),ze=r(function(t,r){return a(gn,t,r._0)}),qe=function(t){return{ctor:"Set_elm_builtin",_0:t}},Me=qe(Rn),Fe=r(function(t,r){return qe(l(Wn,t,{ctor:"_Tuple0"},r._0))}),De=function(t){return l(U,Fe,Me,t)},Pe=(r(function(t,r){return De(a(G,t,Ie(r)))}),r(function(t,r){return qe(a(Zn,t,r._0))}),r(function(t,r){var n=t,e=r;return qe(a(Qn,n._0,e._0))})),Je=(r(function(t,r){var n=t,e=r;return qe(a(Xn,n._0,e._0))}),r(function(t,r){var n=t,e=r;return qe(a(te,n._0,e._0))}),r(function(t,n){var e=n;return qe(a(Kn,r(function(r,n){return t(r)}),e._0))}),r(function(t,n){var e=n,o=a(Gn,r(function(r,n){return t(r)}),e._0),c=o._0,u=o._1;return{ctor:"_Tuple2",_0:qe(c),_1:qe(u)}}),n(function(t,r,n){var e=v.cmp(W(n),0)>0,o=v.cmp(t,0)>0&&v.cmp(r,0)>0,c=a(q,r,n),u=a(at,t,n);return o&&e?{ctor:"::",_0:u,_1:l(Je,t,r,c)}:{ctor:"[]"}})),je=(r(function(t,r){return l(Je,t,t,r)}),n(function(t,r,n){var e=v.cmp(t,0)>0&&v.cmp(r,0)>0,o=a(q,r,n),c=a(at,t,n),u=v.eq(t,W(c));return e&&u?{ctor:"::",_0:c,_1:l(je,t,r,o)}:{ctor:"[]"}})),Ve=(r(function(t,r){return l(je,t,t,r)}),M(o(function(t,r,n,e,o){return{ctor:"_Tuple5",_0:t,_1:r,_2:n,_3:e,_4:o}})),F(e(function(t,r,n,e){return{ctor:"_Tuple4",_0:t,_1:r,_2:n,_3:e}})),D(n(function(t,r,n){return{ctor:"_Tuple3",_0:t,_1:r,_2:n}})),P(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}})),r(function(t,r){var n={ctor:"_Tuple2",_0:t,_1:r};return"[]"===n._0.ctor||"[]"!==n._1.ctor&&v.eq(n._0._0,n._1._0)&&a(Ve,n._0._1,n._1._1)})),Ue=(r(function(t,r){return a(Ve,rt(t),rt(r))}),function(t){var r=t;if("[]"===r.ctor)return{ctor:"[]"};var n=r._1,e=r._0;return{ctor:"::",_0:{ctor:"_Tuple2",_0:e,_1:n},_1:a(G,function(t){var r=t;return{ctor:"_Tuple2",_0:r._0,_1:{ctor:"::",_0:e,_1:r._1}}},Ue(n))}}),We=r(function(t,r){var n=r;if("::"===n.ctor){var e=n._0;return{ctor:"::",_0:{ctor:"::",_0:t,_1:e},_1:{ctor:"::",_0:e,_1:n._1}}}return{ctor:"[]"}}),He=a(V,We,{ctor:"::",_0:{ctor:"[]"},_1:{ctor:"[]"}}),Qe=(r(function(t,r){return a(J,Ve(t),He(r))}),a(V,r(function(t,n){return{ctor:"::",_0:{ctor:"[]"},_1:a(G,r(function(t,r){return{ctor:"::",_0:t,_1:r}})(t),n)}}),{ctor:"::",_0:{ctor:"[]"},_1:{ctor:"[]"}}),r(function(t,r){var n=r;if("[]"===n.ctor)return{ctor:"[]"};if("[]"===n._1.ctor)return{ctor:"::",_0:{ctor:"::",_0:n._0,_1:{ctor:"[]"}},_1:{ctor:"[]"}};var e=n._0,o=a(Qe,t,n._1);return"::"===o.ctor?a(t,e,n._1._0)?{ctor:"::",_0:{ctor:"::",_0:e,_1:o._0},_1:o._1}:{ctor:"::",_0:{ctor:"::",_0:e,_1:{ctor:"[]"}},_1:o}:{ctor:"[]"}})),Ke=(r(function(t,n){var e=r(function(t,r){var n=r;return"Nothing"===n.ctor?R:"[]"===n._0.ctor?R:v.eq(t,n._0._0)?S(n._0._1):R});return l(U,e,S(n),t)}),r(function(t,r){return{ctor:"_Tuple2",_0:a(at,t,r),_1:a(q,t,r)}})),Xe=n(function(t,r,n){for(;;){var e={ctor:"_Tuple2",_0:t,_1:r};if("_Tuple2"!==e.ctor||"::"!==e._0.ctor||"::"!==e._1.ctor)return rt(n);var o=a(Ke,e._0._0,r),c=o._0,u=o._1,i=e._0._1,_=u,l={ctor:"::",_0:c,_1:n};t=i,r=_,n=l}}),Ge=(r(function(t,r){return l(Xe,t,r,{ctor:"[]"})}),r(function(t,r){var n=t(r);return"Nothing"===n.ctor?{ctor:"[]"}:{ctor:"::",_0:n._0._0,_1:a(Ge,t,n._0._1)}})),Ye=r(function(t,r){var n=r;if("[]"===n.ctor)return{ctor:"[]"};if("[]"===n._1.ctor)return{ctor:"::",_0:n._0,_1:{ctor:"[]"}};var e=a(Ye,t,n._1);return"::"===e.ctor?{ctor:"::",_0:a(t,n._0,e._0),_1:e}:{ctor:"[]"}}),Ze=n(function(t,r,n){var e=n;if("[]"===e.ctor)return{ctor:"::",_0:r,_1:{ctor:"[]"}};var o=l(Ze,t,r,e._1);return"::"===o.ctor?{ctor:"::",_0:a(t,e._0,o._0),_1:o}:{ctor:"[]"}}),to=(r(function(t,r){var n=r;return"[]"===n.ctor?{ctor:"[]"}:l(nt,t,n._0,n._1)}),n(function(t,n,e){var o=r(function(r,n){var e=n,o=e._0;return{ctor:"_Tuple2",_0:o-1,_1:l(t,o,r,e._1)}});return rr(l(V,o,{ctor:"_Tuple2",_0:W(e)-1,_1:n},e))}),n(function(t,n,e){var o=r(function(r,n){var e=n,o=e._0;return{ctor:"_Tuple2",_0:o+1,_1:l(t,o,r,e._1)}});return rr(l(U,o,{ctor:"_Tuple2",_0:0,_1:n},e))}),r(function(t,n){var e=r(function(r,n){return S(function(){var e=n;return"Nothing"===e.ctor?r:a(t,r,e._0)}())});return l(V,e,R,n)}),r(function(t,n){var e=r(function(r,n){return S(function(){var e=n;return"Nothing"===e.ctor?r:a(t,e._0,r)}())});return l(U,e,R,n)})),ro=n(function(t,r,n){t:for(;;){var e={ctor:"_Tuple2",_0:t,_1:r};r:do{if("::"===e._0.ctor){if("::"===e._1.ctor){var o=e._0._1,c=e._1._1,u=a(k["++"],n,{ctor:"::",_0:e._0._0,_1:{ctor:"::",_0:e._1._0,_1:{ctor:"[]"}}});t=o,r=c,n=u;continue t}break r}if("[]"===e._1.ctor)break r;return a(k["++"],n,e._1)}while(!1);return a(k["++"],n,e._0)}}),no=(r(function(t,r){return l(ro,t,r,{ctor:"[]"})}),function(t){var n=t;return"[]"===n.ctor?{ctor:"::",_0:{ctor:"[]"},_1:{ctor:"[]"}}:a(ct,function(t){var n=t;return a(G,r(function(t,r){return{ctor:"::",_0:t,_1:r}})(n._0),no(n._1))},Ue(n))}),eo=(r(function(t,r){return a(H,t,no(r))}),function(t){var n=t;if("[]"===n.ctor)return{ctor:"[]"};var e=n._0,o=r(function(t,r){return{ctor:"::",_0:t,_1:{ctor:"::",_0:{ctor:"::",_0:e,_1:t},_1:r}}});return{ctor:"::",_0:{ctor:"::",_0:e,_1:{ctor:"[]"}},_1:l(V,o,{ctor:"[]"},eo(n._1))}}),oo=function(t){return{ctor:"::",_0:{ctor:"[]"},_1:eo(t)}},co=(r(function(t,r){return a(H,t,oo(r))}),r(function(t,r){return a(Y,function(r){return!t(r)},r)}),r(function(t,r){if(v.cmp(t,0)<0)return r;var n=Q(a(q,t,r)),e=a(at,t,r),o=n;return"Nothing"===o.ctor?r:a(et,e,o._0)}),r(function(t,n){var e=r(function(r,n){var e=r,o=n,c=a(t,e._0,o._0);return"EQ"===c.ctor?a(x,e._1,o._1):c}),o=a(pt,r(function(t,r){return{ctor:"_Tuple2",_0:r,_1:t}}),n);return a(G,nr,a(I,e,o))}),n(function(t,r,n){if(v.cmp(t,0)<0)return R;var e=Q(a(q,t,n)),o=a(at,t,n),c=e;return"Nothing"===c.ctor?R:S(a(et,o,{ctor:"::",_0:r,_1:c._0}))}),r(function(t,r){var n=r;if("[]"===n.ctor)return{ctor:"[]"};var e=n._1,o=n._0;return v.eq(t,o)?e:{ctor:"::",_0:o,_1:a(co,t,e)}})),uo=n(function(t,n,e){return a(pt,r(function(r,e){return t(r)?n(e):e}),e)}),io=(n(function(t,n,e){return v.cmp(t,0)<0||v.cmp(t,W(e))>-1?R:S(l(uo,r(function(t,r){return v.eq(t,r)})(t),n,e))}),n(function(t,r,n){return a(G,function(n){return t(n)?r(n):n},n)})),_o=(n(function(t,r,n){return l(io,t,b(r),n)}),function(t){return function(n){return a(G,nr,a(Y,function(r){return t(r._1)},a(pt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),n)))}}),ao=function(t){return function(r){return K(a(_o,t,r))}},lo=(r(function(t,r){return a($,function(t){return a(Ke,t,r)},a(ao,t,r))}),r(function(t,r){for(;;){var n=r;if("[]"===n.ctor)return R;var e=n._0;if(t(e))return S(e);var o=t,c=n._1;t=o,r=c}}),ct),fo=(n(function(t,r,n){return a(lo,function(r){return a(lo,function(n){return{ctor:"::",_0:a(t,r,n),_1:{ctor:"[]"}}},n)},r)}),e(function(t,r,n,e){return a(lo,function(r){return a(lo,function(n){return a(lo,function(e){return{ctor:"::",_0:l(t,r,n,e),_1:{ctor:"[]"}}},e)},n)},r)}),o(function(t,r,n,e,o){return a(lo,function(r){return a(lo,function(n){return a(lo,function(e){return a(lo,function(o){return{ctor:"::",_0:f(t,r,n,e,o),_1:{ctor:"[]"}}},o)},e)},n)},r)}),r(function(t,n){return l(P,r(function(t,r){return t(r)}),n,t)}),n(function(t,r,n){for(;;){var e=n;if("[]"===e.ctor)return{ctor:"[]"};var o=e._1,c=e._0,u=t(c);if(!a(ze,u,r))return{ctor:"::",_0:c,_1:l(fo,t,a(Fe,u,r),o)};var i=t,_=r,f=o;t=i,r=_,n=f}})),so=r(function(t,r){return l(fo,t,Me,r)}),po=(r(function(t,r){return v.eq(W(r),W(a(so,t,r)))}),r(function(t,r){for(;;){var n=r;if("[]"===n.ctor)return{ctor:"[]"};if(!t(n._0))return r;var e=t,o=n._1;t=e,r=o}})),ho=function(t){return r(function(r,n){for(;;){var e=n;if("[]"===e.ctor)return rt(r);var o=e._0;if(!t(o))return rt(r);var c={ctor:"::",_0:o,_1:r},u=e._1;r=c,n=u}})({ctor:"[]"})},vo=r(function(t,r){return{ctor:"_Tuple2",_0:a(ho,t,r),_1:a(po,t,r)}}),go=function(t){return vo(function(r){return!t(r)})},mo=r(function(t,r){var n=r;if("[]"===n.ctor)return{ctor:"[]"};var e=n._0,o=a(vo,t(e),n._1),c=o._0,u=o._1;return{ctor:"::",_0:{ctor:"::",_0:e,_1:c},_1:a(mo,t,u)}}),bo=(mo(r(function(t,r){return v.eq(t,r)})),r(function(t,n){var e=r(function(r,n){var e=n,o=e._1,c=t(r);return v.cmp(c,o)<0?{ctor:"_Tuple2",_0:r,_1:c}:{ctor:"_Tuple2",_0:e._0,_1:o}}),o=n;if("::"===o.ctor){if("[]"===o._1.ctor)return S(o._0);var c=o._0;return S(nr(l(U,e,{ctor:"_Tuple2",_0:c,_1:t(c)},o._1)))}return R}),r(function(t,n){var e=r(function(r,n){var e=n,o=e._1,c=t(r);return v.cmp(c,o)>0?{ctor:"_Tuple2",_0:r,_1:c}:{ctor:"_Tuple2",_0:e._0,_1:o}}),o=n;if("::"===o.ctor){if("[]"===o._1.ctor)return S(o._0);var c=o._0;return S(nr(l(U,e,{ctor:"_Tuple2",_0:c,_1:t(c)},o._1)))}return R}),function(t){var r=t;return"[]"===r.ctor?R:S({ctor:"_Tuple2",_0:r._0,_1:r._1})}),yo=(n(function(t,n,e){for(;;){if(v.eq(t,n))return S(e);if(!(v.cmp(t,n)>0)){if(v.cmp(t,0)<0)return R;var o=a(Ke,t,e),c=o._0,u=o._1,i=a(Ke,n-t,u),_=i._0,f=i._1;return l(L,r(function(t,r){var n=t,e=r;return ot({ctor:"::",_0:c,_1:{ctor:"::",_0:{ctor:"::",_0:e._0,_1:n._1},_1:{ctor:"::",_0:{ctor:"::",_0:n._0,_1:e._1},_1:{ctor:"[]"}}}})}),bo(_),bo(f))}var s=n,d=t,p=e;t=s,n=d,e=p}}),r(function(t,r){var n=t(r);return"Just"===n.ctor?{ctor:"::",_0:r,_1:a(yo,t,n._0)}:{ctor:"::",_0:r,_1:{ctor:"[]"}}})),ko=r(function(t,r){return v.cmp(t,0)<0?R:K(a(q,t,r))}),To=To||{};To["!!"]=m(ko);var wo,xo=(function(){var t=r(function(t,r){return function(n){return a(N,t,a($,r,n))}});a(V,function(n){return function(e){return S(l(t,{ctor:"[]"},r(function(t,r){return{ctor:"::",_0:t,_1:r}})(n),e))}},R)}(),to(m(b)),function(t){return At(v.cmp(t,0)<0?{ctor:"::",_0:v.chr("-"),_1:a(Eo,{ctor:"[]"},E(t))}:a(Eo,{ctor:"[]"},t))}),Eo=r(function(t,r){for(;;){if(v.cmp(r,16)<0)return{ctor:"::",_0:Bo(r),_1:t};var n={ctor:"::",_0:Bo(a(k["%"],r,16)),_1:t},e=r/16|0;t=n,r=e}}),Bo=function(t){var r=t;switch(r){case 0:return v.chr("0");case 1:return v.chr("1");case 2:return v.chr("2");case 3:return v.chr("3");case 4:return v.chr("4");case 5:return v.chr("5");case 6:return v.chr("6");case 7:return v.chr("7");case 8:return v.chr("8");case 9:return v.chr("9");case 10:return v.chr("a");case 11:return v.chr("b");case 12:return v.chr("c");case 13:return v.chr("d");case 14:return v.chr("e");case 15:return v.chr("f");default:return v.crashCase("Hex",{start:{line:138,column:5},end:{line:188,column:84}},r)(a(k["++"],"Tried to convert ",a(k["++"],xo(t)," to hexadecimal.")))}},Co=n(function(t,r,n){var e=r;if("[]"===e.ctor)return gt(n);var o=function(r){return l(Co,t-1,e._1,n+r*Math.pow(16,t))},c=e._0;switch(c.valueOf()){case"0":return o(0);case"1":return o(1);case"2":return o(2);case"3":return o(3);case"4":return o(4);case"5":return o(5);case"6":return o(6);case"7":return o(7);case"8":return o(8);case"9":return o(9);case"a":return o(10);case"b":return o(11);case"c":return o(12);case"d":return o(13);case"e":return o(14);case"f":return o(15);default:return vt(a(k["++"],T(c)," is not a valid hexadecimal character."))}}),No=function(t){if(Yt(t))return vt("Empty strings are not valid hexadecimal strings.");var r=function(r){return a(Vt," ",{ctor:"::",_0:T(t),_1:{ctor:"::",_0:"is not a valid hexadecimal string because",_1:{ctor:"::",_0:r,_1:{ctor:"[]"}}}})},n=function(){if(a(Ot,"-",t)){var r=a(N,{ctor:"[]"},Q(St(t)));return a(mt,E,l(Co,W(r)-1,r,0))}return l(Co,Ht(t)-1,St(t),0)}();return a(bt,r,n)},Ro=r(function(t,r){return a(N,{ctor:"_Tuple2",_0:Be,_1:9},a(vn,r,t))}),Ao=r(function(t,r){return nr(a(Ro,t,r))}),So=r(function(t,r){return rr(a(Ro,t,r))}),$o=n(function(t,r,n){var e=n;return v.eq(a(So,t,e._0),r)}),Lo=n(function(t,n,e){var o=a(Y,a($o,t,n),e),c=a(G,function(r){return a(Ao,t,nr(r))},o),u=function(t){var r=a(Vt," and ",a(G,nr,o));return a(k["++"],"conflicting ",a(k["++"],t,a(k["++"]," for operators ",r)))};if(a(j,r(function(t,r){return v.eq(t,r)})(Be),c))return Dr(Be);if(a(j,r(function(t,r){return v.eq(t,r)})(Ee),c))return Dr(Ee);if(a(j,r(function(t,r){return v.eq(t,r)})(Ne),c)){var i=c;return"::"===i.ctor&&"[]"===i._1.ctor?Dr(Ne):Mr(u("precedence"))}return Mr(u("associativity"))}),Oo=function(t){return Cr(function(r){return Xr({ctor:"::",_0:t,_1:{ctor:"::",_0:Dr({ctor:"[]"}),_1:{ctor:"[]"}}})})},Io=Cr(function(t){return a(pe,Wr,a($r["<|>"],ke,he("as")))}),zo=function(t){return"Just"===t.ctor?Mr(""):Dr("")},qo=function(t){return{ctor:"Stop",_0:t}},Mo=function(t){return{ctor:"Cont",_0:t}},Fo=n(function(t,r,n){return{ctor:"BinOp",_0:t,_1:r,_2:n}}),Do=r(function(t,r){return{ctor:"Application",_0:t,_1:r}}),Po=r(function(t,r){return{ctor:"Lambda",_0:t,_1:r}}),Jo=r(function(t,r){return{ctor:"Case",_0:t,_1:r}}),jo=r(function(t,r){return{ctor:"Let",_0:t,_1:r}}),Vo=n(function(t,r,n){return{ctor:"If",_0:t,_1:r,_2:n}}),Uo=r(function(t,r){return{ctor:"RecordUpdate",_0:t,_1:r}}),Wo=function(t){return{ctor:"Record",_0:t}},Ho=function(t){return{ctor:"AccessFunction",_0:t}},Qo=a($r["<$>"],Ho,a($r["*>"],Pr("."),we)),Ko=r(function(t,r){return{ctor:"Access",_0:t,_1:r}}),Xo=function(t){return{ctor:"Tuple",_0:t}},Go=function(t){return{ctor:"List",_0:t}},Yo=function(t){return{ctor:"Variable",_0:t}},Zo=a($r["<$>"],Yo,Xr({ctor:"::",_0:a($r["<$>"],z,we),_1:{ctor:"::",_0:a(en,Pr("."),le),_1:{ctor:"::",_0:a($r["<$>"],z,Jr(ke)),_1:{ctor:"::",_0:a($r["<$>"],z,Jr(Ur(",+"))),_1:{ctor:"::",_0:a($r["<$>"],z,_e),_1:{ctor:"[]"}}}}}})),tc=a($r["<*>"],a($r["<$>"],Ko,Zo),nn(a($r["*>"],Pr("."),we))),rc=Cr(function(t){return a($r["<$>"],Wo,jr(ge(a($r["<$>"],function(t){return{ctor:"_Tuple2",_0:t,_1:Yo({ctor:"::",_0:t,_1:{ctor:"[]"}})}},we))))}),nc=r(function(t,r){t:for(;;){var n={ctor:"_Tuple2",_0:t,_1:r};r:do{if("_Tuple2"===n.ctor&&"::"===n._0.ctor){if("[]"===n._0._1.ctor){if("[]"===n._1.ctor)return Dr(n._0._0);break r}if("::"===n._1.ctor){var e={ctor:"::",_0:l(Fo,Yo({ctor:"::",_0:n._1._0,_1:{ctor:"[]"}}),n._0._0,n._0._1._0),_1:n._0._1._1},o=n._1._1;t=e,r=o;continue t}break r}break r}while(!1);return Mr("")}}),ec=r(function(t,r){var n={ctor:"_Tuple2",_0:t,_1:r};t:do{if("_Tuple2"===n.ctor&&"::"===n._0.ctor){if("[]"===n._0._1.ctor){if("[]"===n._1.ctor)return Dr(n._0._0);break t}if("::"===n._1.ctor)return a(Or,function(t){return Dr(l(Fo,Yo({ctor:"::",_0:n._1._0,_1:{ctor:"[]"}}),n._0._0,t))},a(ec,{ctor:"::",_0:n._0._1._0,_1:n._0._1._1},n._1._1));break t}break t}while(!1);return Mr("")}),oc=e(function(t,r,n,e){return"[]"===e.ctor?Dr(n):a($r[">>="],l(Lo,t,r,e),function(o){return a($r[">>="],qr(f(cc,t,r,n,e)),function(n){var c=a(tt,function(n){return l($o,t,r,n)?S(nr(n)):R},e);return"R"===o.ctor?a(ec,n,c):a(nc,n,c)})})}),cc=e(function(t,r,n,e){var o=a(go,a($o,t,r),e);return"::"===o._1.ctor?{ctor:"::",_0:f(oc,t,r+1,n,o._0),_1:f(cc,t,r,o._1._0._1,o._1._1)}:{ctor:"::",_0:f(oc,t,r+1,n,o._0),_1:{ctor:"[]"}}}),uc=function(t){return{ctor:"Float",_0:t}},ic=a($r["<$>"],uc,Oe),_c=function(t){return{ctor:"Integer",_0:t}},ac=a($r["<$>"],_c,$e),lc=function(t){return{ctor:"String",_0:t}},fc=function(){var t=a($r["<$>"],function(t){return lc(Qt(t))},a($r["<*"],a($r["*>"],Pr('"""'),rn(Ur('[^"]*'))),Pr('"""'))),r=a($r["<$>"],lc,a($r["<*"],a($r["*>"],Pr('"'),Ur('(\\\\\\\\|\\\\"|[^"\n])*')),Pr('"')));return a($r["<|>"],t,r)}(),sc=function(t){return{ctor:"Character",_0:t}},dc=a($r["<$>"],sc,a(pe,Pr("'"),a($r["<|>"],a($r[">>="],a($r["*>"],Pr("\\"),Ur("(n|t|r|\\\\|x..)")),function(t){var r=Kt(t);t:do{if("Just"!==r.ctor)return Mr("No character");if("_Tuple2"!==r._0.ctor)break t;switch(r._0._0.valueOf()){case"n":if(""===r._0._1)return Dr(v.chr("\n"));break t;case"t":if(""===r._0._1)return Dr(v.chr("\t"));break t;case"r":if(""===r._0._1)return Dr(v.chr("\r"));break t;case"\\":if(""===r._0._1)return Dr(v.chr("\\"));break t;case"0":if(""===r._0._1)return Dr(v.chr("\0"));break t;case"x":return a(ht,Mr("Invalid charcode"),a(mt,Dr,a(mt,Tt,No(zt(r._0._1)))));default:break t}}while(!1);return Mr(a(k["++"],"No such character as \\",T(r._0)))}),ee))),pc=function(t){return Cr(function(r){return Xr({ctor:"::",_0:tc,_1:{ctor:"::",_0:Zo,_1:{ctor:"::",_0:Qo,_1:{ctor:"::",_0:fc,_1:{ctor:"::",_0:ic,_1:{ctor:"::",_0:ac,_1:{ctor:"::",_0:dc,_1:{ctor:"::",_0:Jr(a(pe,Wr,hc(t))),_1:{ctor:"::",_0:Bc(t),_1:{ctor:"::",_0:Rc(t),_1:{ctor:"::",_0:Nc(t),_1:{ctor:"::",_0:Cc(t),_1:{ctor:"::",_0:rc,_1:{ctor:"[]"}}}}}}}}}}}}}})})},hc=function(t){return Cr(function(r){return Xr({ctor:"::",_0:vc(t),_1:{ctor:"::",_0:Ec(t),_1:{ctor:"::",_0:Tc(t),_1:{ctor:"::",_0:wc(t),_1:{ctor:"::",_0:xc(t),_1:{ctor:"[]"}}}}}})})},vc=function(t){return Cr(function(n){var e=a($r[">>="],Io,function(n){return Cr(function(o){return a($r[">>="],a(Kr,a($r["<$>"],Mo,gc(t)),a($r["<$>"],qo,hc(t))),function(t){var o=t;return"Cont"===o.ctor?a($r["<$>"],r(function(t,r){return{ctor:"::",_0:t,_1:r}})({ctor:"_Tuple2",_0:n,_1:o._0}),Oo(e)):Dr({ctor:"::",_0:{ctor:"_Tuple2",_0:n,_1:o._0},_1:{ctor:"[]"}})})})});return a($r[">>="],gc(t),function(r){return a($r[">>="],Oo(e),function(n){return f(oc,t,0,r,n)})})})},gc=function(t){return Cr(function(r){return a(Yr,a($r["<$"],Do,mc(t)),pc(t))})},mc=function(t){return Cr(function(r){return a($r["<|>"],a($r["*>"],Ur("[ \\t]*\n[ \\t]+"),bc(t)),fe)})},bc=function(t){return Cr(function(r){return Qr(a($r[">>="],function(t){return tn(Xr(t))}({ctor:"::",_0:kc(t),_1:{ctor:"::",_0:yc(t),_1:{ctor:"[]"}}}),zo))})},yc=function(t){return Cr(function(n){return a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),a($r["*>"],Wr,hc(t))),a($r["*>"],ve("->"),hc(t)))})},kc=function(t){return Cr(function(n){return a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),a(pe,Wr,hc(t))),a($r["*>"],ve("="),hc(t)))})},Tc=function(t){return Cr(function(r){return a($r["<*>"],a($r["<$>"],Jo,a($r["*>"],ve("case"),hc(t))),a($r["*>"],ve("of"),nn(yc(t))))})},wc=function(t){return Cr(function(r){return a($r["<*>"],a($r["<*>"],a($r["<$>"],Vo,a($r["*>"],ve("if"),hc(t))),a($r["*>"],ve("then"),hc(t))),a($r["*>"],ve("else"),hc(t)))})},xc=function(t){return Cr(function(r){return a($r["<*>"],a($r["<$>"],Po,a($r["*>"],ve("\\"),rn(a(pe,de,pc(t))))),a($r["*>"],ve("->"),hc(t)))})},Ec=function(t){return Cr(function(r){return a($r["<*>"],a($r["<$>"],jo,a($r["*>"],he("let"),nn(kc(t)))),a($r["*>"],ve("in"),hc(t)))})},Bc=function(t){return Cr(function(r){return a($r["<$>"],Go,Vr(me(hc(t))))})},Cc=function(t){return Cr(function(n){return a($r["<$>"],Wo,jr(ge(a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),we),a($r["*>"],ve("="),hc(t))))))})},Nc=function(t){return Cr(function(n){return a($r["<*>"],a($r["<$>"],Uo,a($r["*>"],ve("{"),we)),a($r["<*"],a($r["*>"],ve("|"),ge(a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),we),a($r["*>"],ve("="),hc(t))))),ve("}")))})},Rc=function(t){return Cr(function(r){return a($r["<$>"],Xo,a($r[">>="],Jr(me(hc(t))),function(t){var r=t;return"::"===r.ctor&&"[]"===r._1.ctor?Mr("No single tuples"):Dr(r)}))})},Ac=r(function(t,r){return{ctor:"TypeExport",_0:t,_1:r}}),Sc=function(t){return{ctor:"FunctionExport",_0:t}},$c=a($r["<$>"],Sc,Xr({ctor:"::",_0:xe,_1:{ctor:"::",_0:Jr(ke),_1:{ctor:"[]"}}})),Lc=function(t){return{ctor:"SubsetExport",_0:t}},Oc=a($r["<$>"],Lc,ge(a($r["<$>"],Sc,le))),Ic={ctor:"AllExport"},zc=a($r["<$"],Ic,ve("..")),qc=tn(Jr(Xr({ctor:"::",_0:zc,_1:{ctor:"::",_0:Oc,_1:{ctor:"[]"}}}))),Mc=a($r["<*>"],a($r["<$>"],Ac,a($r["<*"],le,de)),qc),Fc=a($r["<$>"],Lc,ge(a(Kr,Mc,$c))),Dc=Jr(Xr({ctor:"::",_0:zc,_1:{ctor:"::",_0:Fc,_1:{ctor:"[]"}}})),Pc=r(function(t,r){return{ctor:"TypeApplication",_0:t,_1:r}}),Jc=a($r["<$"],Pc,ve("->")),jc=function(t){return{ctor:"TypeTuple",_0:t}},Vc=function(t){return{ctor:"TypeRecord",_0:t}},Uc=r(function(t,r){return{ctor:"TypeRecordConstructor",_0:t,_1:r}}),Wc=function(t){return{ctor:"TypeVariable",_0:t}},Hc=a($r["<$>"],Wc,Ur("[a-z]+(\\w|_)*")),Qc=r(function(t,r){return{ctor:"TypeConstructor",_0:t,_1:r}}),Kc=a($r["<*>"],a($r["<$>"],Qc,a(en,Pr("."),le)),Dr({ctor:"[]"})),Xc=Cr(function(t){return a($r["<*>"],a($r["<$>"],Qc,a(en,Pr("."),le)),rn(Gc))}),Gc=Cr(function(t){return a(pe,a(Kr,a($r["*>"],a($r["*>"],de,oe),fe),de),Xr({ctor:"::",_0:Hc,_1:{ctor:"::",_0:Kc,_1:{ctor:"::",_0:eu,_1:{ctor:"::",_0:tu,_1:{ctor:"::",_0:ou,_1:{ctor:"::",_0:Jr(Yc),_1:{ctor:"[]"}}}}}}}))}),Yc=Cr(function(t){return a(Zr,Jc,Zc)}),Zc=Cr(function(t){return a(pe,de,Xr({ctor:"::",_0:Xc,_1:{ctor:"::",_0:Hc,_1:{ctor:"::",_0:eu,_1:{ctor:"::",_0:tu,_1:{ctor:"::",_0:ou,_1:{ctor:"::",_0:Jr(Yc),_1:{ctor:"[]"}}}}}}}))}),tu=Cr(function(t){return jr(a($r["<$>"],Vc,ru))}),ru=Cr(function(t){return me(nu)}),nu=Cr(function(t){return a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),a($r["<*"],we,ve(":"))),Yc)}),eu=Cr(function(t){return jr(a($r["<*>"],a($r["<$>"],Uc,a(pe,de,Hc)),a($r["*>"],ve("|"),ru)))}),ou=Cr(function(t){return a($r["<$>"],jc,Jr(me(Zc)))}),cu=function(t){return{ctor:"Comment",_0:t}},uu=a($r["<$>"],cu,a($r["<*"],a($r["*>"],Pr("--"),Ur(".*")),Wr)),iu=a($r["<$>"],function(t){return cu(At(t))},a($r["*>"],Pr("{-"),a(un,ee,Pr("-}")))),_u=a($r["<|>"],uu,iu),au=n(function(t,r,n){return{ctor:"InfixDeclaration",_0:t,_1:r,_2:n}}),lu=a($r["<*>"],a($r["<*>"],a($r["<$>"],au,Xr({ctor:"::",_0:a($r["<$"],Be,se("infixl")),_1:{ctor:"::",_0:a($r["<$"],Ee,se("infixr")),_1:{ctor:"::",_0:a($r["<$"],Ne,se("infix")),_1:{ctor:"[]"}}}})),a($r["*>"],de,$e)),a($r["*>"],de,a($r["<|>"],we,ke))),fu=function(){var t=a($r["<*"],rn(a($r["<*"],Xr({ctor:"::",_0:a($r["<$>"],S,lu),_1:{ctor:"::",_0:a($r["<$"],R,Ur(".*")),_1:{ctor:"[]"}}}),Wr)),Hr);return a($r[">>="],t,function(t){return Dr(a(tt,y,t))})}(),su=function(t){var n=r(function(t,r){var n=t;return"InfixDeclaration"===n.ctor?l(Wn,n._2,{ctor:"_Tuple2",_0:n._0,_1:n._1},r):v.crashCase("Ast.Statement",{start:{line:414,column:13},end:{line:419,column:45}},n)("impossible")});return a($r[">>="],fu,function(r){return Dr(l(V,n,t,r))})},du=n(function(t,r,n){return{ctor:"FunctionDeclaration",_0:t,_1:r,_2:n}}),pu=function(t){return a($r["<*>"],a($r["<*>"],a($r["<$>"],du,Xr({ctor:"::",_0:we,_1:{ctor:"::",_0:Jr(ke),_1:{ctor:"[]"}}})),rn(a(pe,Wr,pc(t)))),a($r["*>"],a($r["*>"],ve("="),Wr),hc(t)))},hu=r(function(t,r){return{ctor:"FunctionTypeDeclaration",_0:t,_1:r}}),vu=a($r["<*>"],a($r["<$>"],hu,a($r["<*"],Xr({ctor:"::",_0:we,_1:{ctor:"::",_0:Jr(ke),_1:{ctor:"[]"}}}),ve(":"))),Yc),gu=n(function(t,r,n){return{ctor:"PortDeclaration",_0:t,_1:r,_2:n}}),mu=function(t){return a($r["<*>"],a($r["<*>"],a($r["<$>"],gu,a($r["*>"],se("port"),we)),rn(a(pe,de,we))),a($r["*>"],ve("="),hc(t)))},bu=r(function(t,r){return{ctor:"PortTypeDeclaration",_0:t,_1:r}}),yu=a($r["<*>"],a($r["<$>"],bu,a($r["*>"],se("port"),we)),a($r["*>"],ve(":"),Yc)),ku=r(function(t,r){return{ctor:"TypeDeclaration",_0:t,_1:r}}),Tu=a($r["<*>"],a($r["<$>"],ku,a($r["*>"],se("type"),Zc)),a($r["*>"],a($r["*>"],Wr,ve("=")),a(en,ve("|"),a(pe,Wr,Xc)))),wu=r(function(t,r){return{ctor:"TypeAliasDeclaration",_0:t,_1:r}}),xu=a($r["<*>"],a($r["<$>"],wu,a($r["*>"],a($r["*>"],se("type"),ve("alias")),Zc)),a($r["*>"],a($r["*>"],Wr,ve("=")),Yc)),Eu=n(function(t,r,n){return{ctor:"ImportStatement",_0:t,_1:r,_2:n}}),Bu=a($r["<*>"],a($r["<*>"],a($r["<$>"],Eu,a($r["*>"],se("import"),be)),tn(a($r["*>"],ve("as"),le))),tn(a($r["*>"],ve("exposing"),Dc))),Cu=n(function(t,r,n){return{ctor:"EffectModuleDeclaration",_0:t,_1:r,_2:n}}),Nu=a($r["<*>"],a($r["<*>"],a($r["<$>"],Cu,a($r["*>"],a($r["*>"],se("effect"),ve("module")),be)),a($r["*>"],ve("where"),jr(ge(a($r["<*>"],a($r["<$>"],r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),we),a($r["*>"],ve("="),le)))))),a($r["*>"],ve("exposing"),Dc)),Ru=r(function(t,r){return{ctor:"PortModuleDeclaration",_0:t,_1:r}}),Au=a($r["<*>"],a($r["<$>"],Ru,a($r["*>"],a($r["*>"],se("port"),ve("module")),be)),a($r["*>"],ve("exposing"),Dc)),Su=r(function(t,r){return{ctor:"ModuleDeclaration",_0:t,_1:r}}),$u=a($r["<*>"],a($r["<$>"],Su,a($r["*>"],se("module"),be)),a($r["*>"],ve("exposing"),Dc)),Lu=function(t){return Cr(function(r){return Xr({ctor:"::",_0:Au,_1:{ctor:"::",_0:Nu,_1:{ctor:"::",_0:$u,_1:{ctor:"::",_0:Bu,_1:{ctor:"::",_0:xu,_1:{ctor:"::",_0:Tu,_1:{ctor:"::",_0:yu,_1:{ctor:"::",_0:mu(t),_1:{ctor:"::",_0:vu,_1:{ctor:"::",_0:pu(t),_1:{ctor:"::",_0:lu,_1:{ctor:"::",_0:_u,_1:{ctor:"[]"}}}}}}}}}}}}})})},Ou=function(t){return a(un,a($r["<*"],a($r["*>"],Wr,Lu(t)),Wr),Hr)},Iu=function(t){return Er(Ou(t))},zu=function(t){return Er(su(t))},qu=function(t){var r=a(zu,Ce,t);return"Ok"===r.ctor?a(Iu,r._0._2,t):vt(r._0)},Mu=function(t){return Er(a($r["<*"],hc(t),Hr))},Fu=function(){function t(t,r){if(t<0||t>=q(r))throw new Error("Index "+t+" is out of range. Check the length of your array first or use getMaybe or getWithDefault.");return e(t,r)}function e(t,r){for(var n=r.height;n>0;n--){for(var e=t>>5*n;r.lengths[e]<=t;)e++;e>0&&(t-=r.lengths[e-1]),r=r.table[e]}return r.table[t]}function o(t,r,n){return t<0||q(n)<=t?n:c(t,r,n)}function c(t,r,n){if(n=z(n),0===n.height)n.table[t]=r;else{var e=M(t,n);e>0&&(t-=n.lengths[e-1]),n.table[e]=c(t,r,n.table[e])}return n}function u(t,r){return t<=0?Q:i(r,Math.floor(Math.log(t)/Math.log(W)),0,t)}function i(t,r,n,e){if(0===r){for(var o=new Array((e-n)%(W+1)),c=0;c0?_[c-1]:0);return{ctor:"_Array",height:r,table:o,lengths:_}}function _(t){if("[]"===t.ctor)return Q;for(var r=new Array(W),n=[],e=0;"[]"!==t.ctor;)if(r[e]=t._0,t=t._1,++e===W){var o={ctor:"_Array",height:0,table:r};l(o,n),r=new Array(W),e=0}if(e>0){var o={ctor:"_Array",height:0,table:r.splice(0,e)};l(o,n)}for(var c=0;c0&&l(n[c],n);var u=n[n.length-1];return u.height>0&&1===u.table.length?u.table[0]:u}function l(t,r){var n=t.height;if(r.length===n){var e={ctor:"_Array",height:n+1,table:[],lengths:[]};r.push(e)}r[n].table.push(t);var o=q(t);r[n].lengths.length>0&&(o+=r[n].lengths[r[n].lengths.length-1]),r[n].lengths.push(o),r[n].table.length===W&&(l(r[n],r),r[n]={ctor:"_Array",height:n+1,table:[],lengths:[]})}function f(t,r){var n=s(t,r);return null!==n?n:P(r,F(t,r.height))}function s(t,r){if(0===r.height){if(r.table.length=0;n--)t=0===r.height?O.Cons(r.table[n],t):p(t,r.table[n]);return t}function h(t,r){var n={ctor:"_Array",height:r.height,table:new Array(r.table.length)};r.height>0&&(n.lengths=r.lengths);for(var e=0;e0&&(e.lengths=r.lengths);for(var o=0;o0?r.lengths[e-1]:0),r.table[e]);if(0===e)return o;var n={ctor:"_Array",height:r.height,table:r.table.slice(0,e),lengths:r.lengths.slice(0,e)};return o.table.length>0&&(n.table[e]=o,n.lengths[e]=q(o)+(e>0?n.lengths[e-1]:0)),n}function T(t,r){if(0===t)return r;if(0===r.height){var n={ctor:"_Array",height:0};return n.table=r.table.slice(t,r.table.length+1),n}var e=M(t,r),o=T(t-(e>0?r.lengths[e-1]:0),r.table[e]);if(e===r.table.length-1)return o;var n={ctor:"_Array",height:r.height,table:r.table.slice(e,r.table.length+1),lengths:new Array(r.table.length-e)};n.table[0]=o;for(var c=0,u=0;u0){for(var e=q(n[0]),o=0;o0){var c=C(t,r);c>H&&(n=$(n[0],n[1],c))}return P(n[0],n[1])}function x(t,r){if(0===t.height&&0===r.height)return[t,r];if(1!==t.height||1!==r.height)if(t.height===r.height){t=z(t),r=z(r);var n=x(L(t),I(r));E(t,n[1]),B(r,n[0])}else if(t.height>r.height){t=z(t);var n=x(L(t),r);E(t,n[0]),r=D(n[1],n[1].height+1)}else{r=z(r);var n=x(t,I(r)),e=0===n[0].table.length?0:1,o=0===e?1:0;B(r,n[e]),t=D(n[o],n[o].height+1)}if(0===t.table.length||0===r.table.length)return[t,r];var c=C(t,r);return c<=H?[t,r]:$(t,r,c)}function E(t,r){var n=t.table.length-1;t.table[n]=r,t.lengths[n]=q(r),t.lengths[n]+=n>0?t.lengths[n-1]:0}function B(t,r){if(r.table.length>0){t.table[0]=r,t.lengths[0]=q(r);for(var n=q(t.table[0]),e=1;e0&&(n.lengths=new Array(r)),n}function $(t,r,n){for(var e=S(t.height,Math.min(W,t.table.length+r.table.length-n)),o=S(t.height,e.table.length-(t.table.length+r.table.length-n)),c=0;N(t.table,r.table,c).table.length%W==0;)R(e.table,o.table,c,N(t.table,r.table,c)),R(e.lengths,o.lengths,c,N(t.lengths,r.lengths,c)),c++;for(var u=c,i=new S(t.height-1,0),_=0;c-u-(i.table.length>0?1:0)0)for(var f=i.lengths.length,s=f;s0?i.lengths[s-1]:0;_+=l,a.table.length<=l&&(c++,_=0),i.table.length===W&&(A(e,o,u,i),i=S(t.height-1,0),u++)}for(i.table.length>0&&(A(e,o,u,i),u++);c0&&(r.lengths=t.lengths.slice()),r}function q(t){return 0===t.height?t.table.length:t.lengths[t.lengths.length-1]}function M(t,r){for(var n=t>>5*r.height;r.lengths[n]<=t;)n++;return n}function F(t,r){return 0===r?{ctor:"_Array",height:0,table:[t]}:{ctor:"_Array",height:r,table:[F(t,r-1)],lengths:[1]}}function D(t,r){return r===t.height?t:{ctor:"_Array",height:r,table:[D(t,r-1)],lengths:[q(t)]}}function P(t,r){return{ctor:"_Array",height:t.height+1,table:[t,r],lengths:[q(t),q(t)+q(r)]}}function J(t){var r=new Array(q(t));return j(r,0,t),r}function j(t,r,n){for(var e=0;e0?u[i-1]:0);return{ctor:"_Array",height:r,table:c,lengths:u}}var W=32,H=2,Q={ctor:"_Array",height:0,table:[]};return{empty:Q,fromList:_,toList:d,initialize:r(u),append:r(w),push:r(f),slice:n(y),get:r(t),set:n(o),map:r(h),indexedMap:r(v),foldl:n(m),foldr:n(b),length:q,toJSArray:J,fromJSArray:V}}(),Du=(Fu.append,Fu.length,Fu.slice,Fu.set,r(function(t,r){return v.cmp(0,t)<1&&v.cmp(t,Fu.length(r))<0?S(a(Fu.get,t,r)):R}),Fu.push,Fu.empty,r(function(t,n){var e=r(function(r,n){return t(r)?a(Fu.push,r,n):n});return l(Fu.foldl,e,Fu.empty,n)}),Fu.foldr,Fu.foldl,Fu.indexedMap,Fu.map,Fu.toList),Pu=(Fu.fromList,Fu.initialize),Ju=(r(function(t,r){return a(Pu,t,b(r))}),function(){function t(t){return{ctor:"",tag:"succeed",msg:t}}function a(t){return{ctor:"",tag:"fail",msg:t}}function l(t){return{ctor:"",tag:t}}function f(t,r){return{ctor:"",tag:t,decoder:r}}function s(t){return{ctor:"",tag:"null",value:t}}function d(t,r){return{ctor:"",tag:"field",field:t,decoder:r}}function p(t,r){return{ctor:"",tag:"index",index:t,decoder:r}}function h(t){return{ctor:"",tag:"key-value",decoder:t}}function g(t,r){return{ctor:"",tag:"map-many",func:t,decoders:r}}function m(t,r){return{ctor:"",tag:"andThen",decoder:r,callback:t}}function b(t){return{ctor:"",tag:"oneOf",decoders:t}}function y(t,r){return g(t,[r])}function k(t,r,n){return g(t,[r,n])}function T(t,r,n,e){return g(t,[r,n,e])}function w(t,r,n,e,o){return g(t,[r,n,e,o])}function x(t,r,n,e,o,c){return g(t,[r,n,e,o,c])}function E(t,r,n,e,o,c,u){return g(t,[r,n,e,o,c,u])}function B(t,r,n,e,o,c,u,i){return g(t,[r,n,e,o,c,u,i])}function C(t,r,n,e,o,c,u,i,_){return g(t,[r,n,e,o,c,u,i,_])}function N(t){return{tag:"ok",value:t}}function A(t,r){return{tag:"primitive",type:t,value:r}}function $(t,r){return{tag:"index",index:t,rest:r}}function L(t,r){return{tag:"field",field:t,rest:r}}function $(t,r){return{tag:"index",index:t,rest:r}}function I(t){return{tag:"oneOf",problems:t}}function z(t){return{tag:"fail",msg:t}}function q(t){for(var r="_";t;)switch(t.tag){case"primitive":return"Expecting "+t.type+("_"===r?"":" at "+r)+" but instead got: "+M(t.value);case"index":r+="["+t.index+"]",t=t.rest;break;case"field":r+="."+t.field,t=t.rest;break;case"oneOf":for(var n=t.problems,e=0;e=r.length)return A("a longer array. Need index "+_+" but there are only "+r.length+" entries",r);var o=P(t.decoder,r[_]);return"ok"===o.tag?o:$(_,o);case"key-value":if("object"!=typeof r||null===r||r instanceof Array)return A("an object",r);var a=O.Nil;for(var l in r){var o=P(t.decoder,r[l]);if("ok"!==o.tag)return L(l,o);var f=v.Tuple2(l,o.value);a=O.Cons(f,a)}return N(a);case"map-many":for(var s=t.func,d=t.decoders,e=0;e0&&n.push($("p-thunk",e,l)));case"tagger":for(var f=t.tagger,s=r.tagger,d=!1,p=t.node;"tagger"===p.type;)d=!0,"object"!=typeof f?f=[f,p.tagger]:f.push(p.tagger),p=p.node;for(var h=r.node;"tagger"===h.type;)d=!0,"object"!=typeof s?s=[s,h.tagger]:s.push(h.tagger),h=h.node;return d&&f.length!==s.length?void n.push($("p-redraw",e,r)):((d?O(f,s):f===s)||n.push($("p-tagger",e,s)),void L(p,h,n,e+1));case"text":if(t.text!==r.text)return void n.push($("p-text",e,r.text));return;case"node":if(t.tag!==r.tag||t.namespace!==r.namespace)return void n.push($("p-redraw",e,r));var v=I(t.facts,r.facts);return void 0!==v&&n.push($("p-facts",e,v)),void z(t,r,n,e);case"keyed-node":if(t.tag!==r.tag||t.namespace!==r.namespace)return void n.push($("p-redraw",e,r));var v=I(t.facts,r.facts);return void 0!==v&&n.push($("p-facts",e,v)),void q(t,r,n,e);case"custom":if(t.impl!==r.impl)return void n.push($("p-redraw",e,r));var v=I(t.facts,r.facts);void 0!==v&&n.push($("p-facts",e,v));var g=r.impl.diff(t,r);if(g)return void n.push($("p-custom",e,g));return}}}function O(t,r){for(var n=0;ni?n.push($("p-remove-last",e,u-i)):u0||u.length>0||void 0!==A)&&n.push($("p-reorder",e,{patches:o,inserts:u,endInserts:A}))}function M(t,r,n,e,o,c){var u=t[n];if(void 0===u)return u={tag:"insert",vnode:e,index:o,data:void 0},c.push({index:o,entry:u}),void(t[n]=u);if("remove"===u.tag){c.push({index:o,entry:u}),u.tag="move";var i=[];return L(u.vnode,e,i,u.index),u.index=o,void(u.data.data={patches:i,entry:u})}M(t,r,n+vt,e,o,c)}function F(t,r,n,e,o){var c=t[n];if(void 0===c){var u=$("p-remove",o,void 0);return r.push(u),void(t[n]={tag:"remove",vnode:e,index:o,data:u})}if("insert"===c.tag){c.tag="move";var i=[];L(e,c.vnode,i,o);var u=$("p-remove",o,{patches:i,entry:c});return void r.push(u)}F(t,r,n+vt,e,o)}function D(t,r,n,e){P(t,r,n,0,0,r.descendantsCount,e)}function P(t,r,n,e,o,c,u){for(var i=n[e],_=i.index;_===o;){var a=i.type;if("p-thunk"===a)D(t,r.node,i.data,u);else if("p-reorder"===a){i.domNode=t,i.eventNode=u;var l=i.data.patches;l.length>0&&P(t,r,l,0,o,c,u)}else if("p-remove"===a){i.domNode=t,i.eventNode=u;var f=i.data;if(void 0!==f){f.entry.data=t;var l=f.patches;l.length>0&&P(t,r,l,0,o,c,u)}}else i.domNode=t,i.eventNode=u;if(e++,!(i=n[e])||(_=i.index)>c)return e}switch(r.type){case"tagger":for(var s=r.node;"tagger"===s.type;)s=s.node;return P(t,s,n,e,o+1,c,t.elm_event_node_ref);case"node":for(var d=r.children,p=t.childNodes,h=0;hc))return e;o=g}return e;case"keyed-node":for(var d=r.children,p=t.childNodes,h=0;hc))return e;o=g}return e;case"text":case"thunk":throw new Error("should never traverse `text` or `thunk` nodes like this")}}function J(t,r,n,e){return 0===n.length?t:(D(t,r,n,e),j(t,n))}function j(t,r){for(var n=0;n
"),new Error(t)}function Z(t,r,n,e){r.embed=function(r,n){for(;r.lastChild;)r.removeChild(r.lastChild);return er.initialize(e(t.init,n,r),t.update,t.subscriptions,tt(r,t.view))},r.fullscreen=function(r){return er.initialize(e(t.init,r,document.body),t.update,t.subscriptions,tt(document.body,t.view))}}function tt(t,r){return function(n,e){var o={tagger:n,parent:void 0},c=r(e),u=x(c,o);return t.appendChild(u),rt(u,r,c,o)}}function rt(t,r,n,e){function o(){switch(u){case"NO_REQUEST":throw new Error("Unexpected draw callback.\nPlease report this to .");case"PENDING_REQUEST":bt(o),u="EXTRA_REQUEST";var n=r(c),_=S(i,n);return t=J(t,i,_,e),void(i=n);case"EXTRA_REQUEST":return void(u="NO_REQUEST")}}var c,u="NO_REQUEST",i=n;return function(t){"NO_REQUEST"===u&&bt(o),u="PENDING_REQUEST",c=t}}function nt(t,r,n,e){r.fullscreen=function(r){var o={doc:void 0};return er.initialize(e(t.init,r,document.body),t.update(et(o)),t.subscriptions,ot(n,document.body,o,t.view,t.viewIn,t.viewOut))},r.embed=function(r,o){var c={doc:void 0};return er.initialize(e(t.init,o,r),t.update(et(c)),t.subscriptions,ot(n,r,c,t.view,t.viewIn,t.viewOut))}}function et(t){return or.nativeBinding(function(r){var n=t.doc;if(n){var e=n.getElementsByClassName("debugger-sidebar-messages")[0];e&&(e.scrollTop=e.scrollHeight)}r(or.succeed(v.Tuple0))})}function ot(t,r,n,e,o,c){return function(u,i){var _={tagger:u,parent:void 0},a={tagger:u,parent:void 0},l=e(i),f=x(l,_);r.appendChild(f);var s=rt(f,e,l,_),d=o(i)._1,p=x(d,a);r.appendChild(p);var h=it(_,p,o),v=rt(p,h,d,a),g=ct(i,c,a,r,t,n);return function(t){s(t),v(t),g(t)}}}function ct(t,r,n,e,o,c){var u,i;return function(t){if(t.isDebuggerOpen){if(!c.doc)return u=r(t),void(i=ut(o,c,u,n));ht=c.doc;var e=r(t),_=S(u,e);i=J(i,u,_,n),u=e,ht=document}}}function ut(t,r,n,e){function o(){r.doc=void 0,i.close()}var c=screen.width-900,u=screen.height-360,i=window.open("","","width=900,height=360,left="+c+",top="+u);ht=i.document,r.doc=ht,ht.title="Debugger - "+t,ht.body.style.margin="0",ht.body.style.padding="0";var _=x(n,e);return ht.body.appendChild(_),ht.addEventListener("keydown",function(t){t.metaKey&&82===t.which&&window.location.reload(),38===t.which&&(e.tagger({ctor:"Up"}),t.preventDefault()),40===t.which&&(e.tagger({ctor:"Down"}),t.preventDefault())}),window.addEventListener("unload",o),i.addEventListener("unload",function(){r.doc=void 0,window.removeEventListener("unload",o),e.tagger({ctor:"Close"})}),ht=document,_}function it(t,r,n){var e,o=lt(r),c="Normal",u=t.tagger,i=function(){};return function(r){var _=n(r),a=_._0.ctor;return t.tagger="Normal"===a?u:i,c!==a&&(_t("removeEventListener",o,c),_t("addEventListener",o,a),"Normal"===c&&(e=document.body.style.overflow,document.body.style.overflow="hidden"),"Normal"===a&&(document.body.style.overflow=e),c=a),_._1}}function _t(t,r,n){switch(n){case"Normal":return;case"Pause":return at(t,r,yt);case"Message":return at(t,r,kt)}}function at(t,r,n){for(var e=0;e=0?hljs.highlight(n,r,!0).value:r}var n=t.githubFlavored;return"Just"===n.ctor?{highlight:r,gfm:!0,tables:n._0.tables,breaks:n._0.breaks,sanitize:t.sanitize,smartypants:t.smartypants}:{highlight:r,gfm:!1,tables:!1,breaks:!1,sanitize:t.sanitize,smartypants:t.smartypants}}var u={render:r,diff:e},i=function(){var t={},r=t.exports={};return function(){function n(t){this.tokens=[],this.tokens.links={},this.options=t||f.defaults,this.rules=s.normal,this.options.gfm&&(this.options.tables?this.rules=s.tables:this.rules=s.gfm)}function e(t,r){if(this.options=r||f.defaults,this.links=t,this.rules=d.normal,this.renderer=this.options.renderer||new o,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=d.breaks:this.rules=d.gfm:this.options.pedantic&&(this.rules=d.pedantic)}function o(t){this.options=t||{}}function c(t){this.tokens=[],this.token=null,this.options=t||f.defaults,this.options.renderer=this.options.renderer||new o,this.renderer=this.options.renderer,this.renderer.options=this.options}function u(t,r){return t.replace(r?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(t){return t.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(t,r){return r=r.toLowerCase(),"colon"===r?":":"#"===r.charAt(0)?"x"===r.charAt(1)?String.fromCharCode(parseInt(r.substring(2),16)):String.fromCharCode(+r.substring(1)):""})}function _(t,r){return t=t.source,r=r||"",function n(e,o){return e?(o=o.source||o,o=o.replace(/(^|[^\[])\^/g,"$1"),t=t.replace(e,o),n):new RegExp(t,r)}}function a(){}function l(t){for(var r,n,e=1;eAn error occured:

"+u(t.message+"",!0)+"
";throw t}}var s={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:a,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:a,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:a,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};s.bullet=/(?:[*+-]|\d+\.)/,s.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,s.item=_(s.item,"gm")(/bull/g,s.bullet)(),s.list=_(s.list)(/bull/g,s.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+s.def.source+")")(),s.blockquote=_(s.blockquote)("def",s.def)(),s._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",s.html=_(s.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,s._tag)(),s.paragraph=_(s.paragraph)("hr",s.hr)("heading",s.heading)("lheading",s.lheading)("blockquote",s.blockquote)("tag","<"+s._tag)("def",s.def)(),s.normal=l({},s),s.gfm=l({},s.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),s.gfm.paragraph=_(s.paragraph)("(?!","(?!"+s.gfm.fences.source.replace("\\1","\\2")+"|"+s.list.source.replace("\\1","\\3")+"|")(),s.tables=l({},s.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),n.rules=s,n.lex=function(t,r){return new n(r).lex(t)},n.prototype.lex=function(t){return t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(t,!0)},n.prototype.token=function(t,r,n){for(var e,o,c,u,i,_,a,l,f,t=t.replace(/^ +$/gm,"");t;)if((c=this.rules.newline.exec(t))&&(t=t.substring(c[0].length),c[0].length>1&&this.tokens.push({type:"space"})),c=this.rules.code.exec(t))t=t.substring(c[0].length),c=c[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?c:c.replace(/\n+$/,"")});else if(c=this.rules.fences.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"code",lang:c[2],text:c[3]||""});else if(c=this.rules.heading.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"heading",depth:c[1].length,text:c[2]});else if(r&&(c=this.rules.nptable.exec(t))){for(t=t.substring(c[0].length),_={type:"table",header:c[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:c[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:c[3].replace(/\n$/,"").split("\n")},l=0;l<_.align.length;l++)/^ *-+: *$/.test(_.align[l])?_.align[l]="right":/^ *:-+: *$/.test(_.align[l])?_.align[l]="center":/^ *:-+ *$/.test(_.align[l])?_.align[l]="left":_.align[l]=null;for(l=0;l<_.cells.length;l++)_.cells[l]=_.cells[l].split(/ *\| */);this.tokens.push(_)}else if(c=this.rules.lheading.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"heading",depth:"="===c[2]?1:2,text:c[1]});else if(c=this.rules.hr.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"hr"});else if(c=this.rules.blockquote.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"blockquote_start"}),c=c[0].replace(/^ *> ?/gm,""),this.token(c,r,!0),this.tokens.push({type:"blockquote_end"});else if(c=this.rules.list.exec(t)){for(t=t.substring(c[0].length),u=c[2],this.tokens.push({type:"list_start",ordered:u.length>1}),c=c[0].match(this.rules.item),e=!1,f=c.length,l=0;l1&&i.length>1||(t=c.slice(l+1).join("\n")+t,l=f-1)),o=e||/\n\n(?!\s*$)/.test(_),l!==f-1&&(e="\n"===_.charAt(_.length-1),o||(o=e)),this.tokens.push({type:o?"loose_item_start":"list_item_start"}),this.token(_,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(c=this.rules.html.exec(t))t=t.substring(c[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===c[1]||"script"===c[1]||"style"===c[1]),text:c[0]});else if(!n&&r&&(c=this.rules.def.exec(t)))t=t.substring(c[0].length),this.tokens.links[c[1].toLowerCase()]={href:c[2],title:c[3]};else if(r&&(c=this.rules.table.exec(t))){for(t=t.substring(c[0].length),_={type:"table",header:c[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:c[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:c[3].replace(/(?: *\| *)?\n$/,"").split("\n")},l=0;l<_.align.length;l++)/^ *-+: *$/.test(_.align[l])?_.align[l]="right":/^ *:-+: *$/.test(_.align[l])?_.align[l]="center":/^ *:-+ *$/.test(_.align[l])?_.align[l]="left":_.align[l]=null;for(l=0;l<_.cells.length;l++)_.cells[l]=_.cells[l].replace(/^ *\| *| *\| *$/g,"").split(/ *\| */);this.tokens.push(_)}else if(r&&(c=this.rules.paragraph.exec(t)))t=t.substring(c[0].length),this.tokens.push({type:"paragraph",text:"\n"===c[1].charAt(c[1].length-1)?c[1].slice(0,-1):c[1]});else if(c=this.rules.text.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"text",text:c[0]});else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0));return this.tokens};var d={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:a,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:a,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,d.link=_(d.link)("inside",d._inside)("href",d._href)(),d.reflink=_(d.reflink)("inside",d._inside)(),d.normal=l({},d),d.pedantic=l({},d.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),d.gfm=l({},d.normal,{escape:_(d.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:_(d.text)("]|","~]|")("|","|https?://|")()}),d.breaks=l({},d.gfm,{br:_(d.br)("{2,}","*")(),text:_(d.gfm.text)("{2,}","*")()}),e.rules=d,e.output=function(t,r,n){return new e(r,n).output(t)},e.prototype.output=function(t){for(var r,n,e,o,c="";t;)if(o=this.rules.escape.exec(t))t=t.substring(o[0].length),c+=o[1];else if(o=this.rules.autolink.exec(t))t=t.substring(o[0].length),"@"===o[2]?(n=":"===o[1].charAt(6)?this.mangle(o[1].substring(7)):this.mangle(o[1]),e=this.mangle("mailto:")+n):(n=u(o[1]),e=n),c+=this.renderer.link(e,null,n);else if(this.inLink||!(o=this.rules.url.exec(t))){if(o=this.rules.tag.exec(t))!this.inLink&&/^/i.test(o[0])&&(this.inLink=!1),t=t.substring(o[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):u(o[0]):o[0];else if(o=this.rules.link.exec(t))t=t.substring(o[0].length),this.inLink=!0,c+=this.outputLink(o,{href:o[2],title:o[3]}),this.inLink=!1;else if((o=this.rules.reflink.exec(t))||(o=this.rules.nolink.exec(t))){if(t=t.substring(o[0].length),r=(o[2]||o[1]).replace(/\s+/g," "),!(r=this.links[r.toLowerCase()])||!r.href){c+=o[0].charAt(0),t=o[0].substring(1)+t;continue}this.inLink=!0,c+=this.outputLink(o,r),this.inLink=!1}else if(o=this.rules.strong.exec(t))t=t.substring(o[0].length),c+=this.renderer.strong(this.output(o[2]||o[1]));else if(o=this.rules.em.exec(t))t=t.substring(o[0].length),c+=this.renderer.em(this.output(o[2]||o[1]));else if(o=this.rules.code.exec(t))t=t.substring(o[0].length),c+=this.renderer.codespan(u(o[2],!0));else if(o=this.rules.br.exec(t))t=t.substring(o[0].length),c+=this.renderer.br();else if(o=this.rules.del.exec(t))t=t.substring(o[0].length),c+=this.renderer.del(this.output(o[1]));else if(o=this.rules.text.exec(t))t=t.substring(o[0].length),c+=this.renderer.text(u(this.smartypants(o[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else t=t.substring(o[0].length),n=u(o[1]),e=n,c+=this.renderer.link(e,null,n);return c},e.prototype.outputLink=function(t,r){var n=u(r.href),e=r.title?u(r.title):null;return"!"!==t[0].charAt(0)?this.renderer.link(n,e,this.output(t[1])):this.renderer.image(n,e,u(t[1]))},e.prototype.smartypants=function(t){return this.options.smartypants?t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):t},e.prototype.mangle=function(t){if(!this.options.mangle)return t;for(var r,n="",e=t.length,o=0;o.5&&(r="x"+r.toString(16)),n+="&#"+r+";";return n},o.prototype.code=function(t,r,n){if(this.options.highlight){var e=this.options.highlight(t,r);null!=e&&e!==t&&(n=!0,t=e)}return r?'
'+(n?t:u(t,!0))+"\n
\n":"
"+(n?t:u(t,!0))+"\n
"},o.prototype.blockquote=function(t){return"
\n"+t+"
\n"},o.prototype.html=function(t){return t},o.prototype.heading=function(t,r,n){return"'+t+"\n"},o.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},o.prototype.list=function(t,r){var n=r?"ol":"ul";return"<"+n+">\n"+t+"\n"},o.prototype.listitem=function(t){return"
  • "+t+"
  • \n"},o.prototype.paragraph=function(t){return"

    "+t+"

    \n"},o.prototype.table=function(t,r){return"\n\n"+t+"\n\n"+r+"\n
    \n"},o.prototype.tablerow=function(t){return"\n"+t+"\n"},o.prototype.tablecell=function(t,r){var n=r.header?"th":"td";return(r.align?"<"+n+' style="text-align:'+r.align+'">':"<"+n+">")+t+"\n"},o.prototype.strong=function(t){return""+t+""},o.prototype.em=function(t){return""+t+""},o.prototype.codespan=function(t){return""+t+""},o.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},o.prototype.del=function(t){return""+t+""},o.prototype.link=function(t,r,n){if(this.options.sanitize){try{var e=decodeURIComponent(i(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return""}var o='
    "},o.prototype.image=function(t,r,n){var e=''+n+'":">"},o.prototype.text=function(t){return t},c.parse=function(t,r,n){return new c(r,n).parse(t)},c.prototype.parse=function(t){this.inline=new e(t.links,this.options,this.renderer),this.tokens=t.reverse();for(var r="";this.next();)r+=this.tok();return r},c.prototype.next=function(){return this.token=this.tokens.pop()},c.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},c.prototype.parseText=function(){for(var t=this.token.text;"text"===this.peek().type;)t+="\n"+this.next().text;return this.inline.output(t)},c.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var t,r,n,e,o="",c="";for(n="",t=0;t"]=r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}});var ii=function(t){var r=t;return"TypeApplication"===r.ctor?{ctor:"::",_0:r._0,_1:ii(r._1)}:{ctor:"::",_0:r,_1:{ctor:"[]"}}},_i=function(t){var r=t;return"Application"===r.ctor?a(k["++"],_i(r._0),{ctor:"::",_0:r._1,_1:{ctor:"[]"}}):{ctor:"::",_0:r,_1:{ctor:"[]"}}},ai={ctor:"::",_0:"isTuple",_1:{ctor:"::",_0:"abs",_1:{ctor:"::",_0:"apply",_1:{ctor:"::",_0:"apply",_1:{ctor:"::",_0:"binary_part",_1:{ctor:"::",_0:"bit_size",_1:{ctor:"::",_0:"byte_size",_1:{ctor:"::",_0:"div",_1:{ctor:"::",_0:"elem",_1:{ctor:"::",_0:"exit",_1:{ctor:"::",_0:"function_exported?",_1:{ctor:"::",_0:"get_and_update_in",_1:{ctor:"::",_0:"get_in",_1:{ctor:"::",_0:"hd",_1:{ctor:"::",_0:"inspect",_1:{ctor:"::",_0:"inspect",_1:{ctor:"::",_0:"is_atom",_1:{ctor:"::",_0:"is_binary",_1:{ctor:"::",_0:"is_bitstring",_1:{ctor:"::",_0:"is_boolean",_1:{ctor:"::",_0:"is_float",_1:{ctor:"::",_0:"is_function",_1:{ctor:"::",_0:"is_function",_1:{ctor:"::",_0:"is_integer",_1:{ctor:"::",_0:"is_list",_1:{ctor:"::",_0:"is_map",_1:{ctor:"::",_0:"is_number",_1:{ctor:"::",_0:"is_pid",_1:{ctor:"::",_0:"is_port",_1:{ctor:"::",_0:"is_reference",_1:{ctor:"::",_0:"is_tuple",_1:{ctor:"::",_0:"length",_1:{ctor:"::",_0:"macro_exported?",_1:{ctor:"::",_0:"make_ref",_1:{ctor:"::",_0:"map_size",_1:{ctor:"::",_0:"max",_1:{ctor:"::",_0:"min",_1:{ctor:"::",_0:"node",_1:{ctor:"::",_0:"node",_1:{ctor:"::",_0:"not",_1:{ctor:"::",_0:"pop_in",_1:{ctor:"::",_0:"put_elem",_1:{ctor:"::",_0:"put_in",_1:{ctor:"::",_0:"rem",_1:{ctor:"::",_0:"round",_1:{ctor:"::",_0:"self",_1:{ctor:"::",_0:"send",_1:{ctor:"::",_0:"spawn",_1:{ctor:"::",_0:"spawn",_1:{ctor:"::",_0:"spawn_link",_1:{ctor:"::",_0:"spawn_link",_1:{ctor:"::",_0:"spawn_monitor",_1:{ctor:"::",_0:"spawn_monitor",_1:{ctor:"::",_0:"struct",_1:{ctor:"::",_0:"struct",_1:{ctor:"::",_0:"struct!",_1:{ctor:"::",_0:"struct!",_1:{ctor:"::",_0:"throw",_1:{ctor:"::",_0:"tl",_1:{ctor:"::",_0:"trunc",_1:{ctor:"::",_0:"tuple_size",_1:{ctor:"::",_0:"update_in",_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},li={ctor:"::",_0:"cons",_1:{ctor:"::",_0:"compare",_1:{ctor:"::",_0:"xor",_1:{ctor:"::",_0:"negate",_1:{ctor:"::",_0:"sqrt",_1:{ctor:"::",_0:"clamp",_1:{ctor:"::",_0:"logBase",_1:{ctor:"::",_0:"e",_1:{ctor:"::",_0:"pi",_1:{ctor:"::",_0:"cos",_1:{ctor:"::",_0:"sin",_1:{ctor:"::",_0:"tan",_1:{ctor:"::",_0:"acos",_1:{ctor:"::",_0:"asin",_1:{ctor:"::",_0:"atan",_1:{ctor:"::",_0:"atan2",_1:{ctor:"::",_0:"round",_1:{ctor:"::",_0:"floor",_1:{ctor:"::",_0:"ceiling",_1:{ctor:"::",_0:"truncate",_1:{ctor:"::",_0:"toFloat",_1:{ctor:"::",_0:"toString",_1:{ctor:"::",_0:"identity",_1:{ctor:"::",_0:"always",_1:{ctor:"::",_0:"flip",_1:{ctor:"::",_0:"tuple2",_1:{ctor:"::",_0:"tuple3",_1:{ctor:"::",_0:"tuple4",_1:{ctor:"::",_0:"tuple5",_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},fi={ctor:"::",_0:"fn",_1:{ctor:"::",_0:"do",_1:{ctor:"::",_0:"end",_1:{ctor:"::",_0:"cond",_1:{ctor:"::",_0:"receive",_1:{ctor:"::",_0:"or",_1:{ctor:"::",_0:"and",_1:{ctor:"::",_0:"quote",_1:{ctor:"::",_0:"unquote",_1:{ctor:"::",_0:"unquote_splicing",_1:{ctor:"::",_0:"module",_1:{ctor:"[]"}}}}}}}}}}}},si=function(t){return a(H,t,fi)?a(k["++"],t,"__"):t},di=function(t){return a(H,t,{ctor:"::",_0:"Basics",_1:{ctor:"::",_0:"Bitwise",_1:{ctor:"::",_0:"Char",_1:{ctor:"::",_0:"Date",_1:{ctor:"::",_0:"Debug",_1:{ctor:"::",_0:"Dict",_1:{ctor:"::",_0:"List",_1:{ctor:"::",_0:"String",_1:{ctor:"::",_0:"Maybe",_1:{ctor:"::",_0:"Regex",_1:{ctor:"::",_0:"Result",_1:{ctor:"::",_0:"Set",_1:{ctor:"::",_0:"String",_1:{ctor:"::",_0:"Tuple",_1:{ctor:"[]"}}}}}}}}}}}}}}})},pi=function(t){return di(t)?a(k["++"],"Elchemy.X",t):t},hi=a(pt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),{ctor:"::",_0:v.chr("+"),_1:{ctor:"::",_0:v.chr("-"),_1:{ctor:"::",_0:v.chr("/"),_1:{ctor:"::",_0:v.chr("*"),_1:{ctor:"::",_0:v.chr("="),_1:{ctor:"::",_0:v.chr("."),_1:{ctor:"::",_0:v.chr("$"),_1:{ctor:"::",_0:v.chr("<"),_1:{ctor:"::",_0:v.chr(">"),_1:{ctor:"::",_0:v.chr(":"),_1:{ctor:"::",_0:v.chr("&"),_1:{ctor:"::",_0:v.chr("|"),_1:{ctor:"::",_0:v.chr("^"),_1:{ctor:"::",_0:v.chr("?"),_1:{ctor:"::",_0:v.chr("%"),_1:{ctor:"::",_0:v.chr("#"),_1:{ctor:"::",_0:v.chr("@"),_1:{ctor:"::",_0:v.chr("~"),_1:{ctor:"::",_0:v.chr("!"),_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}),vi=function(t){var r=a(Y,function(r){var n=r;return v.eq(t,n._1)},hi);return"::"===r.ctor&&"_Tuple2"===r._0.ctor?a(k["++"],"op",T(r._0._0)):v.crashCase("Helpers",{start:{line:433,column:5},end:{line:440,column:37}},r)("Illegal op")},gi=function(t){return l(m,r(function(t,r){return a(k["++"],t,r)}),"__",a(Vt,"",a(G,vi,St(t))))},mi=function(t){return f(hr,yr,mr("\\\\"),b("\\\\"),t)},bi=r(function(t,n){return a(G,r(function(t,r){return a(k["++"],t,r)})(t),a(G,T,a(dt,1,n)))}),yi=bi("x"),ki=l(U,g(Wn),Rn,{ctor:"::",_0:{ctor:"_Tuple2",_0:"||",_1:"||"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"&&",_1:"&&"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"==",_1:"=="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"/=",_1:"!="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<",_1:"<"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:">",_1:">"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:">=",_1:">="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<=",_1:"<="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"++",_1:"++"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"+",_1:"+"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"-",_1:"-"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"*",_1:"*"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"/",_1:"/"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:">>",_1:">>>"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<|",_1:""},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<<",_1:""},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"|>",_1:"|>"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"%",_1:"rem"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"//",_1:"div"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"^",_1:""},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"::",_1:"cons"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"not",_1:"!"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",",_1:"tuple2"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",,",_1:"tuple3"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",,,",_1:"tuple4"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",,,,",_1:"tuple5"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"as",_1:"="},_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}}}}}}}}}),Ti=function(t){var r=a(vn,t,ki);return"Just"===r.ctor?""===r._0?v.crashCase("Helpers",{start:{line:219,column:5},end:{line:229,column:25}},r)(a(k["++"],t," is not a valid or not implemented yet operator")):r._0:gi(t)},wi=(l(hr,yr,mr("(^\\{|\\}$)"),function(t){return""}),n(function(t,r,n){var e=n;return"[]"===e.ctor?r:t(e)})),xi=function(t){var r=t;return"::"===r.ctor?{ctor:"_Tuple2",_0:S(r._0),_1:r._1}:{ctor:"_Tuple2",_0:R,_1:{ctor:"[]"}}},Ei=function(t){return a(Zt,rt,xi(rt(t)))},Bi=r(function(t,r){return function(t){var r=t;return{ctor:"_Tuple2",_0:r._1,_1:r._0}}(a(tr,N(""),a(Zt,function(r){return l(wi,Vt("."),t,rt(r))},xi(rt(r)))))}),Ci=r(function(t,r){return a(Vt,"\n",a(G,function(r){return v.eq(Dt(r),"")?r:a(k["++"],t,r)},Mt(r)))}),Ni=function(t){return a(Vt,"",a(ft,2*(t+1)," "))},Ri=function(t){return a(k["++"],"\n",Ni(t))},Ai=r(function(t,r){return a(k["++"],"\n",a(Ci,a(Pt,1,Ri(t)),r))}),Si=function(t){return a(N,!1,a($,function(t){return Et(nr(t))},Kt(t)))},$i=r(function(t,r){return v.eq(qt(r),r)?zt(r):function(r){return t?si(r):r}(zt(a(Vt,"_",l(pr,yr,mr("(?=[A-Z])"),r))))}),Li=function(t){return a(k["++"],":",a($i,!1,t))},Oi=function(t){return pi(a(Vt,".",a(G,function(t){return Si(t)?t:a($i,!0,t)},t)))},Ii=r(function(t,r){return v.crash("Helpers",{start:{line:25,column:12},end:{line:25,column:23}})(a(k["++"]," ## ERROR: No ",a(k["++"],t,a(k["++"]," implementation for ",a(k["++"],T(r),a(k["++"]," yet","\n"))))))}),zi={ctor:"Custom"},qi={ctor:"Builtin"},Mi={ctor:"None"},Fi=function(t){var n=a(gr,mr("^[+\\-\\/*=.$<>:&|^?%#@~!]+$"),t),e=a(J,r(function(t,r){return v.eq(t,r)})(t),an(ki)),o={ctor:"_Tuple2",_0:e,_1:n};t:do{if("_Tuple2"===o.ctor){if(!0===o._0)return qi;if(!0===o._1)return zi;break t}break t}while(!1);return Mi},Di=function(t){return v.eq(Fi(t),zi)},Pi=function(t){return a(G,function(t){var r=t,n=r._0;return a(k["++"],a($i,!1,n),a(k["++"],": 0, ",a(k["++"],a($i,!1,n),a(k["++"],": ",T(r._1)))))},a(G,Zt(function(t){return t.arity}),t))},Ji=r(function(t,n){var e=a(N,Rn,a($,function(t){return t.definitions},a(vn,t.mod,t.commons.modules))),o=function(t){return a(N,{ctor:"[]"},a($,function(n){return z(a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,n))},a(vn,t,e)))};return v.eq(t.mod,"Elchemy.XBasics")?{ctor:"[]"}:a(ct,o,n)}),ji=function(t){var n=Pi(a(Ji,t,ai)),e=Pi(a(Ji,t,li)),o=r(function(t,n){return v.eq(n,{ctor:"[]"})?"":l(m,r(function(t,r){return a(k["++"],t,r)}),"]\n",a(r(function(t,r){return a(k["++"],t,r)}),a(k["++"],"import ",a(k["++"],t,", except: [")),a(Vt,", ",n)))});return a(k["++"],a(o,"Elchemy.XBasics",e),a(o,"Kernel",n))},Vi=r(function(t,r){return v.update(t,{variables:a(Pe,t.variables,r.variables)})}),Ui=r(function(t,n){var e=t.exports;switch(e.ctor){case"SubsetExport":return!a(J,r(function(t,r){return v.eq(t,r)})(Sc(n)),e._0);case"AllExport":return!1;default:return v.crashCase("ExContext",{start:{line:359,column:5},end:{line:370,column:41}},e)("No such export")}}),Wi=function(t){return v.update(t,{inArgs:!0})},Hi=n(function(t,n,e){return a(J,r(function(t,r){return v.eq(t,r)})({ctor:"_Tuple2",_0:t,_1:n}),e.flags)}),Qi=(r(function(t,n){return a(G,rr,a(Y,function(n){return a(r(function(t,r){return v.eq(t,r)}),t,nr(n))},n.flags))}),e(function(t,r,n,e){return l(Hi,r,n,t)?"":e})),Ki=r(function(t,r){return v.update(r,{flags:{ctor:"::",_0:t,_1:r.flags}})}),Xi=function(t){return v.update(t,{indent:t.indent+1})},Gi=r(function(t,r){return v.update(r,{mod:t})}),Yi={modules:Rn},Zi=n(function(t,r,n){return a($,function(t){return t.arity},a(A,vn(n),a($,function(t){return t.definitions},a(vn,r,t.commons.modules))))}),t_=e(function(t,r,n,e){return v.eq(W(e),a(N,-1,l(Zi,t,r,n)))}),r_=e(function(t,r,n,e){return a(A,vn(n),a($,t,a(vn,r,function(t){return t.modules}(function(t){return t.commons}(e)))))}),n_=r_(function(t){return t.aliases}),e_=r_(function(t){return t.types}),o_=n(function(t,r,n){return v.crash("ExContext",{start:{line:140,column:5},end:{line:140,column:16}})(a(k["++"],"Expected ",a(k["++"],T(t),a(k["++"]," arguments for ",a(k["++"],n,a(k["++"],". But got ",T(W(r))))))))}),c_=c(function(t,r,n,e,o,c){return{parentModule:t,arity:r,aliasType:n,body:e,typeBody:o,types:c}}),u_=(n(function(t,r,n){return{arity:t,parentModule:r,parentAlias:n}}),r(function(t,r){return{arity:t,def:r}})),i_=e(function(t,r,n,e){return{aliases:t,types:r,definitions:n,exports:e}}),__=r(function(t,r){return{mod:t,exports:r,indent:0,flags:{ctor:"[]"},variables:Me,inArgs:!1,hasModuleDoc:!1,lastDoc:R,commons:{modules:a(Hn,t,f(i_,Rn,Rn,Rn,r))},inTypeDefiniton:!1,inCaseOf:!1,importedTypes:Yn({ctor:"::",_0:{ctor:"_Tuple2",_0:"Order",_1:"Elchemy.XBasics"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"Result",_1:"Elchemy.XResult"},_1:{ctor:"[]"}}})}}),a_=f(i_,Rn,Rn,Rn,Ic),l_=c(function(t,r,n,e,o,c){var u=c.commons,i=function(t){return S(a(e,a(N,a_,t),l(Un,r,b(S(o)),a(N,Rn,a($,n,t)))))};return v.update(c,{commons:v.update(u,{modules:l(Un,t,i,u.modules)})})}),f_=r(function(t,n){return f(l_,t,n,function(t){return t.aliases},r(function(t,r){return v.update(t,{aliases:r})}))}),s_=e(function(t,n,e,o){var c={arity:o,parentModule:t,parentAlias:n};return s(l_,t,e,function(t){return t.types},r(function(t,r){return v.update(t,{types:r})}),c)}),d_=n(function(t,n,e){return d(l_,t.mod,n,function(t){return t.definitions},r(function(t,r){return v.update(t,{definitions:r})}),e,t)}),p_=n(function(t,o,c){var u=e(function(t,r,e,o){return l(fn,n(function(n,e,c){return d(l_,o.mod,n,t,r,e,c)}),o,e)}),i=r(function(t,r){return a(N,Rn,a($,t,a(vn,r,c.commons.modules)))}),_=function(t){return a(Kn,r(function(r,n){return v.eq(r,t)}),a(i,function(t){return t.aliases},o))},s=r(function(t,n){return a(Kn,r(function(r,n){var e=n;return v.eq(e.parentAlias,t)}),a(i,function(t){return t.types},o))}),p=r(function(t,n){var e=t;switch(e.ctor){case"TypeExport":var o=e._0;return f(u,function(t){return t.types},r(function(t,r){return v.update(t,{types:r})}),a(s,o,e._1),f(u,function(t){return t.aliases},r(function(t,r){return v.update(t,{aliases:r})}),_(o),n));case"FunctionExport":return n;default:return v.crashCase("ExContext",{start:{line:474,column:13},end:{line:484,column:69}},e)("You can't import subset of subsets")}}),h=t;switch(h.ctor){case"AllExport":return f(u,function(t){return t.types},r(function(t,r){return v.update(t,{types:r})}),a(i,function(t){return t.types},o),f(u,function(t){return t.aliases},r(function(t,r){return v.update(t,{aliases:r})}),a(i,function(t){return t.aliases},o),c));case"SubsetExport":return l(U,p,c,h._0);default:return v.crashCase("ExContext",{start:{line:486,column:9},end:{line:496,column:77}},h)("You can't import something that's not a subset")}}),h_=n(function(t,r,n){return{ctor:"ArgumentedType",_0:t,_1:r,_2:n}}),v_=function(t){return{ctor:"SimpleType",_0:t}},g_={ctor:"TypeAlias"},m_={ctor:"Type"},b_=r(function(t,r){var n=t(r);switch(n.ctor){case"TypeVariable":return n;case"TypeConstructor":return a(Qc,n._0,a(G,b_(t),n._1));case"TypeRecordConstructor":return a(Uc,a(b_,t,n._0),a(G,Zt(b_(t)),n._1));case"TypeTuple":return jc(a(G,b_(t),n._0));case"TypeRecord":return Vc(a(G,Zt(b_(t)),n._0));default:return a(Pc,a(b_,t,n._0),a(b_,t,n._1))}}),y_=r(function(t,r){return t(function(){var n=r;switch(n.ctor){case"TypeVariable":return n;case"TypeConstructor":return a(Qc,n._0,a(G,y_(t),n._1));case"TypeTuple":return jc(a(G,y_(t),n._0));case"TypeRecord":return Vc(a(G,Zt(y_(t)),n._0));case"TypeRecordConstructor":return a(Uc,a(y_,t,n._0),a(G,Zt(y_(t)),n._1));default:return a(Pc,a(y_,t,n._0),a(y_,t,n._1))}}())}),k_=(r(function(t,r){return l(n_,r.mod,t,r)}),n(function(t,n,e){var o=function(t){var r=t;return"TypeVariable"===r.ctor?r._0:v.crashCase("ExAlias",{start:{line:169,column:13},end:{line:177,column:46}},r)(a(k["++"],"type can only take variables. ",a(k["++"],T(r),"is incorrect")))},c=l(U,g(Wn),Rn,l(P,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),a(G,o,t),n));return a(y_,function(t){var r=t;return"TypeVariable"===r.ctor?a(N,r,a(vn,r._0,c)):r},e)})),T_=n(function(t,n,e){var o=r(function(t,r){var o=r,c=t;if("TypeConstructor"===c.ctor&&"::"===c._0.ctor&&"[]"===c._0._1.ctor){var u=c._0._0;return a(ui["=>"],{ctor:"::",_0:u,_1:o._0},s(s_,e.mod,n,u,W(c._1),o._1))}return v.crashCase("ExAlias",{start:{line:116,column:13},end:{line:122,column:65}},c)("Type can only start with a tag")});return l(U,o,{ctor:"_Tuple2",_0:{ctor:"[]"},_1:e},t)}),w_=n(function(t,r,n){var e=r;if("TypeConstructor"===e.ctor&&"::"===e._0.ctor&&"[]"===e._0._1.ctor){var o=e._0._0,c=l(T_,n,o,t),u=c._0,i=c._1,_=W(e._1),s=Wc(a(k["++"],"@",o)),p=d(c_,t.mod,_,m_,s,v_(s),u);return f(f_,t.mod,o,p,i)}return v.crashCase("ExAlias",{start:{line:80,column:5},end:{line:98,column:68}},e)(a(k["++"],"Wrong type declaration ",T(e)))}),x_=n(function(t,r,n){var e=r;if("TypeConstructor"===e.ctor&&"::"===e._0.ctor&&"[]"===e._0._1.ctor){var o=e._0._0,c=e._1,u=l(h_,o,c,n),i=W(c),_=d(c_,t.mod,i,g_,n,u,{ctor:"[]"});return f(f_,t.mod,o,_,t)}return v.crashCase("ExAlias",{start:{line:60,column:5},end:{line:75,column:74}},e)(a(k["++"],"Wrong type alias declaration ",T(e)))}),E_=r(function(t,r){var n=t;if("SimpleType"===n.ctor)return n._0;var e=n._1,o=W(e),c=W(r);return v.eq(c,o)?l(k_,e,r,n._2):l(o_,o,r,n._0)}),B_=r(function(t,o){var c=e(function(n,e,o,c){return a(N,e,a(A,function(t){switch(t.ctor){case"TypeRecordConstructor":case"TypeApplication":return S(t);default:return R}},a($,function(t){return a(E_,t.typeBody,c)},a(oi,function(t){return a(r(function(t,r){return v.eq(t,r)}),g_,function(t){return t.aliasType}(t))},l(n_,n,o,t)))))}),u=n(function(r,n,e){return function(t){var n=t;return f(c,n._0,r,n._1,e)}(a(Bi,t.mod,n))});return a(y_,function(t){var r=t;return"TypeConstructor"===r.ctor?l(u,t,r._0,r._1):r},o)}),C_=n(function(t,r,n){var e=W(ii(a(B_,t,n)));return l(d_,t,r,a(u_,e-1,n))}),N_=r(function(t,r){var n=t;switch(n.ctor){case"TypeAliasDeclaration":return l(x_,r,n._0,n._1);case"TypeDeclaration":return l(w_,r,n._0,n._1);case"FunctionTypeDeclaration":return l(C_,r,n._0,n._1);default:return r}}),R_=r(function(t,r){return l(U,N_,t,r)}),A_=r(function(t,e){var o=n(function(r,n,e){for(;;){var o=n;if("[]"===o.ctor)return v.eq(r,{ctor:"[]"})?gt(rt(e)):vt(r);var c=o._1,u=o._0,i=a(k["++"],r,c);if(a(j,a(m,t,u),i)){var _={ctor:"[]"},l=i,f={ctor:"::",_0:u,_1:e};r=_,n=l,e=f}else{var s={ctor:"::",_0:u,_1:r},d=c,p=e;r=s,n=d,e=p}}});return r(function(r,n){return a(go,function(n){return a(j,t(n),r)},n)}),l(o,{ctor:"[]"},e,{ctor:"[]"})}),S_=r(function(t,r){return a(Y,function(r){return!l(m,H,t,r)},r)}),$_=function(t){var r=_i(t);return"::"===r.ctor&&"[]"===r._1.ctor?"Variable"===r._0.ctor&&"::"===r._0._0.ctor&&"[]"===r._0._0._1.ctor?r._0._0._0:v.crashCase("ExVariable",{start:{line:133,column:5},end:{line:143,column:40}},r)(a(k["++"],T(r._0)," is not a variable")):a(N,"",a($,$_,K(r)))},L_=function(t){var n={ctor:"[]"},e=function(t){return l(V,r(function(t,r){return a(k["++"],t,r)}),{ctor:"[]"},a(G,L_,t))},o=t;t:do{r:do{switch(o.ctor){case"Record":return e(a(G,rr,o._0));case"Tuple":return e(o._0);case"Variable":if("::"===o._0.ctor&&"[]"===o._0._1.ctor)return function(t){return{ctor:"::",_0:t,_1:{ctor:"[]"}}}(o._0._0);break t;case"List":return e(o._0);case"Application":return e({ctor:"::",_0:o._0,_1:{ctor:"::",_0:o._1,_1:{ctor:"[]"}}});case"BinOp":if("Variable"!==o._0.ctor||"::"!==o._0._0.ctor||"[]"!==o._0._0._1.ctor)break r;switch(o._0._0._0){case"::":return e({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}});case"as":if("Variable"===o._2.ctor){if("Variable"===o._1.ctor)return e({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}});if("::"===o._2._0.ctor&&"[]"===o._2._0._1.ctor)return e({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}});break r}break r;default:break r}case"Case":return a(S_,L_(o._0),a(ct,g(O_),o._1));case"Let":return a(ct,g(O_),o._0);case"Lambda":return a(S_,a(ct,L_,o._0),L_(o._1));default:break t}}while(!1);return e({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}})}while(!1);return n},O_=r(function(t,r){return a(S_,L_(t),L_(r))}),I_=function(t){var r=_i(t);return"::"===r.ctor&&"[]"===r._1.ctor?"Variable"===r._0.ctor&&"::"===r._0._0.ctor&&"[]"===r._0._0._1.ctor?{ctor:"::",_0:r._0._0._0,_1:{ctor:"[]"}}:L_(r._0):a(N,{ctor:"[]"},a($,I_,K(r)))},z_=function(t){var r=_i(t);return"::"===r.ctor&&"[]"===r._1.ctor?{ctor:"[]"}:a(N,{ctor:"[]"},a($,ct(I_),Q(r)))},q_=r(function(t,n){var e=t,o=n;return a(r(function(t,r){return a(J,a(m,H,r),t)}),I_(e._0),a(S_,z_(o._0),L_(o._1)))}),M_=function(t){var n=a(A_,r(function(t,r){return!a(q_,t,r)}),t);return"Ok"===n.ctor?n._0:(v.crash("ExVariable",{start:{line:122,column:21},end:{line:122,column:32}})(a(k["++"],"Couldn't find a solution to ",T(a(G,nr,n._0)))),{ctor:"[]"})},F_=function(t){return a(mo,r(function(t,r){return a(q_,t,r)&&a(q_,r,t)}),t)},D_=r(function(t,r){return a(ze,r,t.variables)||t.inArgs?r:a(k["++"],r,"()")}),P_=r(function(t,n){var e=r(function(t,r){return v.update(r,{variables:a(Fe,a($i,!0,t),r.variables)})});return l(U,e,n,l(V,r(function(t,r){return a(k["++"],t,r)}),{ctor:"[]"},a(G,L_,t)))}),J_=function(t){return a(Y,function(t){var r=t;return v.cmp(r._1,1)>0},a(G,Zt(function(t){return a(r(function(t,r){return t+r}),-1,W(t))}),a(pt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),a(G,ii,a(N,{ctor:"[]"},a($,ii,t))))))},j_=r(function(t,r){return a(Ui,t,r)?"p":""}),V_=o(function(t,r,n,e,o){var c={ctor:"_Tuple2",_0:e,_1:l(Hi,"nocurry",n,t)};t:do{if(!0===c._1){if(0===c._0)break t;return""}if(0===c._0)break t;var u=c._0,i=a(G,function(t){var r=t;return a(k["++"],"{",a(k["++"],T(r._0),a(k["++"],", ",a(k["++"],T(r._1),"}"))))},o),_=a(j_,t,n),f=Di(n)?Ti(n):a($i,!0,n);return v.eq(i,{ctor:"[]"})||v.eq(_,"p")?a(Vt,"",{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"curry",_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:f,_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:T(u),_1:{ctor:"[]"}}}}}}}):a(Vt,"",{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"curry",_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:f,_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:T(u),_1:{ctor:"::",_0:", lambdas: [",_1:{ctor:"::",_0:a(Vt,", ",i),_1:{ctor:"::",_0:"]",_1:{ctor:"[]"}}}}}}}}}})}while(!1);return""}),U_=c(function(t,n,e,o,c,u){var i={ctor:"_Tuple2",_0:Fi(e),_1:o};switch(i._0.ctor){case"Custom":return a(Vt,"",{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"def",_1:{ctor:"::",_0:a(j_,t,e),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:Ti(e),_1:{ctor:"::",_0:"(",_1:{ctor:"::",_0:a(Vt,", ",l(m,r(function(t,r){return a(k["++"],t,r)}),yi(c),a(G,n(a(P_,o,t)),o))),_1:{ctor:"::",_0:") do",_1:{ctor:"::",_0:Ri(t.indent+1),_1:{ctor:"::",_0:a(n,a(P_,o,Xi(t)),u),_1:{ctor:"::",_0:a(Vt,"",a(G,function(t){return a(k["++"],".(",a(k["++"],t,")"))},yi(c))),_1:{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}}}}}}}}}}}});case"Builtin":if("::"===i._1.ctor&&"::"===i._1._1.ctor&&"[]"===i._1._1._1.ctor){var _=i._1._1._0,f=i._1._0;return a(Vt,"",{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"def",_1:{ctor:"::",_0:a(j_,t,e),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:a(n,a(P_,{ctor:"::",_0:f,_1:{ctor:"[]"}},t),f),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:Ti(e),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:a(n,a(P_,{ctor:"::",_0:_,_1:{ctor:"[]"}},t),_),_1:{ctor:"::",_0:" do",_1:{ctor:"::",_0:Ri(t.indent+1),_1:{ctor:"::",_0:a(n,a(P_,o,Xi(t)),u),_1:{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}}}}}}}}}}}}})}return v.crashCase("ExFunction",{start:{line:113,column:5},end:{line:195,column:38}},i)(a(k["++"],"operator ",a(k["++"],e,a(k["++"]," has to have 2 arguments but has ",T(o)))));default:var s=yi(c),d=function(t){return v.cmp(W(s),0)>0?t:""},p=a(G,function(t){return Yo(z(t))},s);return a(Vt,"",{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"def",_1:{ctor:"::",_0:a(j_,t,e),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:a($i,!0,e),_1:{ctor:"::",_0:"(",_1:{ctor:"::",_0:a(Vt,", ",a(G,n(Wi(t)),a(k["++"],o,p))),_1:{ctor:"::",_0:") do",_1:{ctor:"::",_0:Ri(t.indent+1),_1:{ctor:"::",_0:d("("),_1:{ctor:"::",_0:a(n,a(P_,a(k["++"],o,p),Xi(t)),u),_1:{ctor:"::",_0:d(")"),_1:{ctor:"::",_0:a(Vt,"",a(G,function(t){return a(k["++"],".(",a(k["++"],t,")"))},s)),_1:{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}}}}}}}}}}}}}})}}),W_=c(function(t,n,e,o,c,u){var i=function(t){return l(P,m(Fo(Yo({ctor:"::",_0:"as",_1:{ctor:"[]"}}))),o,t)},_=a(A,function(t){return a(vn,e,function(t){return t.definitions}(t))},a(vn,t.mod,t.commons.modules)),f=a(N,0,a($,function(t){return t.arity},_)),p=function(r){var o=r,c=o._1,u=o._0,_=u;if("Tuple"===_.ctor){var a=_._0;return d(U_,t,n,e,i(a),f-W(i(a)),c)}return d(U_,t,n,e,{ctor:"::",_0:u,_1:{ctor:"[]"}},f-1,c)},h=J_(a($,function(t){return t.def},_));return l(Hi,"nodef",e,t)?s(V_,t,n,e,f,h):a(k["++"],s(V_,t,n,e,f,h),l(m,r(function(t,r){return a(k["++"],t,r)}),"\n",l(V,r(function(t,r){return a(k["++"],t,r)}),"",a(G,p,u))))}),H_=o(function(t,r,n,e,o){var c=a(A,function(t){return a(vn,n,function(t){return t.definitions}(t))},a(vn,t.mod,t.commons.modules)),u=a(N,0,a($,function(t){return t.arity},c)),i=J_(a($,function(t){return t.def},c));return l(Hi,"nodef",n,t)?s(V_,t,r,n,u,i):a(k["++"],s(V_,t,r,n,u,i),a(k["++"],d(U_,t,r,n,e,u-W(e),o),"\n"))}),Q_=n(function(t,r,n){var e=function(n){return a(Vt,",",a(G,r(t),n))},o=n;t:do{switch(o.ctor){case"TryFfi":if("String"===o._0.ctor&&"String"===o._1.ctor)return"Tuple"===o._2.ctor?a(k["++"],"try_catch fn _ -> ",a(k["++"],o._0._0,a(k["++"],".",a(k["++"],o._1._0,a(k["++"],"(",a(k["++"],e(o._2._0),a(k["++"],")"," end"))))))):a(k["++"],"try_catch fn _ -> ",a(k["++"],o._0._0,a(k["++"],".",a(k["++"],o._1._0,a(k["++"],"(",a(k["++"],a(r,t,o._2),a(k["++"],")"," end")))))));break t;case"Ffi":if("String"===o._0.ctor&&"String"===o._1.ctor)return"Tuple"===o._2.ctor?a(k["++"],o._0._0,a(k["++"],".",a(k["++"],o._1._0,a(k["++"],"(",a(k["++"],e(o._2._0),")"))))):a(k["++"],o._0._0,a(k["++"],".",a(k["++"],o._1._0,a(k["++"],"(",a(k["++"],a(r,t,o._2),")")))));break t;case"Lffi":if("String"===o._0.ctor)return"Tuple"===o._1.ctor?a(k["++"],o._0._0,a(k["++"],"(",a(k["++"],e(o._1._0),")"))):a(k["++"],o._0._0,a(k["++"],"(",a(k["++"],a(r,t,o._1),")")));break t;default:var c=yi(o._0);return a(k["++"],"fn (",a(k["++"],a(Vt,",",c),a(k["++"],") -> ",a(k["++"],a(r,t,o._1),a(k["++"],a(Vt,"",a(G,function(t){return a(k["++"],".(",a(k["++"],t,")"))},c))," end")))))}}while(!1);return v.crashCase("ExFfi",{start:{line:161,column:9},end:{line:214,column:45}},o)("Wrong ffi call")}),K_=r(function(t,r){return{ctor:"Flambda",_0:t,_1:r}}),X_=n(function(t,n,e){var o=W(e)-1,c=a(dt,1,o);return a(Vt,", ",a(G,function(r){var e=r,o=e._0,c=e._1;if("[]"===c.ctor)return v.crashCase("ExFfi",{start:{line:126,column:21},end:{line:141,column:71}},c)("Impossible");if("[]"===c._1.ctor)return a(k["++"],"a",T(o));var u=K_(W(c)-1),i=Yo({ctor:"::",_0:a(k["++"],"a",T(o)),_1:{ctor:"[]"}});return l(Q_,t,n,u(i))},l(P,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),c,e)))}),G_=o(function(t,r,n,e,o){var c=G(function(t){return Yo(z(t))}),u=function(t){return l(X_,t,r,e)},i=(_i(o),a(A,function(t){return a(vn,n,function(t){return t.definitions}(t))},a(vn,t.mod,t.commons.modules))),_={ctor:"_Tuple2",_0:i,_1:_i(o)};t:do{if("_Tuple2"!==_.ctor)break t;if("Nothing"===_._0.ctor)return v.crashCase("ExFfi",{start:{line:44,column:9},end:{line:109,column:51}},_)("Ffi requires type definition");if("::"!==_._1.ctor||"Variable"!==_._1._0.ctor||"::"!==_._1._0._0.ctor||"[]"!==_._1._0._0._1.ctor||"::"!==_._1._1.ctor||"String"!==_._1._1._0.ctor||"::"!==_._1._1._1.ctor||"String"!==_._1._1._1._0.ctor||"[]"!==_._1._1._1._1.ctor)break t;switch(_._1._0._0._0){case"ffi":var d=_._1._1._0._0,p=_._1._1._1._0._0,h=_._0._0,g=a(bi,"a",h.arity);return a(k["++"],s(V_,t,r,n,h.arity,{ctor:"[]"}),a(k["++"],f(Qi,t,"noverify",n,a(k["++"],Ri(t.indent),a(k["++"],"verify as: ",a(k["++"],d,a(k["++"],".",a(k["++"],p,a(k["++"],"/",T(h.arity)))))))),a(k["++"],Ri(t.indent),a(k["++"],"def",a(k["++"],a(j_,t,n),a(k["++"]," ",a(k["++"],a($i,!0,n),a(k["++"],"(",a(k["++"],a(Vt,", ",g),a(k["++"],")",a(k["++"],", do: ",a(k["++"],d,a(k["++"],".",a(k["++"],p,a(k["++"],"(",a(k["++"],u(a(P_,c(g),t)),")"))))))))))))))));case"tryFfi":var m=_._0._0,g=a(bi,"a",m.arity);return a(k["++"],s(V_,t,r,n,m.arity,{ctor:"[]"}),a(k["++"],Ri(t.indent),a(k["++"],"def",a(k["++"],a(j_,t,n),a(k["++"]," ",a(k["++"],a($i,!0,n),a(k["++"],"(",a(k["++"],a(Vt,", ",a(bi,"a",m.arity)),a(k["++"],")",a(k["++"]," do ",a(k["++"],Ri(t.indent+1),a(k["++"],"try_catch fn -> ",a(k["++"],Ri(t.indent+2),a(k["++"],_._1._1._0._0,a(k["++"],".",a(k["++"],_._1._1._1._0._0,a(k["++"],"(",a(k["++"],u(a(P_,c(g),t)),a(k["++"],")",a(k["++"],Ri(t.indent+1),a(k["++"],"end",a(k["++"],Ri(t.indent),"end"))))))))))))))))))))));default:break t}}while(!1);return v.crashCase("ExFfi",{start:{line:44,column:9},end:{line:109,column:51}},_)("Wrong ffi definition")}),Y_=(n(function(t,r,n){return{ctor:"TryFfi",_0:t,_1:r,_2:n}}),n(function(t,r,n){return{ctor:"Ffi",_0:t,_1:r,_2:n}}),r(function(t,r){return{ctor:"Lffi",_0:t,_1:r}}),r(function(t,n){t:for(;;){var e=n,o={ctor:"_Tuple2",_0:e.aliasType,_1:e.body};r:do{n:do{if("_Tuple2"!==o.ctor)break r;switch(o._1.ctor){case"TypeConstructor":if("Type"===o._0.ctor)break n;if("::"===o._1._0.ctor&&"[]"===o._1._0._1.ctor)return R;break r;case"TypeRecord":if("Type"===o._0.ctor)break n;var c=o._1._0,u=a(G,function(t){return Yo(z(t))},a(G,function(t){return a(r(function(t,r){return a(k["++"],t,r)}),"arg",T(t))},a(dt,1,a(r(function(t,r){return t+r}),0-W(t),W(c))))),i=a(G,tr(nr),l(P,m(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}})),a(k["++"],t,u),c));return S(a(Po,u,Wo(i)));case"TypeTuple":if("Type"===o._0.ctor)break n;if("::"===o._1._0.ctor&&"[]"===o._1._0._1.ctor){var _=t,f=v.update(e,{typeBody:v_(o._1._0._0)});t=_,n=f;continue t}var t=a(G,function(t){return Yo(z(t))},a(G,function(t){return a(r(function(t,r){return a(k["++"],t,r)}),"arg",T(t))},a(dt,1,W(o._1._0))));return S(a(Po,t,Xo(t)));case"TypeVariable":if("Type"===o._0.ctor)break n;return S(Yo({ctor:"::",_0:o._1._0,_1:{ctor:"[]"}}));default:if("Type"===o._0.ctor)break n;break r}}while(!1);return R}while(!1);return R}})),Z_=(r(function(t,r){return a(N,r,a($,function(t){return a(k["++"],t,a(k["++"],".",r))},a(vn,"name",t.importedTypes)))}),n(function(t,r,n){var e=n;switch(e.ctor){case"SubsetExport":return a(ct,a(Z_,t,r),e._0);case"TypeExport":return{ctor:"::",_0:e._0,_1:{ctor:"[]"}};case"AllExport":return a(N,{ctor:"[]"},a($,function(t){return a(k["++"],an(t.aliases),an(t.types))},a(vn,r,t.commons.modules)));default:return{ctor:"[]"}}})),ta=n(function(t,r,n){t:for(;;){var e=n;switch(e.ctor){case"TypeTuple":if("[]"===e._0.ctor)return"no_return";if("[]"===e._0._1.ctor){var o=t,c=r,u=e._0._0;t=o,r=c,n=u;continue t}return a(k["++"],"{",a(k["++"],a(Vt,", ",a(G,a(ta,t,r),e._0)),"}"));case"TypeVariable":if("number"===e._0)return"number";var i=e._0,_=Kt(i);return"Just"===_.ctor&&"_Tuple2"===_._0.ctor&&"@"===_._0._0.valueOf()?a($i,!0,_._0._1):r.inTypeDefiniton?i:"any";case"TypeConstructor":var s=a(Bi,r.mod,e._0),d=s._0,p=s._1,h=v.eq(d,r.mod)?a(N,"",a($,function(t){return a(k["++"],t,".")},a(vn,p,r.importedTypes))):a(k["++"],d,".");return a(k["++"],h,f(ra,t,r,p,e._1));case"TypeRecord":return a(k["++"],"%{",a(k["++"],Ri(r.indent+1),a(k["++"],a(Vt,a(k["++"],",",Ri(r.indent+1)),a(G,function(n){var e=n;return a(k["++"],a($i,!1,e._0),a(k["++"],": ",l(ta,t,Xi(r),e._1)))},e._0)),a(k["++"],Ri(r.indent),"}"))));case"TypeRecordConstructor":return a(k["++"],"%{",a(k["++"],Ri(r.indent+1),a(k["++"],a(Vt,a(k["++"],", ",Ri(r.indent+1)),l(na,Xi(r),t,e)),a(k["++"],Ri(r.indent),"}"))));default:var g=e._1,m=e._0;return t?function(n){var e=n;return a(k["++"],"(",a(k["++"],a(Vt,", ",a(G,a(ta,t,Xi(r)),{ctor:"::",_0:m,_1:e._1})),a(k["++"]," -> ",a(k["++"],a(N,"",a($,a(ta,t,r),e._0)),")"))))}(Ei(ii(g))):a(k["++"],"(",a(k["++"],l(ta,t,r,m),a(k["++"]," -> ",a(k["++"],l(ta,t,r,g),")"))))}}}),ra=e(function(t,r,n,e){var o={ctor:"_Tuple2",_0:n,_1:e};t:do{if("::"===o._1.ctor){if("[]"!==o._1._1.ctor)break t;switch(o._0){case"List":return a(k["++"],"list(",a(k["++"],l(ta,t,r,o._1._0),")"));case"Maybe":return a(k["++"],"{",a(k["++"],l(ta,t,r,o._1._0),"} | nil"));case"Just":return l(ta,t,r,o._1._0);case"Err":return a(k["++"],"{:error, ",a(k["++"],l(ta,t,r,o._1._0),"}"));case"Ok":var c=o._1._0;return v.eq(c,jc({ctor:"[]"}))?"ok":a(k["++"],"{:ok,",a(k["++"],l(ta,t,r,c),"}"));default:break t}}else switch(o._0){case"String":return"String.t";case"Char":return"integer";case"Bool":return"boolean";case"Int":return"integer";case"Pid":return"pid";case"Float":return"float";case"Nothing":return"nil";default:return a($i,!0,o._0)}}while(!1);return a(k["++"],a($i,!0,o._0),a(k["++"],"(",a(k["++"],a(Vt,", ",a(G,a(ta,t,r),o._1)),")")))}),na=n(function(t,r,n){t:for(;;){var e=function(n){var e=n;return a(k["++"],e._0,a(k["++"],": ",l(ta,r,t,e._1)))},o=n;r:do{switch(o.ctor){case"TypeRecordConstructor":switch(o._0.ctor){case"TypeConstructor":if("::"===o._0._0.ctor&&"[]"===o._0._0._1.ctor){var c=a($,a(na,t,r),a($,function(t){return a(E_,t.typeBody,o._0._1)},l(n_,t.mod,o._0._0._0,t)));return a(k["++"],a(G,e,o._1),a(N,{ctor:"::",_0:"",_1:{ctor:"[]"}},c))}break r;case"TypeRecord":return a(G,e,a(k["++"],o._1,o._0._0));case"TypeVariable":return a(G,e,o._1);case"TypeTuple":if("::"===o._0._0.ctor&&"[]"===o._0._0._1.ctor){var u=t,i=r,_=a(Uc,o._0._0._0,o._1);t=u,r=i,n=_;continue t}break r;case"TypeRecordConstructor":return a(k["++"],a(G,e,o._1),l(na,t,r,o._0));default:break r}case"TypeRecord":return a(G,e,o._0);default:break r}}while(!1);return v.crashCase("ExType",{start:{line:130,column:9},end:{line:158,column:79}},o)(a(k["++"],"Wrong type record constructor ",T(o)))}}),ea=(ta(!0),ta(!1)),oa=(r(function(t,r){return a(k["++"],"() :: ",a(ea,t,r))}),r(function(t,r){var n=Ei(ii(r));return"Just"===n._0.ctor?a(k["++"],"(",a(k["++"],a(Vt,", ",a(G,ea(t),n._1)),a(k["++"],") :: ",a(ea,t,n._0._0)))):v.crashCase("ExType",{start:{line:266,column:5},end:{line:276,column:37}},n)("impossible")})),ca=r(function(t,r){var n=r;return"TypeConstructor"===n.ctor&&"::"===n._0.ctor&&"[]"===n._0._1.ctor?"[]"===n._1.ctor?Li(n._0._0):a(k["++"],"{",a(k["++"],Li(n._0._0),a(k["++"],", ",a(k["++"],a(Vt,", ",a(G,ea(t),n._1)),"}")))):v.crashCase("ExType",{start:{line:283,column:5},end:{line:295,column:96}},n)(a(k["++"],"I am looking for union type constructor. But got ",T(n)))}),ua=(e(function(t,r,n,e){return a(N,e,$(function(r){var e=r,o=e.typeBody,c=e.parentModule;return v.eq(c,t.mod)?a(ea,t,a(E_,o,n)):"Type"===e.aliasType.ctor?a(k["++"],c,a(k["++"],".",a(ea,t,a(E_,o,n)))):a(ea,v.update(t,{mod:c}),a(E_,o,n))})(l(n_,t.mod,r,t)))}),function(t){var r=t;return"BinOp"===r.ctor&&"Variable"===r._0.ctor&&"::"===r._0._0.ctor&&"|>"===r._0._0._0&&"[]"===r._0._0._1.ctor?"BinOp"===r._2.ctor&&"Variable"===r._2._0.ctor&&"::"===r._2._0._0.ctor&&"|>"===r._2._0._0._0&&"[]"===r._2._0._0._1.ctor?a(k["++"],{ctor:"::",_0:r._1,_1:{ctor:"[]"}},ua(r._2)):a(k["++"],{ctor:"::",_0:r._1,_1:{ctor:"[]"}},{ctor:"::",_0:r._2,_1:{ctor:"[]"}}):{ctor:"::",_0:r,_1:{ctor:"[]"}}}),ia=o(function(t,n,e,o,c){t:for(;;){var u=e;switch(u){case"//":return a(k["++"],"div(",a(k["++"],a(n,t,o),a(k["++"],", ",a(k["++"],a(n,t,c),")"))));case"%":return a(k["++"],"rem(",a(k["++"],a(n,t,o),a(k["++"],", ",a(k["++"],a(n,t,c),")"))));case"^":return a(k["++"],":math.pow(",a(k["++"],a(n,t,o),a(k["++"],", ",a(k["++"],a(n,t,c),")"))));case"::":return a(k["++"],"[",a(k["++"],a(n,t,o),a(k["++"]," | ",a(k["++"],a(n,t,c),"]"))));case"<<":var i=t,_=n,l=c,f=o;t=i,n=_,e=">>",o=l,c=f;continue t;case"<|":var s=t,d=n,p=c,h=o;t=s,n=d,e="|>",o=p,c=h;continue t;case"|>":return a(k["++"],"(",a(k["++"],a(n,t,o),a(k["++"],a(Vt,"",a(G,a(m,r(function(t,r){return a(k["++"],t,r)}),").()"),a(G,r(function(t,r){return a(k["++"],t,r)})(a(k["++"],Ri(t.indent),"|> (")),a(G,n(t),ua(c))))),")")));case"as":return a(k["++"],a(n,t,o),a(k["++"]," = ",a(n,t,c)));default:var g=u,b=Fi(g);switch(b.ctor){case"Builtin":return a(Vt,"",{ctor:"::",_0:"(",_1:{ctor:"::",_0:a(n,t,o),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:Ti(g),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:a(n,t,c),_1:{ctor:"::",_0:")",_1:{ctor:"[]"}}}}}}}});case"Custom":return a(k["++"],Ti(g),a(k["++"],"(",a(k["++"],a(n,t,o),a(k["++"],", ",a(k["++"],a(n,t,c),")")))));default:return v.crashCase("ExOperator",{start:{line:52,column:13},end:{line:66,column:60}},b)(a(k["++"],"Illegal operator ",g))}}}}),_a=function(t){return{ctor:"Access",_0:t}},aa=function(t){var r=t;return"AccessFunction"===r.ctor?_a(a($i,!0,r._0)):v.crashCase("ExSelector",{start:{line:26,column:5},end:{line:31,column:65}},r)("The only allowed selectors are: .field")},la={ctor:"Update"},fa={ctor:"Put"},sa={ctor:"Get"},da=function(t){var n=function(t){return a(ht,1,Lt(a(Wt,Ct,t)))};return a($,function(r){return{ctor:"_Tuple2",_0:r,_1:n(t)}},function(t){return l(U,r(function(r,n){var e=r,o=n;return"Nothing"===o.ctor?a(gr,mr(e._0),t)?S(e._1):R:o}),R,{ctor:"::",_0:{ctor:"_Tuple2",_0:"updateIn\\d?",_1:la},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"putIn\\d?",_1:fa},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"getIn\\d?",_1:sa},_1:{ctor:"[]"}}}})}(t))},pa=n(function(t,r,n){return{ctor:"AccessMacro",_0:t,_1:r,_2:n}}),ha=r(function(t,n){var e=r(function(t,r){var n=a(x,W(r),t);switch(n.ctor){case"LT":return v.crashCase("ExSelector",{start:{line:38,column:13},end:{line:50,column:65}},n)(a(k["++"],"Access macros [updateIn/getIn/putIn] cannot be partially applied. Expecting ",a(k["++"],T(t)," selector arguments.")));case"EQ":return{ctor:"_Tuple2",_0:a(G,aa,r),_1:{ctor:"[]"}};default:return a(tr,G(aa),a(Ke,t,r))}}),o={ctor:"_Tuple2",_0:t,_1:n};return"_Tuple2"===o.ctor&&"Variable"===o._0.ctor&&"::"===o._0._0.ctor&&"[]"===o._0._0._1.ctor?a($,function(t){var r=t,n=r._1,c=a(e,n,o._1),u=c._0,i=c._1;return{ctor:"_Tuple2",_0:l(pa,r._0,n,u),_1:i}},da(o._0._0._0)):R}),va=function(t){t:for(;;){var r=t;switch(r.ctor){case"Application":var n=r._0;t=n;continue t;case"Variable":return"::"===r._0.ctor&&"[]"===r._0._1.ctor?"()"===r._0._0||Si(r._0._0):function(t){return va(Yo({ctor:"::",_0:t._1,_1:{ctor:"[]"}}))}(a(Bi,"",r._0));default:return!1}}},ga=function(t){var r=t;return"TypeAlias"===r.aliasType.ctor?S(r):R},ma=function(t){t:for(;;){var r=t;r:do{switch(r.ctor){case"Application":var n=r._0;t=n;continue t;case"Variable":if("::"===r._0.ctor&&"[]"===r._0._1.ctor)return a(H,r._0._0,{ctor:"::",_0:"tryFfi",_1:{ctor:"::",_0:"ffi",_1:{ctor:"::",_0:"lffi",_1:{ctor:"::",_0:"flambda",_1:{ctor:"::",_0:"updateIn",_1:{ctor:"::",_0:"updateIn2",_1:{ctor:"::",_0:"updateIn3",_1:{ctor:"::",_0:"updateIn4",_1:{ctor:"::",_0:"updateIn5",_1:{ctor:"::",_0:"putIn",_1:{ctor:"::",_0:"putIn",_1:{ctor:"::",_0:"putIn2",_1:{ctor:"::",_0:"putIn3",_1:{ctor:"::",_0:"putIn4",_1:{ctor:"::",_0:"putIn5",_1:{ctor:"::",_0:"getIn",_1:{ctor:"::",_0:"getIn2",_1:{ctor:"::",_0:"getIn3",_1:{ctor:"::",_0:"getIn4",_1:{ctor:"::",_0:"getIn5",_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}});break r;default:break r}}while(!1);return!1}},ba=function(t){var r=t;return"Application"===r.ctor?ma(t)||va(t)?a(k["++"],ba(r._0),{ctor:"::",_0:r._1,_1:{ctor:"[]"}}):{ctor:"::",_0:t,_1:{ctor:"[]"}}:{ctor:"::",_0:r,_1:{ctor:"[]"}}},ya=r(function(t,r){var n=r;t:do{switch(n.ctor){case"Variable":return a(Ia,t,n._0);case"Application":return a(Ba,t,n);case"RecordUpdate":return a(k["++"],"%{",a(k["++"],a($i,!0,n._0),a(k["++"]," | ",a(k["++"],a(Vt,", ",a(G,function(r){var n=r;return a(k["++"],n._0,a(k["++"],": ",a(ya,t,n._1)))},n._1)),"}"))));case"Access":return"Variable"===n._0.ctor?a(k["++"],Oi(n._0._0),a(k["++"],".",a(Vt,".",a(G,$i(!0),n._1)))):a(k["++"],a(ya,t,n._0),a(k["++"],".",a(Vt,".",n._1)));case"AccessFunction":return a(k["++"],"(fn a -> a.",a(k["++"],a($i,!0,n._0)," end)"));case"BinOp":if("Variable"===n._0.ctor&&"::"===n._0._0.ctor&&"[]"===n._0._0._1.ctor)return s(ia,t,ya,n._0._0._0,n._1,n._2);break t;default:break t}}while(!1);return a(ka,t,n)}),ka=r(function(t,n){var e=n;switch(e.ctor){case"Case":return l(Ta,t,e._0,e._1);case"Lambda":return l(Ea,t,e._0,e._1);case"If":return"If"===e._2.ctor?a(Vt,"",a(k["++"],{ctor:"::",_0:"cond do",_1:{ctor:"[]"}},a(k["++"],a(Oa,Xi(t),e),{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}))):a(k["++"],"if ",a(k["++"],a(ya,t,e._0),a(k["++"]," do ",a(k["++"],a(ya,t,e._1),a(k["++"]," else ",a(k["++"],a(ya,t,e._2)," end"))))));case"Let":return function(t){var r=t;return a(k["++"],r._1,a(ya,r._0,e._1))}(l(m,U,{ctor:"_Tuple2",_0:t,_1:""},r(function(t,r){var n=r,e=n._0;return function(t){var r=t,o=r._0;return a(ui["=>"],a(Vi,o,e),a(k["++"],n._1,a(k["++"],r._1,Ri(o.indent))))}(function(){var r=t;return"[]"===r.ctor?a(ui["=>"],e,""):"_Tuple2"===r._0.ctor&&"[]"===r._1.ctor?a(xa,e,{ctor:"_Tuple2",_0:r._0._0,_1:r._0._1}):a($a,e,r)}())}))(F_(M_(e._0))));default:return a(La,t,n)}}),Ta=n(function(t,r,n){return t.inCaseOf?v.crash("ExExpression",{start:{line:595,column:9},end:{line:595,column:20}})(a(k["++"],"Module ",a(k["++"],t.mod,"\nBecause of a known bug in elm-ast parser, you can't reliably use nested case..of yet. Sorry"))):a(k["++"],"case ",a(k["++"],a(ya,t,r),a(k["++"]," do",a(k["++"],a(Vt,"",a(G,wa(a(P_,{ctor:"::",_0:r,_1:{ctor:"[]"}},v.update(t,{inCaseOf:!0}))),n)),a(k["++"],Ri(t.indent),"end")))))}),wa=r(function(t,r){var n=r,e=n._0;return a(k["++"],a(k["++"],Ri(t.indent+1),a(ya,Wi(t),e)),a(k["++"]," ->",a(k["++"],Ri(t.indent+2),a(ya,a(P_,{ctor:"::",_0:e,_1:{ctor:"[]"}},Xi(Xi(t))),n._1))))}),xa=r(function(t,n){var e=n,o=e._0,c=e._1,u=r(function(t,r){return"Let"===r.ctor?a(k["++"],"(",a(k["++"],Ri(t.indent+1),a(k["++"],a(ya,Xi(t),r),a(k["++"],Ri(t.indent),")")))):a(ya,t,r)}),i=_i(o);t:do{if("::"===i.ctor){if("Variable"===i._0.ctor&&"::"===i._0._0.ctor&&"[]"===i._0._0._1.ctor){if("[]"===i._1.ctor){var _=i._0;return a(ui["=>"],a(P_,{ctor:"::",_0:_,_1:{ctor:"[]"}},t),a(k["++"],a($i,!0,i._0._0._0),a(k["++"]," = ",a(u,a(P_,{ctor:"::",_0:_,_1:{ctor:"[]"}},t),c))))}var f=i._0,s=i._0._0._0,d=i._1;return Si(s)?a(ui["=>"],a(P_,d,t),a(k["++"],a(Ba,a(P_,d,t),o),a(k["++"]," = ",a(u,t,c)))):a(ui["=>"],a(P_,{ctor:"::",_0:f,_1:{ctor:"[]"}},t),a(k["++"],a($i,!0,s),a(k["++"]," = rec ",a(k["++"],a($i,!0,s),a(k["++"],", ",l(Ea,a(P_,{ctor:"::",_0:f,_1:{ctor:"[]"}},t),d,c))))))}if("[]"===i._1.ctor){var p=i._0;return a(ui["=>"],a(P_,{ctor:"::",_0:p,_1:{ctor:"[]"}},t),a(k["++"],a(ya,Wi(t),p),a(k["++"]," = ",a(u,a(P_,{ctor:"::",_0:p,_1:{ctor:"[]"}},t),c))))}break t}break t}while(!1);return a(ui["=>"],t,"")}),Ea=n(function(t,r,n){var e=v.update(t,{inCaseOf:!1}),o=r;if("::"===o.ctor){var c=o._0;return a(k["++"],"fn ",a(k["++"],a(ya,Wi(t),c),a(k["++"]," -> ",a(k["++"],l(Ea,a(P_,{ctor:"::",_0:c,_1:{ctor:"[]"}},e),o._1,n)," end"))))}return a(ya,e,n)}),Ba=r(function(t,r){var n=ba(r);t:do{r:do{if("::"!==n.ctor)break t;switch(n._0.ctor){case"Application":if("[]"===n._1.ctor)return l(Sa,t,n._0._0,n._0._1);break t;case"Variable":if("::"!==n._0._0.ctor||"[]"!==n._0._0._1.ctor)break r;switch(n._0._0._0){case"ffi":return v.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},n)("Ffi inside function body is deprecated since Elchemy 0.3");case"tryFfi":return v.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},n)("tryFfi inside function body is deprecated since Elchemy 0.3");case"lffi":return v.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},n)("Lffi inside function body is deprecated since Elchemy 0.3");case"flambda":return v.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},n)("Flambda is deprecated since Elchemy 0.3");case"Just":if("::"===n._1.ctor&&"[]"===n._1._1.ctor)return a(k["++"],"{",a(k["++"],a(ya,t,n._1._0),"}"));break r;case"Ok":if("::"===n._1.ctor&&"[]"===n._1._1.ctor)return a(k["++"],"{:ok, ",a(k["++"],a(ya,t,n._1._0),"}"));break r;case"Err":if("::"===n._1.ctor&&"[]"===n._1._1.ctor)return a(k["++"],"{:error, ",a(k["++"],a(ya,t,n._1._0),"}"));break r;default:break r}default:break t}}while(!1);var e=n._1;return a(N,function(r){var n=r,o=n._1;return a(N,a(k["++"],"{",a(k["++"],a(ya,t,Yo({ctor:"::",_0:o,_1:{ctor:"[]"}})),a(k["++"],", ",a(k["++"],a(Vt,", ",a(G,ya(t),e)),"}")))),l(Ca,a(Gi,n._0,t),o,e))}(a(Bi,t.mod,n._0._0)),a($,Aa(t),a(ha,n._0,e)))}while(!1);return v.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},n)(a(k["++"],"Shouldn't ever work for",T(n)))}),Ca=n(function(t,r,n){return a(ci,l(Na,t,r,n),l(Ra,t,r,n))}),Na=n(function(t,r,n){return a($,ya(t),a(A,Y_(n),a(A,ga,l(n_,t.mod,r,t))))}),Ra=n(function(t,n,e){return $(function(o){var c=o,u=c.arity,i=W(e),_=u-i,f=yi(_),s=a(G,function(t){return Yo(z(t))},f);return v.eq(u,0)?Li(n):v.cmp(_,0)>-1?l(m,r(function(t,r){return a(k["++"],t,r)}),a(jt,_," end"),a(k["++"],a(Vt,"",a(G,a(m,r(function(t,r){return a(k["++"],t,r)})," -> "),a(G,r(function(t,r){return a(k["++"],t,r)})("fn "),f))),a(k["++"],"{",a(k["++"],Li(n),a(k["++"],", ",a(k["++"],a(Vt,", ",a(G,ya(a(P_,a(k["++"],e,s),t)),a(k["++"],e,s))),"}")))))):v.crash("ExExpression",{start:{line:558,column:29},end:{line:558,column:40}})(a(k["++"],"Expected ",a(k["++"],T(u),a(k["++"]," arguments for '",a(k["++"],n,a(k["++"],"'. Got: ",T(W(e))))))))})(l(e_,t.mod,n,t))}),Aa=r(function(t,r){var n=r,e=n._1,o=function(){return"[]"===e.ctor?"":a(k["++"],".(",a(k["++"],a(Vt,").(",a(G,ya(t),e)),")"))}(),c=function(){switch(n._0._0.ctor){case"Update":return"update_in_";case"Get":return"get_in_";default:return"put_in_"}}(),u=function(t){var r=t;return a(k["++"],":",a($i,!0,r._0))},i=a(Vt,", ",a(G,u,n._0._2));return a(k["++"],c,a(k["++"],"([",a(k["++"],i,a(k["++"],"])",o))))}),Sa=n(function(t,r,e){var o=n(function(t,r,n){return a(Vt,n,a(G,ya(t),r))}),c=_i(a(Do,r,e));t:do{if("::"!==c.ctor)break t;switch(c._0.ctor){case"Variable":if("::"===c._0._0.ctor&&"[]"===c._0._0._1.ctor){var u=c._0._0._0,i=c._1;return f(t_,t,t.mod,u,i)?a(k["++"],a($i,!0,u),a(k["++"],"(",a(k["++"],l(o,t,i,", "),")"))):a(k["++"],a(ya,t,r),a(k["++"],".(",a(k["++"],a(ya,t,e),")")))}break t;case"Access":if("Variable"===c._0._0.ctor&&"::"===c._0._1.ctor&&"[]"===c._0._1._1.ctor){var _=c._0._1._0,s=c._1,d=a($i,!0,_),p=Oi(c._0._0._0);return f(t_,t,p,_,s)?a(k["++"],p,a(k["++"],".",a(k["++"],d,a(k["++"],"(",a(k["++"],l(o,t,s,", "),")"))))):a(k["++"],p,a(k["++"],".",a(k["++"],d,a(k["++"],"().(",a(k["++"],l(o,t,s,").("),")")))))}break t;default:break t}}while(!1);return a(k["++"],a(ya,t,r),a(k["++"],".(",a(k["++"],a(ya,t,e),")")))}),$a=r(function(t,n){var e=r(function(t,r){var n=r,e=n._0,o=n._1,c=_i(e);return"[]"===c.ctor?"":"[]"===c._1.ctor?a(ya,t,o):"Variable"===c._0.ctor&&"::"===c._0._0.ctor&&"[]"===c._0._0._1.ctor?l(Ea,t,c._1,o):v.crashCase("ExExpression",{start:{line:152,column:13},end:{line:163,column:78}},c)(a(k["++"],T(e)," is not a let in branch"))}),o=a(G,function(t){return a($i,!0,$_(nr(t)))},n),c=a(G,nr,n),u=a(P_,c,t);return a(ui["=>"],u,a(k["++"],"{",a(k["++"],a(Vt,", ",o),a(k["++"],"} = let [",a(k["++"],a(Vt,",",a(G,function(t){var r=t;return a(k["++"],Ri(u.indent+1),a(k["++"],a($i,!0,r._0),a(k["++"],": ",r._1)))},a(G,Zt(e(Xi(u))),a(G,function(t){var r=t;return{ctor:"_Tuple2",_0:$_(r._0),_1:r}},n)))),a(k["++"],Ri(u.indent),"]"))))))}),La=r(function(t,r){var n=r;switch(n.ctor){case"Integer":return T(n._0);case"Float":var e=T(n._0);return a(It,".",e)?e:a(k["++"],e,".0");case"Character":var o=n._0;switch(o.valueOf()){case" ":return"?\\s";case"\n":return"?\\n";case"\r":return"?\\r";case"\t":return"?\\t";case"\\":return"?\\\\";case"\0":return"?\\0";default:return a(k["++"],"?",Gt(o))}case"String":return a(k["++"],'"',a(k["++"],n._0,'"'));case"List":return a(k["++"],"[",a(k["++"],a(Vt,", ",a(G,ya(t),n._0)),"]"));case"Tuple":return a(k["++"],"{",a(k["++"],a(Vt,", ",a(G,ya(t),n._0)),"}"));case"Record":return a(k["++"],"%{",a(k["++"],a(Vt,", ",a(G,function(r){var n=r;return a(k["++"],a($i,!0,n._0),a(k["++"],": ",a(ya,t,n._1)))},n._0)),"}"));default:return a(Ii,"expression",r)}}),Oa=r(function(t,r){var n=r;return"If"===n.ctor?a(k["++"],{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:a(ya,Xi(t),n._0),_1:{ctor:"::",_0:" -> ",_1:{ctor:"::",_0:a(ya,Xi(t),n._1),_1:{ctor:"[]"}}}}},a(Oa,t,n._2)):{ctor:"::",_0:Ri(t.indent),_1:{ctor:"::",_0:"true -> ",_1:{ctor:"::",_0:a(ya,Xi(t),r),_1:{ctor:"[]"}}}}}),Ia=r(function(t,r){var n=r;t:do{if("[]"===n.ctor)return"";if("[]"!==n._1.ctor)break t;switch(n._0){case"()":return"{}";case"Nothing":return"nil";case"Just":return"fn x1 -> {x1} end";case"Err":return"fn x1 -> {:error, x1} end";case"Ok":return"fn x1 -> {:ok, x1} end";case"curry":return"curried()";case"uncurry":return"uncurried()";default:break t}}while(!1);return function(r){var n=r,e=n._1;if(Si(e))return a(N,Li(e),l(Ca,a(Gi,n._0,t),e,{ctor:"[]"}));if(a(Ot,"@",e))return Li(a(Pt,1,e));switch(Fi(e).ctor){case"Builtin":return v.eq(e,"<|")?"flip().((&|>/0).())":a(k["++"],"(&XBasics.",a(k["++"],Ti(e),"/0).()"));case"Custom":return Ti(e);default:return a(D_,t,a($i,!0,e))}}(a(Bi,t.mod,n))}),za=n(function(t,n,e){if(a(Ot,Ri(t.indent+1),a(k["++"],"\n",e))){var o=a(Mu,Ce,Dt(e));if("Ok"===o.ctor&&"_Tuple3"===o._0.ctor&&"BinOp"===o._0._2.ctor&&"Variable"===o._0._2._0.ctor&&"::"===o._0._2._0._0.ctor&&"=="===o._0._2._0._0._0&&"[]"===o._0._2._0._0._1.ctor){var c=a(Y,function(t){return a(r(function(t,r){return v.eq(t,r)}),n,nr(t))},a(k["++"],a(Ji,t,li),a(Ji,t,ai))),u=v.eq(c,{ctor:"[]"})?"":l(m,r(function(t,r){return a(k["++"],t,r)}),Ri(0),a(r(function(t,r){return a(k["++"],t,r)}),a(k["++"],Ni(1),"iex> "),a(Vt,a(k["++"],Ri(t.indent+2),"iex> "),a(Ut,"\n",Ft(ji(t))))));return a(k["++"],u,a(k["++"],Ni(t.indent+1),a(k["++"],"iex> import ",a(k["++"],t.mod,a(k["++"],Ri(t.indent+2),a(k["++"],"iex> ",a(k["++"],a(ya,t,o._0._2._1),a(k["++"],Ri(t.indent+2),a(k["++"],a(ya,t,o._0._2._2),"\n")))))))))}return e}return e}),qa=r(function(t,r){return a(Y,a(m,H,r),t)}),Ma=r(function(t,n){var e=r(function(t,r){return a(k["++"],"{:'",a(k["++"],t,a(k["++"],"', ",a(k["++"],T(r),"}"))))});return a(G,function(n){return Di(n)?a(k["++"],a(e,Ti(n),0),a(k["++"],", ",a(e,Ti(n),2))):v.eq(n,"ffi")?"":a(k["++"],a(e,a($i,!0,n),0),a(N,"",a($,r(function(t,r){return a(k["++"],t,r)})(", "),a($,e(a($i,!0,n)),a(oi,r(function(t,r){return!v.eq(t,r)})(0),a($,function(t){return t.arity},a(A,vn(n),a($,function(t){return t.definitions},a(vn,t.mod,t.commons.modules)))))))))},n)}),Fa=function(t){var r=t;switch(r.ctor){case"TypeExport":return{ctor:"[]"};case"FunctionExport":return{ctor:"::",_0:r._0,_1:{ctor:"[]"}};default:return v.crashCase("ExStatement",{start:{line:482,column:5},end:{line:490,column:62}},r)(a(k["++"],"You can't export ",T(t)))}},Da=function(t){var r=t;t:do{if("::"===r.ctor){if("::"===r._1.ctor){if("[]"===r._1._1.ctor)return S({ctor:"_Tuple2",_0:r._0,_1:r._1._0});break t}if(""===r._0)return R;break t}break t}while(!1);return v.crashCase("ExStatement",{start:{line:369,column:5},end:{line:377,column:62}},r)(a(k["++"],"Wrong flag format ",T(r)))},Pa=n(function(t,r,n){var e=l(Z_,n,t,r);return v.update(n,{importedTypes:l(U,a(m,Wn,t),n.importedTypes,e)})}),Ja=function(t){var r=t;return"ModuleDeclaration"===r.ctor?a(__,Oi(r._0),r._1):v.crashCase("ExStatement",{start:{line:51,column:5},end:{line:56,column:69}},r)("First statement must be module declaration")},ja=function(t){return{ctor:"Flag",_0:t}},Va=function(t){return{ctor:"Normal",_0:t}},Ua=function(t){return{ctor:"Ex",_0:t}},Wa=function(t){return{ctor:"Doc",_0:t}},Ha=function(t){var r=n(function(t,r,n){var e=n;if("Normal"===e.ctor){var o=e._0;return a(gr,t,o)?r(f(hr,br(1),t,b(""),o)):Va(o)}return e});return l(U,g(r),Va(t),a(G,function(t){var r=t;return{ctor:"_Tuple2",_0:mr(r._0),_1:r._1}},{ctor:"::",_0:{ctor:"_Tuple2",_0:"^\\sex\\b",_1:Ua},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"^\\|",_1:Wa},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"^\\sflag\\b",_1:ja},_1:{ctor:"[]"}}}}))},Qa={ctor:"ModuleDoc"},Ka={ctor:"Typedoc"},Xa={ctor:"Fundoc"},Ga=e(function(t,n,e,o){var c=t.hasModuleDoc?v.eq(n,Xa)?"@doc":"@typedoc":"@moduledoc";return a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),v.update(t,{hasModuleDoc:!0,lastDoc:R}),a(k["++"],Ri(t.indent),a(k["++"],c,a(k["++"],' """\n ',a(k["++"],f(hr,yr,mr("\n(\n| ){3,}\n"),b("\n\n"),a(Vt,Ri(t.indent),a(G,l(hr,yr,mr('"""'),b('\\"\\"\\"')),a(G,mi,a(G,a(za,t,e),Mt(o)))))),a(k["++"],Ri(t.indent),'"""'))))))}),Ya=o(function(t,n,e,o,c){var u=function(r){return(c?ca(v.update(t,{inTypeDefiniton:!0})):a(ta,!1,v.update(t,{inTypeDefiniton:!0})))(a(B_,t,r))},i=function(t){var r=t;return"TypeVariable"===r.ctor?r._0:v.crashCase("ExStatement",{start:{line:68,column:13},end:{line:73,column:74}},r)(a(k["++"],T(t)," is not a type variable"))},_=v.eq(e,{ctor:"[]"})?"":a(k["++"],"(",a(k["++"],a(Vt,", ",a(G,i,e)),")")),s=a(N,{ctor:"_Tuple2",_0:t,_1:""},a($,l(Ga,t,Ka,n),t.lastDoc)),d=s._0,p=s._1;return a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),d,f(Qi,t,"notype",n,a(k["++"],p,a(k["++"],Ri(t.indent),a(k["++"],"@type ",a(k["++"],a($i,!0,n),a(k["++"],_,a(k["++"]," :: ",a(k["++"],a(Vt," | ",a(G,u,o)),"\n")))))))))}),Za=r(function(t,n){var e=Ha(n);switch(e.ctor){case"Doc":var o=e._0;return t.hasModuleDoc?a(ui["=>"],v.update(t,{lastDoc:S(o)}),""):f(Ga,t,Qa,t.mod,o);case"Ex":return a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,a(Ai,t.indent,a(Vt,"\n",a(G,Dt,a(Ut,"\n",e._0)))));case"Flag":return l(m,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),"",l(U,Ki,t,a(tt,Da,a(G,Ut(":+"),l(pr,yr,mr("\\s+"),e._0)))));default:return a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,a(Ai,t.indent,a(Ci,"# ",e._0)))}}),tl=r(function(t,n){var e=n;t:do{switch(e.ctor){case"InfixDeclaration":return{ctor:"_Tuple2",_0:t,_1:""};case"TypeDeclaration":if("TypeConstructor"===e._0.ctor&&"::"===e._0._0.ctor&&"[]"===e._0._0._1.ctor)return s(Ya,t,e._0._0._0,e._0._1,e._1,!0);break t;case"TypeAliasDeclaration":if("TypeConstructor"===e._0.ctor&&"::"===e._0._0.ctor&&"[]"===e._0._0._1.ctor)return s(Ya,t,e._0._0._0,e._0._1,{ctor:"::",_0:e._1,_1:{ctor:"[]"}},!1);break t;case"FunctionTypeDeclaration":if("TypeApplication"===e._1.ctor){var o=e._0,c=a(B_,t,e._1),u=a(N,{ctor:"_Tuple2",_0:t,_1:""},a($,l(Ga,t,Xa,o),t.lastDoc)),i=u._0,_=u._1;return a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),i,a(k["++"],f(Qi,i,"nodef",o,_),function(){switch(Fi(o).ctor){case"Builtin":return"";case"Custom":return f(Qi,i,"nospec",o,a(k["++"],Ri(i.indent),a(k["++"],"@spec ",a(k["++"],Ti(o),a(oa,i,c)))));default:return f(Qi,i,"nospec",o,a(k["++"],Ri(i.indent),a(k["++"],"@spec ",a(k["++"],a($i,!0,o),a(oa,i,c)))))}}()))}var p=e._1,h=e._0,g=a(N,{ctor:"_Tuple2",_0:t,_1:""},a($,l(Ga,t,Xa,h),t.lastDoc)),i=g._0,_=g._1;return a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),i,a(k["++"],_,function(){switch(Fi(h).ctor){case"Builtin":return"";case"Custom":return f(Qi,i,h,"nospec",a(k["++"],Ri(t.indent),a(k["++"],"@spec ",a(k["++"],Ti(h),a(oa,i,p)))));default:return f(Qi,i,h,"nospec",a(k["++"],Ri(t.indent),a(k["++"],"@spec ",a(k["++"],a($i,!0,h),a(oa,i,p)))))}}()));case"FunctionDeclaration":var m=e._0,b=e._2,y=e._1,w=a(r(function(t,r){return!v.eq(t,r)}),R,a(A,function(t){return a(vn,m,function(t){return t.definitions}(t))},a(vn,t.mod,t.commons.modules))),x=w||v.eq(y,{ctor:"[]"})?"":a(k["++"],Ri(t.indent),a(k["++"],"curryp ",a(k["++"],a($i,!0,m),a(k["++"],"/",T(W(y)))))),E=function(t){return"Tuple"===t.ctor},B=a(Ui,t,m),C=f(G_,t,ya,m,a(G,ii,a(N,{ctor:"[]"},a($,function(t){return ii(function(t){return t.def}(t))},a(A,function(t){return a(vn,m,function(t){return t.definitions}(t))},a(vn,t.mod,t.commons.modules))))));return a(ui["=>"],t,w||B?a(k["++"],x,function(){var r=b;r:do{switch(r.ctor){case"Application":if("Application"!==r._0.ctor||"Variable"!==r._0._0.ctor||"::"!==r._0._0._0.ctor||"[]"!==r._0._0._0._1.ctor)break r;switch(r._0._0._0._0){case"ffi":case"tryFfi":return C(r);default:break r}case"Case":switch(r._0.ctor){case"Variable":if("::"===r._0._0.ctor&&"[]"===r._0._0._1.ctor){var n=r._0._0._0;return v.eq({ctor:"::",_0:r._0,_1:{ctor:"[]"}},y)?d(W_,t,ya,n,y,b,r._1):s(H_,t,ya,n,y,b)}break r;case"Tuple":var e=r._1;return v.eq(r._0._0,y)&&a(j,function(t){return E(nr(t))},e)?d(W_,t,ya,m,y,b,e):s(H_,t,ya,m,y,b);default:break r}default:break r}}while(!1);return s(H_,t,ya,m,y,b)}()):v.crash("ExStatement",{start:{line:213,column:25},end:{line:213,column:36}})(a(k["++"],"To be able to export it, you need to provide function type for `",a(k["++"],m,a(k["++"],"` function in module ",T(t.mod))))));case"Comment":return a(Za,t,e._0);case"ImportStatement":if("Just"===e._1.ctor){if("Nothing"===e._2.ctor)return a(ui["=>"],t,a(k["++"],Ri(t.indent),a(k["++"],"alias ",a(k["++"],Oi(e._0),a(k["++"],", as: ",e._1._0)))));break t}if("Nothing"===e._2.ctor)return a(ui["=>"],t,a(k["++"],Ri(t.indent),a(k["++"],"alias ",Oi(e._0))));switch(e._2._0.ctor){case"SubsetExport":var S=e._2._0,L=e._0,O=l(V,r(function(t,r){return a(k["++"],t,r)}),{ctor:"[]"},a(G,Fa,e._2._0._0)),I=a(N,{ctor:"[]"},a($,function(t){return a(qa,O,an(function(t){return t.definitions}(t)))},a(vn,t.mod,t.commons.modules))),z=v.eq(I,{ctor:"[]"})?{ctor:"[]"}:{ctor:"::",_0:a(k["++"],"except: [",a(k["++"],a(Vt,", ",a(Ma,t,I)),"]")),_1:{ctor:"[]"}},q=v.eq(O,{ctor:"[]"})?{ctor:"[]"}:{ctor:"::",_0:a(k["++"],"only: [",a(k["++"],a(Vt,", ",a(Ma,t,O)),"]")),_1:{ctor:"[]"}},M=v.eq(O,{ctor:"[]"})&&v.eq(I,{ctor:"[]"})?"alias ":"import ",F=a(Vt,".",L);return a(ui["=>"],l(p_,S,Oi(L),l(Pa,F,S,t)),a(k["++"],Ri(t.indent),a(k["++"],M,a(Vt,", ",l(V,r(function(t,r){return a(k["++"],t,r)}),{ctor:"[]"},{ctor:"::",_0:{ctor:"::",_0:Oi(L),_1:{ctor:"[]"}},_1:{ctor:"::",_0:q,_1:{ctor:"::",_0:z,_1:{ctor:"[]"}}}})))));case"AllExport":if("::"===e._0.ctor&&"Elchemy"===e._0._0&&"[]"===e._0._1.ctor)return{ctor:"_Tuple2",_0:t,_1:""};var D=Oi(e._0),P=a(N,{ctor:"[]"},a($,function(t){return an(function(t){return t.definitions}(t))},a(vn,D,t.commons.modules))),I=a(N,{ctor:"[]"},a($,function(t){return a(qa,P,an(function(t){return t.definitions}(t)))},a(vn,t.mod,t.commons.modules))),z=v.eq(I,{ctor:"[]"})?{ctor:"[]"}:{ctor:"::",_0:a(k["++"],"except: [",a(k["++"],a(Vt,", ",a(Ma,t,I)),"]")),_1:{ctor:"[]"}};return a(ui["=>"],l(Pa,D,Ic,l(p_,Ic,D,t)),a(k["++"],Ri(t.indent),a(k["++"],"import ",a(Vt,", ",l(V,r(function(t,r){return a(k["++"],t,r)}),{ctor:"[]"},{ctor:"::",_0:{ctor:"::",_0:D,_1:{ctor:"[]"}},_1:{ctor:"::",_0:z,_1:{ctor:"[]"}}})))));default:break t}default:break t}}while(!1);return a(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,a(Ii,"statement",e))}),rl=r(function(t,r){var n=Mt(l(Jt,0,t,r));return{ctor:"_Tuple2",_0:W(n),_1:a(N,0,a($,Ht,K(rt(n))))}}),nl=(l(hr,yr,mr('(?:({-(?:\\n|.)*?-})|([\\w\\])}"][\\t ]*)\\n[\\t ]+((?!.*\\s->\\s)(?!.*=)(?!.*\\bin\\b)[\\w[({"]))'),function(t){return a(Vt," ",a(tt,y,a(G,$(a(m,r(function(t,r){return a(k["++"],t,r)})," ")),t.submatches)))}),function(t){return f(hr,yr,mr("\n +\\w+ : .*"),b(""),f(hr,yr,mr("\\s--.*\n"),b(""),t))}),el=function(t){return nl(t)},ol=r(function(t,r){var n=qu(el(r));t:do{if("Ok"===n.ctor){if("_Tuple3"===n._0.ctor)return n._0._2;break t}if("_Tuple3"===n._0.ctor&&"_Tuple0"===n._0._0.ctor&&"::"===n._0._2.ctor&&"[]"===n._0._2._1.ctor){var e=a(rl,n._0._1.position,r),o=e._0,c=e._1;return v.crash("Compiler",{start:{line:216,column:17},end:{line:216,column:28}})(a(k["++"],"]ERR> Compilation error in:\n ",a(k["++"],t,a(k["++"],":",a(k["++"],T(o),a(k["++"],":",a(k["++"],T(c),a(k["++"],"\nat:\n ",a(k["++"],a(Vt,"\n",a(at,30,Mt(n._0._1.input))),"\n")))))))))}break t}while(!1);return v.crashCase("Compiler",{start:{line:207,column:5},end:{line:232,column:39}},n)(T(n))}),cl=r(function(t,r){var n=r,e=a(tl,n._0,t),o=e._0,c=e._1;return{ctor:"_Tuple2",_0:o,_1:a(k["++"],n._1,c)}}),ul=function(t){var r=t;if("[]"===r.ctor)return{ctor:"_Tuple2",_0:R,_1:{ctor:"[]"}};var n=r._1,e=Ja(r._0);return{ctor:"_Tuple2",_0:S(a(R_,e,n)),_1:n}},il=function(t){var e=r(function(t,r){return d(sn,Wn,n(function(t,r,n){return a(Wn,t,r)}),Wn,r,t,Rn)});return l(U,function(t){return e(function(t){return t.modules}(t))},Rn,t)},_l=function(t){var r=a(Ut,"\n",t);return"::"===r.ctor?{ctor:"_Tuple2",_0:r._0,_1:a(Vt,"\n",r._1)}:{ctor:"_Tuple2",_0:"",_1:""}},al=a(k["++"],"\n",a(k["++"],Dt("\n end\n\n "),"\n")),ll=a(k["++"],Ri(0),a(k["++"],"use Elchemy","\n")),fl=r(function(t,r){var n=ji(t);return a(k["++"],a(k["++"],"# Compiled using Elchemy v","0.6.3"),a(k["++"],"\n",a(k["++"],a(k["++"],"defmodule ",a(k["++"],t.mod," do")),a(k["++"],ll,a(k["++"],Ri(t.indent),a(k["++"],n,a(k["++"],rr(l(U,cl,{ctor:"_Tuple2",_0:t,_1:""},r)),al)))))))}),sl=r(function(t,n){if(a(gr,mr("^\\s*$"),n))return{ctor:"_Tuple2",_0:"",_1:t};var e=a(Ut,a(k["++"],">>",">>"),n);if("::"===e.ctor&&"[]"===e._1.ctor)return function(t){var r=t,n=r._0;if("Nothing"===n.ctor)return v.crashCase("Compiler",{start:{line:80,column:29},end:{line:85,column:63}},n)("Failed getting context");var e=n._0;return{ctor:"_Tuple2",_0:a(fl,e,r._1),_1:e.commons}}(ul(a(ol,"NoName.elm",e._0)));var o=e,c=a(C,"Number of files",W(o)),u=a(G,function(t){var r=t,n=r._1._0;return l(m,C,n,a(k["++"],"Parsing ",a(k["++"],T(c-r._0),a(k["++"],"/",a(k["++"],T(c)," # "))))),{ctor:"_Tuple2",_0:n,_1:a(ol,n,r._1._1)}},a(pt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),a(G,_l,o))),i=a(tt,function(t){var r=t;return"Nothing"===r._1._0.ctor?R:S({ctor:"_Tuple3",_0:r._0,_1:r._1._0._0,_2:r._1._1})},a(G,function(t){var r=t;return{ctor:"_Tuple2",_0:r._0,_1:ul(r._1)}},u)),_=function(t){return{modules:t}}(il(a(r(function(t,r){return{ctor:"::",_0:t,_1:r}}),t,a(G,function(t){return t._1.commons},i)))),f=a(G,function(t){var r=t;return{ctor:"_Tuple3",_0:r._0,_1:v.update(r._1,{commons:_}),_2:r._2}},i),s=function(t){var r=t,n=r._1._0;return l(m,C,n,a(k["++"],"Compiling ",a(k["++"],T(c-r._0),a(k["++"],"/",a(k["++"],T(c)," # "))))),a(k["++"],">>",a(k["++"],">>",a(k["++"],n,a(k["++"],"\n",a(fl,r._1._1,r._1._2)))))};return l(m,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),_,a(Vt,"\n",a(G,s,a(pt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),f))))}),dl=function(t){return a(sl,Yi,t)},pl=function(t){return nr(dl(t))},hl=r(function(t,r){var n=t;return"Replace"===n.ctor?{ctor:"_Tuple2",_0:n._0,_1:ur}:{ctor:"_Tuple2",_0:"",_1:ur}}),vl=function(t){return{ctor:"_Tuple2",_0:t,_1:ur}},gl=function(t){return a(ei,{ctor:"[]"},a(k["++"],"```elixir\n",a(k["++"],pl(t),"\n```")))},ml=er.incomingPort("updateInput",Wu),bl=function(t){return{ctor:"Replace",_0:t}},yl=Zu({init:vl,update:hl,view:gl,subscriptions:function(t){return _r({ctor:"::",_0:ml(bl),_1:{ctor:"[]"}})}})(Wu),kl={};if(kl.Main=kl.Main||{},void 0!==yl&&yl(kl.Main,"Main",void 0),"function"==typeof define&&define.amd)return void define([],function(){return kl});if("object"==typeof t)return void(t.exports=kl);var Tl=this.Elm;if(void 0===Tl)return void(this.Elm=kl);for(var wl in kl){if(wl in Tl)throw new Error("There are two Elm modules called `"+wl+"` on this page! Rename one of them.");Tl[wl]=kl[wl]}}).call(this)},function(t,r){},function(t,r,n){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var e=n(1),o=(n.n(e),n(0)),c=n.n(o),u='module FizzBuzz exposing (fizzbuzz)\n\nimport List exposing (map, range)\n\n\n{-| Fizzes the buzzes, and buzzfizzes the fizz out of buzz\nfizzbuzz 1 7 == "1 2 Fizz 4 Buzz Fizz 7"\n-}\nfizzbuzz : Int -> Int -> String\nfizzbuzz from to =\n let\n fizzBuzz n =\n case ( n % 3, n % 5 ) of\n ( 0, 0 ) ->\n "FizzBuzz"\n\n ( 0, _ ) ->\n "Fizz"\n\n ( _, 0 ) ->\n "Buzz"\n\n _ ->\n toString n\n in\n List.range from to\n |> map (fizzBuzz >> toString)\n |> joinWords\n\n\njoinWords : List String -> String\njoinWords a =\n String.join " " a',i=c.a.Main.embed(document.getElementById("root"),u),_=CodeMirror(document.getElementById("code-editor"),{value:u,lineNumbers:!0,mode:"elm",theme:"one-dark"});_.setSize("100%","100%"),_.on("change",function(t,r){return i.ports.updateInput.send(t.getValue())}),window.onerror=function(t,r,n){return setTimeout(function(){var r=t.split("The message provided by the code author is:");2==r.length&&(document.getElementById("error-dialog").innerText=r[1])},30),!1},window.onkeydown=function(){document.getElementById("error-dialog").innerText=""}}]); \ No newline at end of file diff --git a/docs/static/js/main.e997bdbd.js b/docs/static/js/main.e997bdbd.js new file mode 100644 index 0000000..48bdf3f --- /dev/null +++ b/docs/static/js/main.e997bdbd.js @@ -0,0 +1 @@ +!function(t){function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var e={};r.m=t,r.c=e,r.i=function(t){return t},r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},r.p="",r(r.s=2)}([function(t,r){(function(){"use strict";function r(t){function r(r){return function(e){return t(r,e)}}return r.arity=2,r.func=t,r}function e(t){function r(r){return function(e){return function(n){return t(r,e,n)}}}return r.arity=3,r.func=t,r}function n(t){function r(r){return function(e){return function(n){return function(o){return t(r,e,n,o)}}}}return r.arity=4,r.func=t,r}function o(t){function r(r){return function(e){return function(n){return function(o){return function(c){return t(r,e,n,o,c)}}}}}return r.arity=5,r.func=t,r}function c(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return t(r,e,n,o,c,u)}}}}}}return r.arity=6,r.func=t,r}function u(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return t(r,e,n,o,c,u,i)}}}}}}}return r.arity=7,r.func=t,r}function i(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return t(r,e,n,o,c,u,i,a)}}}}}}}}return r.arity=8,r.func=t,r}function a(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return function(_){return t(r,e,n,o,c,u,i,a,_)}}}}}}}}}return r.arity=9,r.func=t,r}function _(t,r,e){return 2===t.arity?t.func(r,e):t(r)(e)}function s(t,r,e,n){return 3===t.arity?t.func(r,e,n):t(r)(e)(n)}function l(t,r,e,n,o){return 4===t.arity?t.func(r,e,n,o):t(r)(e)(n)(o)}function f(t,r,e,n,o,c){return 5===t.arity?t.func(r,e,n,o,c):t(r)(e)(n)(o)(c)}function d(t,r,e,n,o,c,u){return 6===t.arity?t.func(r,e,n,o,c,u):t(r)(e)(n)(o)(c)(u)}var p=function(){function t(t,r){return t/r|0}function n(t,r){return t%r}function o(t,r){if(0===r)throw new Error("Cannot perform mod 0. Division by zero error.");var e=t%r,n=0===t?0:r>0?t>=0?e:e+r:-o(-t,-r);return n===r?0:n}function c(t,r){return Math.log(r)/Math.log(t)}function u(t){return-t}function i(t){return t<0?-t:t}function a(t,r){return h.cmp(t,r)<0?t:r}function _(t,r){return h.cmp(t,r)>0?t:r}function s(t,r,e){return h.cmp(e,t)<0?t:h.cmp(e,r)>0?r:e}function l(t,r){return{ctor:k[h.cmp(t,r)+1]}}function f(t,r){return t!==r}function d(t){return!t}function p(t){return t===1/0||t===-1/0}function g(t){return 0|t}function v(t){return t*Math.PI/180}function m(t){return 2*Math.PI*t}function b(t){var r=t._0,e=t._1;return h.Tuple2(r*Math.cos(e),r*Math.sin(e))}function y(t){var r=t._0,e=t._1;return h.Tuple2(Math.sqrt(r*r+e*e),Math.atan2(e,r))}var k=["LT","EQ","GT"];return{div:r(t),rem:r(n),mod:r(o),pi:Math.PI,e:Math.E,cos:Math.cos,sin:Math.sin,tan:Math.tan,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:r(Math.atan2),degrees:v,turns:m,fromPolar:b,toPolar:y,sqrt:Math.sqrt,logBase:r(c),negate:u,abs:i,min:r(a),max:r(_),clamp:e(s),compare:r(l),xor:r(f),not:d,truncate:g,ceiling:Math.ceil,floor:Math.floor,round:Math.round,toFloat:function(t){return t},isNaN:isNaN,isInfinite:p}}(),h=function(){function t(t,r){for(var n,o=[],c=e(t,r,0,o);c&&(n=o.pop());)c=e(n.x,n.y,0,o);return c}function e(t,r,n,o){if(n>100)return o.push({x:t,y:r}),!0;if(t===r)return!0;if("object"!=typeof t){if("function"==typeof t)throw new Error('Trying to use `(==)` on functions. There is no way to know if functions are "the same" in the Elm sense. Read more about this at http://package.elm-lang.org/packages/elm-lang/core/latest/Basics#== which describes why it is this way and what the better version will look like.');return!1}if(null===t||null===r)return!1;if(t instanceof Date)return t.getTime()===r.getTime();if(!("ctor"in t)){for(var c in t)if(!e(t[c],r[c],n+1,o))return!1;return!0}if("RBNode_elm_builtin"!==t.ctor&&"RBEmpty_elm_builtin"!==t.ctor||(t=ir(t),r=ir(r)),"Set_elm_builtin"===t.ctor&&(t=Yr(t),r=Yr(r)),"::"===t.ctor){for(var u=t,i=r;"::"===u.ctor&&"::"===i.ctor;){if(!e(u._0,i._0,n+1,o))return!1;u=u._1,i=i._1}return u.ctor===i.ctor}if("_Array"===t.ctor){var a=De.toJSArray(t),_=De.toJSArray(r);if(a.length!==_.length)return!1;for(var s=0;s=1){if((c=n(t._0,r._0))!==g)return c;if(u>=2){if((c=n(t._1,r._1))!==g)return c;if(u>=3){if((c=n(t._2,r._2))!==g)return c;if(u>=4){if((c=n(t._3,r._3))!==g)return c;if(u>=5){if((c=n(t._4,r._4))!==g)return c;if(u>=6){if((c=n(t._5,r._5))!==g)return c;if(u>=7)throw new Error("Comparison error: cannot compare tuples with more than 6 elements.")}}}}}}return g}throw new Error("Comparison error: comparison is only defined on ints, floats, times, chars, strings, lists of comparable values, and tuples of comparable values.")}function o(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}function c(t){return new String(t)}function u(t){return b++}function i(t,r){var e={};for(var n in t)e[n]=t[n];for(var n in r)e[n]=r[n];return e}function a(t,r){return{ctor:"::",_0:t,_1:r}}function _(t,r){if("string"==typeof t)return t+r;if("[]"===t.ctor)return r;var e=a(t._0,y),n=e;for(t=t._1;"[]"!==t.ctor;)n._1=a(t._0,y),t=t._1,n=n._1;return n._1=r,e}function s(t,r){return function(e){throw new Error("Ran into a `Debug.crash` in module `"+t+"` "+f(r)+"\nThe message provided by the code author is:\n\n "+e)}}function l(t,r,e){return function(n){throw new Error("Ran into a `Debug.crash` in module `"+t+"`\n\nThis was caused by the `case` expression "+f(r)+".\nOne of the branches ended with a crash and the following value got through:\n\n "+d(e)+"\n\nThe message provided by the code author is:\n\n "+n)}}function f(t){return t.start.line==t.end.line?"on line "+t.start.line:"between lines "+t.start.line+" and "+t.end.line}function d(t){var r=typeof t;if("function"===r)return"";if("boolean"===r)return t?"True":"False";if("number"===r)return t+"";if(t instanceof String)return"'"+p(t,!0)+"'";if("string"===r)return'"'+p(t,!1)+'"';if(null===t)return"null";if("object"===r&&"ctor"in t){var e=t.ctor.substring(0,5);if("_Tupl"===e){var n=[];for(var o in t)"ctor"!==o&&n.push(d(t[o]));return"("+n.join(",")+")"}if("_Task"===e)return"";if("_Array"===t.ctor)return"Array.fromList "+d(Pe(t));if(""===t.ctor)return"";if("_Process"===t.ctor)return"";if("::"===t.ctor){var n="["+d(t._0);for(t=t._1;"::"===t.ctor;)n+=","+d(t._0),t=t._1;return n+"]"}if("[]"===t.ctor)return"[]";if("Set_elm_builtin"===t.ctor)return"Set.fromList "+d(Yr(t));if("RBNode_elm_builtin"===t.ctor||"RBEmpty_elm_builtin"===t.ctor)return"Dict.fromList "+d(ir(t));var n="";for(var c in t)if("ctor"!==c){var u=d(t[c]),i=u[0],a="{"===i||"("===i||"<"===i||'"'===i||u.indexOf(" ")<0;n+=" "+(a?u:"("+u+")")}return t.ctor+n}if("object"===r){if(t instanceof Date)return"<"+t.toString()+">";if(t.elm_web_socket)return"";var n=[];for(var o in t)n.push(o+" = "+d(t[o]));return 0===n.length?"{}":"{ "+n.join(", ")+" }"}return""}function p(t,r){var e=t.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\v/g,"\\v").replace(/\0/g,"\\0");return r?e.replace(/\'/g,"\\'"):e.replace(/\"/g,'\\"')}var h=-1,g=0,v=1,m={ctor:"_Tuple0"},b=0,y={ctor:"[]"};return{eq:t,cmp:n,Tuple0:m,Tuple2:o,chr:c,update:i,guid:u,append:r(_),crash:s,crashCase:l,toString:d}}(),g=r(function(t,r){var e=r;return _(t,e._0,e._1)}),v=(e(function(t,r,e){return t({ctor:"_Tuple2",_0:r,_1:e})}),e(function(t,r,e){return _(t,e,r)})),m=r(function(t,r){return t}),b=function(t){return t},y=y||{};y["<|"]=r(function(t,r){return t(r)});var y=y||{};y["|>"]=r(function(t,r){return r(t)});var y=y||{};y[">>"]=e(function(t,r,e){return r(t(e))});var y=y||{};y["<<"]=e(function(t,r,e){return t(r(e))});var y=y||{};y["++"]=h.append;var k=h.toString,y=(p.isInfinite,p.isNaN,p.toFloat,p.ceiling,p.floor,p.truncate,p.round,p.not,p.xor,y||{});y["||"]=p.or;var y=y||{};y["&&"]=p.and;var T=(p.max,p.min,p.compare),y=y||{};y[">="]=p.ge;var y=y||{};y["<="]=p.le;var y=y||{};y[">"]=p.gt;var y=y||{};y["<"]=p.lt;var y=y||{};y["/="]=p.neq;var y=y||{};y["=="]=p.eq;var y=(p.e,p.pi,p.clamp,p.logBase,p.abs,p.negate,p.sqrt,p.atan2,p.atan,p.asin,p.acos,p.tan,p.sin,p.cos,y||{});y["^"]=p.exp;var y=y||{};y["%"]=p.mod;var y=(p.rem,y||{});y["//"]=p.div;var y=y||{};y["/"]=p.floatDiv;var y=y||{};y["*"]=p.mul;var y=y||{};y["-"]=p.sub;var y=y||{};y["+"]=p.add;var w=(p.toPolar,p.fromPolar,p.turns,p.degrees,function(){function t(t,r){var e=t+": "+h.toString(r),n=n||{};return n.stdout?n.stdout.write(e):console.log(e),r}function e(t){throw new Error(t)}return{crash:e,log:r(t)}}()),x=(w.crash,w.log),B=r(function(t,r){var e=r;return"Just"===e.ctor?e._0:t}),E={ctor:"Nothing"},A=r(function(t,r){var e=r;return"Just"===e.ctor?t(e._0):E}),C=function(t){return{ctor:"Just",_0:t}},N=r(function(t,r){var e=r;return"Just"===e.ctor?C(t(e._0)):E}),R=e(function(t,r,e){var n={ctor:"_Tuple2",_0:r,_1:e};return"_Tuple2"===n.ctor&&"Just"===n._0.ctor&&"Just"===n._1.ctor?C(_(t,n._0._0,n._1._0)):E}),$=(n(function(t,r,e,n){var o={ctor:"_Tuple3",_0:r,_1:e,_2:n};return"_Tuple3"===o.ctor&&"Just"===o._0.ctor&&"Just"===o._1.ctor&&"Just"===o._2.ctor?C(s(t,o._0._0,o._1._0,o._2._0)):E}),o(function(t,r,e,n,o){var c={ctor:"_Tuple4",_0:r,_1:e,_2:n,_3:o};return"_Tuple4"===c.ctor&&"Just"===c._0.ctor&&"Just"===c._1.ctor&&"Just"===c._2.ctor&&"Just"===c._3.ctor?C(l(t,c._0._0,c._1._0,c._2._0,c._3._0)):E}),c(function(t,r,e,n,o,c){var u={ctor:"_Tuple5",_0:r,_1:e,_2:n,_3:o,_4:c};return"_Tuple5"===u.ctor&&"Just"===u._0.ctor&&"Just"===u._1.ctor&&"Just"===u._2.ctor&&"Just"===u._3.ctor&&"Just"===u._4.ctor?C(f(t,u._0._0,u._1._0,u._2._0,u._3._0,u._4._0)):E}),function(){function t(t,r){return{ctor:"::",_0:t,_1:r}}function u(r){for(var e=y,n=r.length;n--;)e=t(r[n],e);return e}function i(t){for(var r=[];"[]"!==t.ctor;)r.push(t._0),t=t._1;return r}function a(t,r,e){for(var n=i(e),o=r,c=n.length;c--;)o=_(t,n[c],o);return o}function d(t,r,e){for(var n=[];"[]"!==r.ctor&&"[]"!==e.ctor;)n.push(_(t,r._0,e._0)),r=r._1,e=e._1;return u(n)}function p(t,r,e,n){for(var o=[];"[]"!==r.ctor&&"[]"!==e.ctor&&"[]"!==n.ctor;)o.push(s(t,r._0,e._0,n._0)),r=r._1,e=e._1,n=n._1;return u(o)}function g(t,r,e,n,o){for(var c=[];"[]"!==r.ctor&&"[]"!==e.ctor&&"[]"!==n.ctor&&"[]"!==o.ctor;)c.push(l(t,r._0,e._0,n._0,o._0)),r=r._1,e=e._1,n=n._1,o=o._1;return u(c)}function v(t,r,e,n,o,c){for(var i=[];"[]"!==r.ctor&&"[]"!==e.ctor&&"[]"!==n.ctor&&"[]"!==o.ctor&&"[]"!==c.ctor;)i.push(f(t,r._0,e._0,n._0,o._0,c._0)),r=r._1,e=e._1,n=n._1,o=o._1,c=c._1;return u(i)}function m(t,r){return u(i(r).sort(function(r,e){return h.cmp(t(r),t(e))}))}function b(t,r){return u(i(r).sort(function(r,e){var n=t(r)(e).ctor;return"EQ"===n?0:"LT"===n?-1:1}))}var y={ctor:"[]"};return{Nil:y,Cons:t,cons:r(t),toArray:i,fromArray:u,foldr:e(a),map2:e(d),map3:n(p),map4:o(g),map5:c(v),sortBy:r(m),sortWith:r(b)}}()),S=$.sortWith,L=($.sortBy,function(t){return{ctor:"::",_0:t,_1:{ctor:"[]"}}}),z=r(function(t,r){for(;;){if(h.cmp(t,0)<1)return r;var e=r;if("[]"===e.ctor)return r;var n=t-1,o=e._1;t=n,r=o}}),I=$.map5,O=$.map4,q=$.map3,M=$.map2,F=r(function(t,r){for(;;){var e=r;if("[]"===e.ctor)return!1;if(t(e._0))return!0;var n=t,o=e._1;t=n,r=o}}),D=r(function(t,r){return!_(F,function(r){return!t(r)},r)}),P=$.foldr,V=e(function(t,r,e){for(;;){var n=e;if("[]"===n.ctor)return r;var o=t,c=_(t,n._0,r),u=n._1;t=o,r=c,e=u}}),j=function(t){return s(V,r(function(t,r){return r+1}),0,t)},J=r(function(t,r){return _(F,function(r){return h.eq(r,t)},r)}),U=function(t){var r=t;return"::"===r.ctor?C(r._1):E},W=function(t){var r=t;return"::"===r.ctor?C(r._0):E},H=H||{};H["::"]=$.cons;var Q=r(function(t,e){return s(P,r(function(r,e){return{ctor:"::",_0:t(r),_1:e}}),{ctor:"[]"},e)}),K=r(function(t,e){var n=r(function(r,e){return t(r)?{ctor:"::",_0:r,_1:e}:e});return s(P,n,{ctor:"[]"},e)}),X=e(function(t,r,e){var n=t(r);return"Just"===n.ctor?{ctor:"::",_0:n._0,_1:e}:e}),G=r(function(t,r){return s(P,X(t),{ctor:"[]"},r)}),Y=function(t){return s(V,r(function(t,r){return{ctor:"::",_0:t,_1:r}}),{ctor:"[]"},t)},Z=e(function(t,e,n){var o=r(function(r,e){var n=e;return"::"===n.ctor?{ctor:"::",_0:_(t,r,n._0),_1:e}:{ctor:"[]"}});return Y(s(V,o,{ctor:"::",_0:e,_1:{ctor:"[]"}},n))}),tt=r(function(t,e){return"[]"===e.ctor?t:s(P,r(function(t,r){return{ctor:"::",_0:t,_1:r}}),e,t)}),rt=function(t){return s(P,tt,{ctor:"[]"},t)},et=r(function(t,r){return rt(_(Q,t,r))}),nt=(r(function(t,e){var n=r(function(r,e){var n=e,o=n._0,c=n._1;return t(r)?{ctor:"_Tuple2",_0:{ctor:"::",_0:r,_1:o},_1:c}:{ctor:"_Tuple2",_0:o,_1:{ctor:"::",_0:r,_1:c}}});return s(P,n,{ctor:"_Tuple2",_0:{ctor:"[]"},_1:{ctor:"[]"}},e)}),r(function(t,e){var n=e;if("[]"===n.ctor)return{ctor:"[]"};var o=r(function(r,e){return{ctor:"::",_0:t,_1:{ctor:"::",_0:r,_1:e}}}),c=s(P,o,{ctor:"[]"},n._1);return{ctor:"::",_0:n._0,_1:c}}),e(function(t,r,e){for(;;){if(h.cmp(t,0)<1)return e;var n=r;if("[]"===n.ctor)return e;var o=t-1,c=n._1,u={ctor:"::",_0:n._0,_1:e};t=o,r=c,e=u}})),ot=r(function(t,r){return Y(s(nt,t,r,{ctor:"[]"}))}),ct=e(function(t,r,e){if(h.cmp(r,0)<1)return{ctor:"[]"};var n={ctor:"_Tuple2",_0:r,_1:e};t:do{r:do{if("_Tuple2"!==n.ctor)break t;if("[]"===n._1.ctor)return e;if("::"!==n._1._1.ctor){if(1===n._0)break r;break t}switch(n._0){case 1:break r;case 2:return{ctor:"::",_0:n._1._0,_1:{ctor:"::",_0:n._1._1._0,_1:{ctor:"[]"}}};case 3:if("::"===n._1._1._1.ctor)return{ctor:"::",_0:n._1._0,_1:{ctor:"::",_0:n._1._1._0,_1:{ctor:"::",_0:n._1._1._1._0,_1:{ctor:"[]"}}}};break t;default:if("::"===n._1._1._1.ctor&&"::"===n._1._1._1._1.ctor){var o=n._1._1._1._0,c=n._1._1._0,u=n._1._0,i=n._1._1._1._1._0,a=n._1._1._1._1._1;return h.cmp(t,1e3)>0?{ctor:"::",_0:u,_1:{ctor:"::",_0:c,_1:{ctor:"::",_0:o,_1:{ctor:"::",_0:i,_1:_(ot,r-4,a)}}}}:{ctor:"::",_0:u,_1:{ctor:"::",_0:c,_1:{ctor:"::",_0:o,_1:{ctor:"::",_0:i,_1:s(ct,t+1,r-4,a)}}}}}break t}}while(!1);return{ctor:"::",_0:n._1._0,_1:{ctor:"[]"}}}while(!1);return e}),ut=r(function(t,r){return s(ct,0,t,r)}),it=e(function(t,r,e){for(;;){if(h.cmp(r,0)<1)return t;var n={ctor:"::",_0:e,_1:t},o=r-1,c=e;t=n,r=o,e=c}}),at=r(function(t,r){return s(it,{ctor:"[]"},t,r)}),_t=e(function(t,r,e){for(;;){if(!(h.cmp(t,r)<1))return e;var n=t,o=r-1,c={ctor:"::",_0:r,_1:e};t=n,r=o,e=c}}),st=r(function(t,r){return s(_t,t,r,{ctor:"[]"})}),lt=r(function(t,r){return s(M,t,_(st,0,j(r)-1),r)}),ft=r(function(t,r){var e=r;return"Ok"===e.ctor?e._0:t}),dt=function(t){return{ctor:"Err",_0:t}},pt=(r(function(t,r){var e=r;return"Ok"===e.ctor?t(e._0):dt(e._0)}),function(t){return{ctor:"Ok",_0:t}}),ht=(r(function(t,r){var e=r;return"Ok"===e.ctor?pt(t(e._0)):dt(e._0)}),e(function(t,r,e){var n={ctor:"_Tuple2",_0:r,_1:e};return"Ok"===n._0.ctor?"Ok"===n._1.ctor?pt(_(t,n._0._0,n._1._0)):dt(n._1._0):dt(n._0._0)}),n(function(t,r,e,n){var o={ctor:"_Tuple3",_0:r,_1:e,_2:n};return"Ok"===o._0.ctor?"Ok"===o._1.ctor?"Ok"===o._2.ctor?pt(s(t,o._0._0,o._1._0,o._2._0)):dt(o._2._0):dt(o._1._0):dt(o._0._0)}),o(function(t,r,e,n,o){var c={ctor:"_Tuple4",_0:r,_1:e,_2:n,_3:o};return"Ok"===c._0.ctor?"Ok"===c._1.ctor?"Ok"===c._2.ctor?"Ok"===c._3.ctor?pt(l(t,c._0._0,c._1._0,c._2._0,c._3._0)):dt(c._3._0):dt(c._2._0):dt(c._1._0):dt(c._0._0)}),c(function(t,r,e,n,o,c){var u={ctor:"_Tuple5",_0:r,_1:e,_2:n,_3:o,_4:c};return"Ok"===u._0.ctor?"Ok"===u._1.ctor?"Ok"===u._2.ctor?"Ok"===u._3.ctor?"Ok"===u._4.ctor?pt(f(t,u._0._0,u._1._0,u._2._0,u._3._0,u._4._0)):dt(u._4._0):dt(u._3._0):dt(u._2._0):dt(u._1._0):dt(u._0._0)}),r(function(t,r){var e=r;return"Ok"===e.ctor?pt(e._0):dt(t(e._0))}),r(function(t,r){var e=r;return"Just"===e.ctor?pt(e._0):dt(t)}),function(){function t(t){return 0===t.length}function n(t,r){return t+r}function o(t){var r=t[0];return r?C(h.Tuple2(h.chr(r),t.slice(1))):E}function c(t,r){return t+r}function u(t){return $.toArray(t).join("")}function i(t){return t.length}function a(t,r){for(var e=r.split(""),n=e.length;n--;)e[n]=t(h.chr(e[n]));return e.join("")}function s(t,r){return r.split("").map(h.chr).filter(t).join("")}function l(t){return t.split("").reverse().join("")}function f(t,r,e){for(var n=e.length,o=0;o0;)1&t&&(e+=r),t>>=1,r+=r;return e}function m(t,r,e){return e.slice(t,r)}function b(t,r){return t<1?"":r.slice(0,t)}function y(t,r){return t<1?"":r.slice(-t)}function k(t,r){return t<1?r:r.slice(t)}function T(t,r){return t<1?r:r.slice(0,-t)}function w(t,r,e){var n=(t-e.length)/2;return v(Math.ceil(n),r)+e+v(0|n,r)}function x(t,r,e){return e+v(t-e.length,r)}function B(t,r,e){return v(t-e.length,r)+e}function A(t){return t.trim()}function N(t){return t.replace(/^\s+/,"")}function R(t){return t.replace(/\s+$/,"")}function S(t){return $.fromArray(t.trim().split(/\s+/g))}function L(t){return $.fromArray(t.split(/\r\n|\r|\n/g))}function z(t){return t.toUpperCase()}function I(t){return t.toLowerCase()}function O(t,r){for(var e=r.length;e--;)if(t(h.chr(r[e])))return!0;return!1}function q(t,r){for(var e=r.length;e--;)if(!t(h.chr(r[e])))return!1;return!0}function M(t,r){return r.indexOf(t)>-1}function F(t,r){return 0===r.indexOf(t)}function D(t,r){return r.length>=t.length&&r.lastIndexOf(t)===r.length-t.length}function P(t,r){var e=t.length;if(e<1)return $.Nil;for(var n=0,o=[];(n=r.indexOf(t,n))>-1;)o.push(n),n+=e;return $.fromArray(o)}function V(t){var r=t.length;if(0===r)return j(t);var e=t[0];if("0"===e&&"x"===t[1]){for(var n=2;n"9"||e<"0"&&"-"!==e&&"+"!==e)return j(t);for(var n=1;n-1&&h.cmp(n,vt(r))<1})),bt=_(mt,h.chr("A"),h.chr("Z")),yt=(_(mt,h.chr("a"),h.chr("z")),_(mt,h.chr("0"),h.chr("9"))),kt=(_(mt,h.chr("0"),h.chr("7")),ht.fromList,ht.toList),Tt=(ht.toFloat,ht.toInt),wt=(ht.indexes,ht.indexes,ht.endsWith,ht.startsWith),xt=ht.contains,Bt=(ht.all,ht.any,ht.toLower),Et=ht.toUpper,At=ht.lines,Ct=(ht.words,ht.trimRight),Nt=(ht.trimLeft,ht.trim),Rt=(ht.padRight,ht.padLeft,ht.pad,ht.dropRight,ht.dropLeft),$t=(ht.right,ht.left,ht.slice),St=ht.repeat,Lt=ht.join,zt=ht.split,It=(ht.foldr,ht.foldl,ht.reverse,ht.filter),Ot=(ht.map,ht.length),qt=ht.concat,Mt=(ht.append,ht.uncons),Ft=ht.cons,Dt=function(t){return _(Ft,t,"")},Pt=(ht.isEmpty,r(function(t,r){var e=r;return{ctor:"_Tuple2",_0:e._0,_1:t(e._1)}})),Vt=r(function(t,r){var e=r;return{ctor:"_Tuple2",_0:t(e._0),_1:e._1}}),jt=function(t){return t._1},Jt=function(t){return t._0},Ut=function(){function t(t){return function(r){return function(r,e){r.worker=function(r){if(void 0!==r)throw new Error("The `"+e+"` module does not need flags.\nCall "+e+".worker() with no arguments and you should be all set!");return u(t.init,t.update,t.subscriptions,o)}}}}function n(t){return function(r){return function(e,n){e.worker=function(e){if(void 0===r)throw new Error("Are you trying to sneak a Never value into Elm? Trickster!\nIt looks like "+n+".main is defined with `programWithFlags` but has type `Program Never`.\nUse `program` instead if you do not want flags.");var c=_(je.run,r,e);if("Err"===c.ctor)throw new Error(n+".worker(...) was called with an unexpected argument.\nI tried to convert it to an Elm value, but ran into this problem:\n\n"+c._0);return u(t.init(c._0),t.update,t.subscriptions,o)}}}}function o(t,r){return function(t){}}function c(t){var e=v($.Nil),n=h.Tuple2(h.Tuple0,e);return Xe({init:n,view:function(t){return main},update:r(function(t,r){return n}),subscriptions:function(t){return e}})}function u(t,r,e,n){function o(t,n){return Wt.nativeBinding(function(o){var c=_(r,t,n);n=c._0,u(n);var i=c._1,s=e(n);b(a,i,s),o(Wt.succeed(n))})}function c(t){Wt.rawSend(l,t)}var u,a={},s=Wt.nativeBinding(function(r){var o=t._0;u=n(c,o);var i=t._1,_=e(o);b(a,i,_),r(Wt.succeed(o))}),l=p(s,o),f=i(a,c);return f?{ports:f}:{}}function i(t,r){var e;for(var n in C){var o=C[n];o.isForeign&&(e=e||{},e[n]="cmd"===o.tag?B(n):A(n,r)),t[n]=a(o,r)}return e}function a(t,r){function e(t,r){if("self"===t.ctor)return s(u,n,t._0,r);var e=t._0;switch(o){case"cmd":return s(c,n,e.cmds,r);case"sub":return s(c,n,e.subs,r);case"fx":return l(c,n,e.cmds,e.subs,r)}}var n={main:r,self:void 0},o=t.tag,c=t.onEffects,u=t.onSelfMsg,i=p(t.init,e);return n.self=i,i}function f(t,r){return Wt.nativeBinding(function(e){t.main(r),e(Wt.succeed(h.Tuple0))})}function d(t,r){return _(Wt.send,t.self,{ctor:"self",_0:r})}function p(t,r){function e(t){var o=Wt.receive(function(e){return r(e,t)});return _(n,e,o)}var n=Wt.andThen,o=_(n,e,t);return Wt.rawSpawn(o)}function g(t){return function(r){return{type:"leaf",home:t,value:r}}}function v(t){return{type:"node",branches:t}}function m(t,r){return{type:"map",tagger:t,tree:r}}function b(t,r,e){var n={};y(!0,r,n,null),y(!1,e,n,null);for(var o in t){var c=o in n?n[o]:{cmds:$.Nil,subs:$.Nil};Wt.rawSend(t[o],{ctor:"fx",_0:c})}}function y(t,r,e,n){switch(r.type){case"leaf":var o=r.home,c=k(t,o,n,r.value);return void(e[o]=T(t,c,e[o]));case"node":for(var u=r.branches;"[]"!==u.ctor;)y(t,u._0,e,n),u=u._1;return;case"map":return void y(t,r.tree,e,{tagger:r.tagger,rest:n})}}function k(t,r,e,n){function o(t){for(var r=e;r;)t=r.tagger(t),r=r.rest;return t}return _(t?C[r].cmdMap:C[r].subMap,o,n)}function T(t,r,e){return e=e||{cmds:$.Nil,subs:$.Nil},t?(e.cmds=$.Cons(r,e.cmds),e):(e.subs=$.Cons(r,e.subs),e)}function w(t){if(t in C)throw new Error("There can only be one port named `"+t+"`, but your program has multiple.")}function x(t,r){return w(t),C[t]={tag:"cmd",cmdMap:N,converter:r,isForeign:!0},g(t)}function B(t){function r(t,r,e){for(;"[]"!==r.ctor;){for(var n=c,o=u(r._0),a=0;a=0&&c.splice(r,1)}var c=[],u=C[t].converter,i=Wt.succeed(null);return C[t].init=i,C[t].onEffects=e(r),{subscribe:n,unsubscribe:o}}function E(t,r){return w(t),C[t]={tag:"sub",subMap:R,converter:r,isForeign:!0},g(t)}function A(t,r){function n(t,r,e){for(var n=o(t,r,e),c=0;c0;){var l=n[_];s[--_]=void 0===l?E:C(l)}o.push({match:n[0],submatches:$.fromArray(s),index:n.index,number:c}),a=r.lastIndex}return r.lastIndex=i,$.fromArray(o)}function a(t,r,e,n){function o(r){if(c++>=t)return r;for(var n=arguments.length-3,o=new Array(n);n>0;){var u=arguments[n];o[--n]=void 0===u?E:C(u)}return e({match:r,submatches:$.fromArray(o),index:arguments[arguments.length-2],number:c})}t="All"===t.ctor?1/0:t._0;var c=0;return n.replace(r,o)}function _(t,r,e){if((t="All"===t.ctor?1/0:t._0)===1/0)return $.fromArray(e.split(r));for(var n,o=e,c=[],u=r.lastIndex,i=r.lastIndex;t--&&(n=r.exec(o));)c.push(o.slice(u,n.index)),u=r.lastIndex;return c.push(o.slice(u)),r.lastIndex=i,$.fromArray(c)}return{regex:c,caseInsensitive:o,escape:t,contains:r(u),find:e(i),replace:n(a),split:e(_)}}()),Zt=Yt.split,tr=Yt.replace,rr=(Yt.find,Yt.contains),er=(Yt.caseInsensitive,Yt.regex),nr=(Yt.escape,n(function(t,r,e,n){return{match:t,submatches:r,index:e,number:n}}),function(t){return{ctor:"AtMost",_0:t}}),or={ctor:"All"},cr=e(function(t,r,e){for(;;){var n=e;if("RBEmpty_elm_builtin"===n.ctor)return r;var o=t,c=s(t,n._1,n._2,s(cr,t,r,n._4)),u=n._3;t=o,r=c,e=u}}),ur=function(t){return s(cr,e(function(t,r,e){return{ctor:"::",_0:t,_1:e}}),{ctor:"[]"},t)},ir=function(t){return s(cr,e(function(t,r,e){return{ctor:"::",_0:{ctor:"_Tuple2",_0:t,_1:r},_1:e}}),{ctor:"[]"},t)},ar=e(function(t,r,e){for(;;){var n=e;if("RBEmpty_elm_builtin"===n.ctor)return r;var o=t,c=s(t,n._1,n._2,s(ar,t,r,n._3)),u=n._4;t=o,r=c,e=u}}),_r=c(function(t,n,o,c,u,i){var a=e(function(r,e,c){for(;;){var u=c,i=u._1,a=u._0,_=a;if("[]"===_.ctor)return{ctor:"_Tuple2",_0:a,_1:s(o,r,e,i)};var f=_._1,d=_._0._1,p=_._0._0;if(!(h.cmp(p,r)<0))return h.cmp(p,r)>0?{ctor:"_Tuple2",_0:a,_1:s(o,r,e,i)}:{ctor:"_Tuple2",_0:f,_1:l(n,p,d,e,i)};var g=r,v=e,m={ctor:"_Tuple2",_0:f,_1:s(t,p,d,i)};r=g,e=v,c=m}}),_=s(ar,a,{ctor:"_Tuple2",_0:ir(c),_1:i},u),f=_._0,d=_._1;return s(V,r(function(r,e){var n=r;return s(t,n._0,n._1,e)}),d,f)}),sr=n(function(t,r,e,n){return w.crash(qt({ctor:"::",_0:"Internal red-black tree invariant violated, expected ",_1:{ctor:"::",_0:t,_1:{ctor:"::",_0:" and got ",_1:{ctor:"::",_0:k(r),_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:e,_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:n,_1:{ctor:"::",_0:"\nPlease report this bug to ",_1:{ctor:"[]"}}}}}}}}}}))}),lr=function(t){var r=t;t:do{if("RBNode_elm_builtin"===r.ctor){if("BBlack"===r._0.ctor)return!0;break t}if("LBBlack"===r._0.ctor)return!0;break t}while(!1);return!1},fr=r(function(t,r){for(;;){var e=r;if("RBEmpty_elm_builtin"===e.ctor)return t;var n=_(fr,t+1,e._4),o=e._3;t=n,r=o}}),dr=r(function(t,r){t:for(;;){var e=r;if("RBEmpty_elm_builtin"===e.ctor)return E;var n=_(T,t,e._1);switch(n.ctor){case"LT":var o=t,c=e._3;t=o,r=c;continue t;case"EQ":return C(e._2);default:var u=t,i=e._4;t=u,r=i;continue t}}}),pr=r(function(t,r){return"Just"===_(dr,t,r).ctor}),hr=e(function(t,r,e){for(;;){var n=e;if("RBEmpty_elm_builtin"===n.ctor)return{ctor:"_Tuple2",_0:t,_1:r};var o=n._1,c=n._2,u=n._4;t=o,r=c,e=u}}),gr={ctor:"NBlack"},vr={ctor:"BBlack"},mr={ctor:"Black"},br=function(t){var r=t;if("RBNode_elm_builtin"===r.ctor){var e=r._0;return h.eq(e,mr)||h.eq(e,vr)}return!0},yr={ctor:"Red"},kr=function(t){switch(t.ctor){case"Black":return vr;case"Red":return mr;case"NBlack":return yr;default:return w.crash("Can't make a double black node more black!")}},Tr=function(t){switch(t.ctor){case"BBlack":return mr;case"Black":return yr;case"Red":return gr;default:return w.crash("Can't make a negative black node less black!")}},wr={ctor:"LBBlack"},xr={ctor:"LBlack"},Br=function(t){return{ctor:"RBEmpty_elm_builtin",_0:t}},Er=Br(xr),Ar=o(function(t,r,e,n,o){return{ctor:"RBNode_elm_builtin",_0:t,_1:r,_2:e,_3:n,_4:o}}),Cr=function(t){var r=t;return"RBNode_elm_builtin"===r.ctor&&"Red"===r._0.ctor?f(Ar,mr,r._1,r._2,r._3,r._4):t},Nr=function(t){var r=t;return"RBNode_elm_builtin"===r.ctor?f(Ar,Tr(r._0),r._1,r._2,r._3,r._4):Br(xr)},Rr=function(t){return function(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return function(_){return function(s){return f(Ar,Tr(t),n,o,f(Ar,mr,r,e,i,a),f(Ar,mr,c,u,_,s))}}}}}}}}}}},$r=function(t){var r=t;return"RBEmpty_elm_builtin"===r.ctor?Br(xr):f(Ar,mr,r._1,r._2,r._3,r._4)},Sr=function(t){var r=t;return"RBEmpty_elm_builtin"===r.ctor?w.crash("can't make a Leaf red"):f(Ar,yr,r._1,r._2,r._3,r._4)},Lr=function(t){var r=t;t:do{r:do{e:do{n:do{o:do{c:do{u:do{if("RBNode_elm_builtin"!==r.ctor)break t;if("RBNode_elm_builtin"===r._3.ctor)if("RBNode_elm_builtin"===r._4.ctor)switch(r._3._0.ctor){case"Red":switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;break t;case"NBlack":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;break t;default:if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;break t}case"NBlack":switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t;case"NBlack":if("BBlack"===r._0.ctor){if("RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;if("RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t}break t;default:if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t}default:switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;break t;default:break t}}else switch(r._3._0.ctor){case"Red":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t;default:break t}else{if("RBNode_elm_builtin"!==r._4.ctor)break t;switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;break t;default:break t}}}while(!1);return Rr(r._0)(r._3._3._1)(r._3._3._2)(r._3._1)(r._3._2)(r._1)(r._2)(r._3._3._3)(r._3._3._4)(r._3._4)(r._4)}while(!1);return Rr(r._0)(r._3._1)(r._3._2)(r._3._4._1)(r._3._4._2)(r._1)(r._2)(r._3._3)(r._3._4._3)(r._3._4._4)(r._4)}while(!1);return Rr(r._0)(r._1)(r._2)(r._4._3._1)(r._4._3._2)(r._4._1)(r._4._2)(r._3)(r._4._3._3)(r._4._3._4)(r._4._4)}while(!1);return Rr(r._0)(r._1)(r._2)(r._4._1)(r._4._2)(r._4._4._1)(r._4._4._2)(r._3)(r._4._3)(r._4._4._3)(r._4._4._4)}while(!1);return f(Ar,mr,r._4._3._1,r._4._3._2,f(Ar,mr,r._1,r._2,r._3,r._4._3._3),f(zr,mr,r._4._1,r._4._2,r._4._3._4,Sr(r._4._4)))}while(!1);return f(Ar,mr,r._3._4._1,r._3._4._2,f(zr,mr,r._3._1,r._3._2,Sr(r._3._3),r._3._4._3),f(Ar,mr,r._1,r._2,r._3._4._4,r._4))}while(!1);return t},zr=o(function(t,r,e,n,o){var c=f(Ar,t,r,e,n,o);return br(c)?Lr(c):c}),Ir=o(function(t,r,e,n,o){return lr(n)||lr(o)?f(zr,kr(t),r,e,Nr(n),Nr(o)):f(Ar,t,r,e,n,o)}),Or=o(function(t,r,e,n,o){var c=o;return"RBEmpty_elm_builtin"===c.ctor?s(qr,t,n,o):f(Ir,t,r,e,n,f(Or,c._0,c._1,c._2,c._3,c._4))}),qr=e(function(t,r,e){var n={ctor:"_Tuple2",_0:r,_1:e};if("RBEmpty_elm_builtin"!==n._0.ctor){if("RBEmpty_elm_builtin"===n._1.ctor){var o=n._1._0,c=n._0._0,u={ctor:"_Tuple3",_0:t,_1:c,_2:o};return"_Tuple3"===u.ctor&&"Black"===u._0.ctor&&"Red"===u._1.ctor&&"LBlack"===u._2.ctor?f(Ar,mr,n._0._1,n._0._2,n._0._3,n._0._4):l(sr,"Black/Red/LBlack",t,k(c),k(o))}var i=n._0._2,a=n._0._4,_=n._0._1,d=f(Or,n._0._0,_,i,n._0._3,a),p=s(hr,_,i,a),h=p._0,g=p._1;return f(Ir,t,h,g,d,e)}if("RBEmpty_elm_builtin"!==n._1.ctor){var v=n._1._0,m=n._0._0,b={ctor:"_Tuple3",_0:t,_1:m,_2:v};return"_Tuple3"===b.ctor&&"Black"===b._0.ctor&&"LBlack"===b._1.ctor&&"Red"===b._2.ctor?f(Ar,mr,n._1._1,n._1._2,n._1._3,n._1._4):l(sr,"Black/LBlack/Red",t,k(m),k(v))}switch(t.ctor){case"Red":return Br(xr);case"Black":return Br(wr);default:return w.crash("cannot have bblack or nblack nodes at this point")}}),Mr=r(function(t,r){var e=r;if("RBEmpty_elm_builtin"===e.ctor)return Br(xr);var n=e._1;return f(Ar,e._0,n,_(t,n,e._2),_(Mr,t,e._3),_(Mr,t,e._4))}),Fr={ctor:"Same"},Dr={ctor:"Remove"},Pr={ctor:"Insert"},Vr=e(function(t,r,e){var n=function(e){var o=e;if("RBEmpty_elm_builtin"===o.ctor){var c=r(E);return"Nothing"===c.ctor?{ctor:"_Tuple2",_0:Fr,_1:Er}:{ctor:"_Tuple2",_0:Pr,_1:f(Ar,yr,t,c._0,Er,Er)}}var u=o._2,i=o._4,a=o._3,l=o._1,d=o._0;switch(_(T,t,l).ctor){case"EQ":var p=r(C(u));return"Nothing"===p.ctor?{ctor:"_Tuple2",_0:Dr,_1:s(qr,d,a,i)}:{ctor:"_Tuple2",_0:Fr,_1:f(Ar,d,l,p._0,a,i)};case"LT":var h=n(a),g=h._0,v=h._1;switch(g.ctor){case"Same":return{ctor:"_Tuple2",_0:Fr,_1:f(Ar,d,l,u,v,i)};case"Insert":return{ctor:"_Tuple2",_0:Pr,_1:f(zr,d,l,u,v,i)};default:return{ctor:"_Tuple2",_0:Dr,_1:f(Ir,d,l,u,v,i)}}default:var m=n(i),g=m._0,b=m._1;switch(g.ctor){case"Same":return{ctor:"_Tuple2",_0:Fr,_1:f(Ar,d,l,u,a,b)};case"Insert":return{ctor:"_Tuple2",_0:Pr,_1:f(zr,d,l,u,a,b)};default:return{ctor:"_Tuple2",_0:Dr,_1:f(Ir,d,l,u,a,b)}}}},o=n(e),c=o._0,u=o._1;switch(c.ctor){case"Same":return u;case"Insert":return Cr(u);default:return $r(u)}}),jr=e(function(t,r,e){return s(Vr,t,m(C(r)),e)}),Jr=r(function(t,r){return s(jr,t,r,Er)}),Ur=r(function(t,r){return s(ar,jr,r,t)}),Wr=r(function(t,r){var n=e(function(r,e,n){return _(t,r,e)?s(jr,r,e,n):n});return s(ar,n,Er,r)}),Hr=r(function(t,e){return _(Wr,r(function(t,r){return _(pr,t,e)}),t)}),Qr=r(function(t,r){var n=e(function(r,e,n){var o=n,c=o._1,u=o._0;return _(t,r,e)?{ctor:"_Tuple2",_0:s(jr,r,e,u),_1:c}:{ctor:"_Tuple2",_0:u,_1:s(jr,r,e,c)}});return s(ar,n,{ctor:"_Tuple2",_0:Er,_1:Er},r)}),Kr=function(t){return s(V,r(function(t,r){var e=t;return s(jr,e._0,e._1,r)}),Er,t)},Xr=r(function(t,r){return s(Vr,t,m(E),r)}),Gr=r(function(t,r){return s(ar,e(function(t,r,e){return _(Xr,t,e)}),t,r)}),Yr=(e(function(t,r,n){var o=n;return s(cr,e(function(r,e,n){return _(t,r,n)}),r,o._0)}),e(function(t,r,n){var o=n;return s(ar,e(function(r,e,n){return _(t,r,n)}),r,o._0)}),function(t){return ur(t._0)}),Zr=r(function(t,r){return _(pr,t,r._0)}),te=function(t){return{ctor:"Set_elm_builtin",_0:t}},re=te(Er),ee=r(function(t,r){return te(s(jr,t,{ctor:"_Tuple0"},r._0))}),ne=function(t){return s(V,ee,re,t)},oe=(r(function(t,r){return ne(_(Q,t,Yr(r)))}),r(function(t,r){return te(_(Xr,t,r._0))}),r(function(t,r){var e=t,n=r;return te(_(Ur,e._0,n._0))})),ce=(r(function(t,r){var e=t,n=r;return te(_(Hr,e._0,n._0))}),r(function(t,r){var e=t,n=r;return te(_(Gr,e._0,n._0))}),r(function(t,e){var n=e;return te(_(Wr,r(function(r,e){return t(r)}),n._0))}),r(function(t,e){var n=e,o=_(Qr,r(function(r,e){return t(r)}),n._0),c=o._0,u=o._1;return{ctor:"_Tuple2",_0:te(c),_1:te(u)}}),e(function(t,r,e){var n=h.cmp(j(e),0)>0,o=h.cmp(t,0)>0&&h.cmp(r,0)>0,c=_(z,r,e),u=_(ut,t,e);return o&&n?{ctor:"::",_0:u,_1:s(ce,t,r,c)}:{ctor:"[]"}})),ue=(r(function(t,r){return s(ce,t,t,r)}),e(function(t,r,e){var n=h.cmp(t,0)>0&&h.cmp(r,0)>0,o=_(z,r,e),c=_(ut,t,e),u=h.eq(t,j(c));return n&&u?{ctor:"::",_0:c,_1:s(ue,t,r,o)}:{ctor:"[]"}})),ie=(r(function(t,r){return s(ue,t,t,r)}),I(o(function(t,r,e,n,o){return{ctor:"_Tuple5",_0:t,_1:r,_2:e,_3:n,_4:o}})),O(n(function(t,r,e,n){return{ctor:"_Tuple4",_0:t,_1:r,_2:e,_3:n}})),q(e(function(t,r,e){return{ctor:"_Tuple3",_0:t,_1:r,_2:e}})),M(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}})),r(function(t,r){var e={ctor:"_Tuple2",_0:t,_1:r};return"[]"===e._0.ctor||"[]"!==e._1.ctor&&h.eq(e._0._0,e._1._0)&&_(ie,e._0._1,e._1._1)})),ae=(r(function(t,r){return _(ie,Y(t),Y(r))}),function(t){var r=t;if("[]"===r.ctor)return{ctor:"[]"};var e=r._1,n=r._0;return{ctor:"::",_0:{ctor:"_Tuple2",_0:n,_1:e},_1:_(Q,function(t){var r=t;return{ctor:"_Tuple2",_0:r._0,_1:{ctor:"::",_0:n,_1:r._1}}},ae(e))}}),_e=r(function(t,r){var e=r;if("::"===e.ctor){var n=e._0;return{ctor:"::",_0:{ctor:"::",_0:t,_1:n},_1:{ctor:"::",_0:n,_1:e._1}}}return{ctor:"[]"}}),se=_(P,_e,{ctor:"::",_0:{ctor:"[]"},_1:{ctor:"[]"}}),le=(r(function(t,r){return _(F,ie(t),se(r))}),_(P,r(function(t,e){return{ctor:"::",_0:{ctor:"[]"},_1:_(Q,r(function(t,r){return{ctor:"::",_0:t,_1:r}})(t),e)}}),{ctor:"::",_0:{ctor:"[]"},_1:{ctor:"[]"}}),r(function(t,r){var e=r;if("[]"===e.ctor)return{ctor:"[]"};if("[]"===e._1.ctor)return{ctor:"::",_0:{ctor:"::",_0:e._0,_1:{ctor:"[]"}},_1:{ctor:"[]"}};var n=e._0,o=_(le,t,e._1);return"::"===o.ctor?_(t,n,e._1._0)?{ctor:"::",_0:{ctor:"::",_0:n,_1:o._0},_1:o._1}:{ctor:"::",_0:{ctor:"::",_0:n,_1:{ctor:"[]"}},_1:o}:{ctor:"[]"}})),fe=(r(function(t,e){var n=r(function(t,r){var e=r;return"Nothing"===e.ctor?E:"[]"===e._0.ctor?E:h.eq(t,e._0._0)?C(e._0._1):E});return s(V,n,C(e),t)}),r(function(t,r){return{ctor:"_Tuple2",_0:_(ut,t,r),_1:_(z,t,r)}})),de=e(function(t,r,e){for(;;){var n={ctor:"_Tuple2",_0:t,_1:r};if("_Tuple2"!==n.ctor||"::"!==n._0.ctor||"::"!==n._1.ctor)return Y(e);var o=_(fe,n._0._0,r),c=o._0,u=o._1,i=n._0._1,a=u,s={ctor:"::",_0:c,_1:e};t=i,r=a,e=s}}),pe=(r(function(t,r){return s(de,t,r,{ctor:"[]"})}),r(function(t,r){var e=t(r);return"Nothing"===e.ctor?{ctor:"[]"}:{ctor:"::",_0:e._0._0,_1:_(pe,t,e._0._1)}})),he=r(function(t,r){var e=r;if("[]"===e.ctor)return{ctor:"[]"};if("[]"===e._1.ctor)return{ctor:"::",_0:e._0,_1:{ctor:"[]"}};var n=_(he,t,e._1);return"::"===n.ctor?{ctor:"::",_0:_(t,e._0,n._0),_1:n}:{ctor:"[]"}}),ge=e(function(t,r,e){var n=e;if("[]"===n.ctor)return{ctor:"::",_0:r,_1:{ctor:"[]"}};var o=s(ge,t,r,n._1);return"::"===o.ctor?{ctor:"::",_0:_(t,n._0,o._0),_1:o}:{ctor:"[]"}}),ve=(r(function(t,r){var e=r;return"[]"===e.ctor?{ctor:"[]"}:s(Z,t,e._0,e._1)}),e(function(t,e,n){var o=r(function(r,e){var n=e,o=n._0;return{ctor:"_Tuple2",_0:o-1,_1:s(t,o,r,n._1)}});return jt(s(P,o,{ctor:"_Tuple2",_0:j(n)-1,_1:e},n))}),e(function(t,e,n){var o=r(function(r,e){var n=e,o=n._0;return{ctor:"_Tuple2",_0:o+1,_1:s(t,o,r,n._1)}});return jt(s(V,o,{ctor:"_Tuple2",_0:0,_1:e},n))}),r(function(t,e){var n=r(function(r,e){return C(function(){var n=e;return"Nothing"===n.ctor?r:_(t,r,n._0)}())});return s(P,n,E,e)}),r(function(t,e){var n=r(function(r,e){return C(function(){var n=e;return"Nothing"===n.ctor?r:_(t,n._0,r)}())});return s(V,n,E,e)})),me=e(function(t,r,e){t:for(;;){var n={ctor:"_Tuple2",_0:t,_1:r};r:do{if("::"===n._0.ctor){if("::"===n._1.ctor){var o=n._0._1,c=n._1._1,u=_(y["++"],e,{ctor:"::",_0:n._0._0,_1:{ctor:"::",_0:n._1._0,_1:{ctor:"[]"}}});t=o,r=c,e=u;continue t}break r}if("[]"===n._1.ctor)break r;return _(y["++"],e,n._1)}while(!1);return _(y["++"],e,n._0)}}),be=(r(function(t,r){return s(me,t,r,{ctor:"[]"})}),function(t){var e=t;return"[]"===e.ctor?{ctor:"::",_0:{ctor:"[]"},_1:{ctor:"[]"}}:_(et,function(t){var e=t;return _(Q,r(function(t,r){return{ctor:"::",_0:t,_1:r}})(e._0),be(e._1))},ae(e))}),ye=(r(function(t,r){return _(J,t,be(r))}),function(t){var e=t;if("[]"===e.ctor)return{ctor:"[]"};var n=e._0,o=r(function(t,r){return{ctor:"::",_0:t,_1:{ctor:"::",_0:{ctor:"::",_0:n,_1:t},_1:r}}});return{ctor:"::",_0:{ctor:"::",_0:n,_1:{ctor:"[]"}},_1:s(P,o,{ctor:"[]"},ye(e._1))}}),ke=function(t){return{ctor:"::",_0:{ctor:"[]"},_1:ye(t)}},Te=(r(function(t,r){return _(J,t,ke(r))}),r(function(t,r){return _(K,function(r){return!t(r)},r)}),r(function(t,r){if(h.cmp(t,0)<0)return r;var e=U(_(z,t,r)),n=_(ut,t,r),o=e;return"Nothing"===o.ctor?r:_(tt,n,o._0)}),r(function(t,e){var n=r(function(r,e){var n=r,o=e,c=_(t,n._0,o._0);return"EQ"===c.ctor?_(T,n._1,o._1):c}),o=_(lt,r(function(t,r){return{ctor:"_Tuple2",_0:r,_1:t}}),e);return _(Q,Jt,_(S,n,o))}),e(function(t,r,e){if(h.cmp(t,0)<0)return E;var n=U(_(z,t,e)),o=_(ut,t,e),c=n;return"Nothing"===c.ctor?E:C(_(tt,o,{ctor:"::",_0:r,_1:c._0}))}),r(function(t,r){var e=r;if("[]"===e.ctor)return{ctor:"[]"};var n=e._1,o=e._0;return h.eq(t,o)?n:{ctor:"::",_0:o,_1:_(Te,t,n)}})),we=e(function(t,e,n){return _(lt,r(function(r,n){return t(r)?e(n):n}),n)}),xe=(e(function(t,e,n){return h.cmp(t,0)<0||h.cmp(t,j(n))>-1?E:C(s(we,r(function(t,r){return h.eq(t,r)})(t),e,n))}),e(function(t,r,e){return _(Q,function(e){return t(e)?r(e):e},e)})),Be=(e(function(t,r,e){return s(xe,t,m(r),e)}),function(t){return function(e){return _(Q,Jt,_(K,function(r){return t(r._1)},_(lt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),e)))}}),Ee=function(t){return function(r){return W(_(Be,t,r))}},Ae=(r(function(t,r){return _(N,function(t){return _(fe,t,r)},_(Ee,t,r))}),r(function(t,r){for(;;){var e=r;if("[]"===e.ctor)return E;var n=e._0;if(t(n))return C(n);var o=t,c=e._1;t=o,r=c}}),et),Ce=(e(function(t,r,e){return _(Ae,function(r){return _(Ae,function(e){return{ctor:"::",_0:_(t,r,e),_1:{ctor:"[]"}}},e)},r)}),n(function(t,r,e,n){return _(Ae,function(r){return _(Ae,function(e){return _(Ae,function(n){return{ctor:"::",_0:s(t,r,e,n),_1:{ctor:"[]"}}},n)},e)},r)}),o(function(t,r,e,n,o){return _(Ae,function(r){return _(Ae,function(e){return _(Ae,function(n){return _(Ae,function(o){return{ctor:"::",_0:l(t,r,e,n,o),_1:{ctor:"[]"}}},o)},n)},e)},r)}),r(function(t,e){return s(M,r(function(t,r){return t(r)}),e,t)}),e(function(t,r,e){for(;;){var n=e;if("[]"===n.ctor)return{ctor:"[]"};var o=n._1,c=n._0,u=t(c);if(!_(Zr,u,r))return{ctor:"::",_0:c,_1:s(Ce,t,_(ee,u,r),o)};var i=t,a=r,l=o;t=i,r=a,e=l}})),Ne=r(function(t,r){return s(Ce,t,re,r)}),Re=(r(function(t,r){return h.eq(j(r),j(_(Ne,t,r)))}),r(function(t,r){for(;;){var e=r;if("[]"===e.ctor)return{ctor:"[]"};if(!t(e._0))return r;var n=t,o=e._1;t=n,r=o}})),$e=function(t){return r(function(r,e){for(;;){var n=e;if("[]"===n.ctor)return Y(r);var o=n._0;if(!t(o))return Y(r);var c={ctor:"::",_0:o,_1:r},u=n._1;r=c,e=u}})({ctor:"[]"})},Se=r(function(t,r){return{ctor:"_Tuple2",_0:_($e,t,r),_1:_(Re,t,r)}}),Le=function(t){return Se(function(r){return!t(r)})},ze=r(function(t,r){var e=r;if("[]"===e.ctor)return{ctor:"[]"};var n=e._0,o=_(Se,t(n),e._1),c=o._0,u=o._1;return{ctor:"::",_0:{ctor:"::",_0:n,_1:c},_1:_(ze,t,u)}}),Ie=(ze(r(function(t,r){return h.eq(t,r)})),r(function(t,e){var n=r(function(r,e){var n=e,o=n._1,c=t(r);return h.cmp(c,o)<0?{ctor:"_Tuple2",_0:r,_1:c}:{ctor:"_Tuple2",_0:n._0,_1:o}}),o=e;if("::"===o.ctor){if("[]"===o._1.ctor)return C(o._0);var c=o._0;return C(Jt(s(V,n,{ctor:"_Tuple2",_0:c,_1:t(c)},o._1)))}return E}),r(function(t,e){var n=r(function(r,e){var n=e,o=n._1,c=t(r);return h.cmp(c,o)>0?{ctor:"_Tuple2",_0:r,_1:c}:{ctor:"_Tuple2",_0:n._0,_1:o}}),o=e;if("::"===o.ctor){if("[]"===o._1.ctor)return C(o._0);var c=o._0;return C(Jt(s(V,n,{ctor:"_Tuple2",_0:c,_1:t(c)},o._1)))}return E}),function(t){var r=t;return"[]"===r.ctor?E:C({ctor:"_Tuple2",_0:r._0,_1:r._1})}),Oe=(e(function(t,e,n){for(;;){if(h.eq(t,e))return C(n);if(!(h.cmp(t,e)>0)){if(h.cmp(t,0)<0)return E;var o=_(fe,t,n),c=o._0,u=o._1,i=_(fe,e-t,u),a=i._0,l=i._1;return s(R,r(function(t,r){var e=t,n=r;return rt({ctor:"::",_0:c,_1:{ctor:"::",_0:{ctor:"::",_0:n._0,_1:e._1},_1:{ctor:"::",_0:{ctor:"::",_0:e._0,_1:n._1},_1:{ctor:"[]"}}}})}),Ie(a),Ie(l))}var f=e,d=t,p=n;t=f,e=d,n=p}}),r(function(t,r){var e=t(r);return"Just"===e.ctor?{ctor:"::",_0:r,_1:_(Oe,t,e._0)}:{ctor:"::",_0:r,_1:{ctor:"[]"}}})),qe=r(function(t,r){return h.cmp(t,0)<0?E:W(_(z,t,r))}),Me=Me||{};Me["!!"]=v(qe);var Fe,De=(function(){var t=r(function(t,r){return function(e){return _(B,t,_(N,r,e))}});_(P,function(e){return function(n){return C(s(t,{ctor:"[]"},r(function(t,r){return{ctor:"::",_0:t,_1:r}})(e),n))}},E)}(),ve(v(m)),function(){function t(t,r){if(t<0||t>=q(r))throw new Error("Index "+t+" is out of range. Check the length of your array first or use getMaybe or getWithDefault.");return n(t,r)}function n(t,r){for(var e=r.height;e>0;e--){for(var n=t>>5*e;r.lengths[n]<=t;)n++;n>0&&(t-=r.lengths[n-1]),r=r.table[n]}return r.table[t]}function o(t,r,e){return t<0||q(e)<=t?e:c(t,r,e)}function c(t,r,e){if(e=O(e),0===e.height)e.table[t]=r;else{var n=M(t,e);n>0&&(t-=e.lengths[n-1]),e.table[n]=c(t,r,e.table[n])}return e}function u(t,r){return t<=0?Q:i(r,Math.floor(Math.log(t)/Math.log(W)),0,t)}function i(t,r,e,n){if(0===r){for(var o=new Array((n-e)%(W+1)),c=0;c0?a[c-1]:0);return{ctor:"_Array",height:r,table:o,lengths:a}}function a(t){if("[]"===t.ctor)return Q;for(var r=new Array(W),e=[],n=0;"[]"!==t.ctor;)if(r[n]=t._0,t=t._1,++n===W){var o={ctor:"_Array",height:0,table:r};s(o,e),r=new Array(W),n=0}if(n>0){var o={ctor:"_Array",height:0,table:r.splice(0,n)};s(o,e)}for(var c=0;c0&&s(e[c],e);var u=e[e.length-1];return u.height>0&&1===u.table.length?u.table[0]:u}function s(t,r){var e=t.height;if(r.length===e){var n={ctor:"_Array",height:e+1,table:[],lengths:[]};r.push(n)}r[e].table.push(t);var o=q(t);r[e].lengths.length>0&&(o+=r[e].lengths[r[e].lengths.length-1]),r[e].lengths.push(o),r[e].table.length===W&&(s(r[e],r),r[e]={ctor:"_Array",height:e+1,table:[],lengths:[]})}function l(t,r){var e=f(t,r);return null!==e?e:P(r,F(t,r.height))}function f(t,r){if(0===r.height){if(r.table.length=0;e--)t=0===r.height?$.Cons(r.table[e],t):p(t,r.table[e]);return t}function h(t,r){var e={ctor:"_Array",height:r.height,table:new Array(r.table.length)};r.height>0&&(e.lengths=r.lengths);for(var n=0;n0&&(n.lengths=r.lengths);for(var o=0;o0?r.lengths[n-1]:0),r.table[n]);if(0===n)return o;var e={ctor:"_Array",height:r.height,table:r.table.slice(0,n),lengths:r.lengths.slice(0,n)};return o.table.length>0&&(e.table[n]=o,e.lengths[n]=q(o)+(n>0?e.lengths[n-1]:0)),e}function T(t,r){if(0===t)return r;if(0===r.height){var e={ctor:"_Array",height:0};return e.table=r.table.slice(t,r.table.length+1),e}var n=M(t,r),o=T(t-(n>0?r.lengths[n-1]:0),r.table[n]);if(n===r.table.length-1)return o;var e={ctor:"_Array",height:r.height,table:r.table.slice(n,r.table.length+1),lengths:new Array(r.table.length-n)};e.table[0]=o;for(var c=0,u=0;u0){for(var n=q(e[0]),o=0;o0){var c=A(t,r);c>H&&(e=L(e[0],e[1],c))}return P(e[0],e[1])}function x(t,r){if(0===t.height&&0===r.height)return[t,r];if(1!==t.height||1!==r.height)if(t.height===r.height){t=O(t),r=O(r);var e=x(z(t),I(r));B(t,e[1]),E(r,e[0])}else if(t.height>r.height){t=O(t);var e=x(z(t),r);B(t,e[0]),r=D(e[1],e[1].height+1)}else{r=O(r);var e=x(t,I(r)),n=0===e[0].table.length?0:1,o=0===n?1:0;E(r,e[n]),t=D(e[o],e[o].height+1)}if(0===t.table.length||0===r.table.length)return[t,r];var c=A(t,r);return c<=H?[t,r]:L(t,r,c)}function B(t,r){var e=t.table.length-1;t.table[e]=r,t.lengths[e]=q(r),t.lengths[e]+=e>0?t.lengths[e-1]:0}function E(t,r){if(r.table.length>0){t.table[0]=r,t.lengths[0]=q(r);for(var e=q(t.table[0]),n=1;n0&&(e.lengths=new Array(r)),e}function L(t,r,e){for(var n=S(t.height,Math.min(W,t.table.length+r.table.length-e)),o=S(t.height,n.table.length-(t.table.length+r.table.length-e)),c=0;C(t.table,r.table,c).table.length%W==0;)N(n.table,o.table,c,C(t.table,r.table,c)),N(n.lengths,o.lengths,c,C(t.lengths,r.lengths,c)),c++;for(var u=c,i=new S(t.height-1,0),a=0;c-u-(i.table.length>0?1:0)0)for(var l=i.lengths.length,f=l;f0?i.lengths[f-1]:0;a+=s,_.table.length<=s&&(c++,a=0),i.table.length===W&&(R(n,o,u,i),i=S(t.height-1,0),u++)}for(i.table.length>0&&(R(n,o,u,i),u++);c0&&(r.lengths=t.lengths.slice()),r}function q(t){return 0===t.height?t.table.length:t.lengths[t.lengths.length-1]}function M(t,r){for(var e=t>>5*r.height;r.lengths[e]<=t;)e++;return e}function F(t,r){return 0===r?{ctor:"_Array",height:0,table:[t]}:{ctor:"_Array",height:r,table:[F(t,r-1)],lengths:[1]}}function D(t,r){return r===t.height?t:{ctor:"_Array",height:r,table:[D(t,r-1)],lengths:[q(t)]}}function P(t,r){return{ctor:"_Array",height:t.height+1,table:[t,r],lengths:[q(t),q(t)+q(r)]}}function V(t){var r=new Array(q(t));return j(r,0,t),r}function j(t,r,e){for(var n=0;n0?u[i-1]:0);return{ctor:"_Array",height:r,table:c,lengths:u}}var W=32,H=2,Q={ctor:"_Array",height:0,table:[]};return{empty:Q,fromList:a,toList:d,initialize:r(u),append:r(w),push:r(l),slice:e(y),get:r(t),set:e(o),map:r(h),indexedMap:r(g),foldl:e(m),foldr:e(b),length:q,toJSArray:V,fromJSArray:J}}()),Pe=(De.append,De.length,De.slice,De.set,r(function(t,r){return h.cmp(0,t)<1&&h.cmp(t,De.length(r))<0?C(_(De.get,t,r)):E}),De.push,De.empty,r(function(t,e){var n=r(function(r,e){return t(r)?_(De.push,r,e):e});return s(De.foldl,n,De.empty,e)}),De.foldr,De.foldl,De.indexedMap,De.map,De.toList),Ve=(De.fromList,De.initialize),je=(r(function(t,r){return _(Ve,t,m(r))}),function(){function t(t){return{ctor:"",tag:"succeed",msg:t}}function _(t){return{ctor:"",tag:"fail",msg:t}}function s(t){return{ctor:"",tag:t}}function l(t,r){return{ctor:"",tag:t,decoder:r}}function f(t){return{ctor:"",tag:"null",value:t}}function d(t,r){return{ctor:"",tag:"field",field:t,decoder:r}}function p(t,r){return{ctor:"",tag:"index",index:t,decoder:r}}function g(t){return{ctor:"",tag:"key-value",decoder:t}}function v(t,r){return{ctor:"",tag:"map-many",func:t,decoders:r}}function m(t,r){return{ctor:"",tag:"andThen",decoder:r,callback:t}}function b(t){return{ctor:"",tag:"oneOf",decoders:t}}function y(t,r){return v(t,[r])}function k(t,r,e){return v(t,[r,e])}function T(t,r,e,n){return v(t,[r,e,n])}function w(t,r,e,n,o){return v(t,[r,e,n,o])}function x(t,r,e,n,o,c){return v(t,[r,e,n,o,c])}function B(t,r,e,n,o,c,u){return v(t,[r,e,n,o,c,u])}function A(t,r,e,n,o,c,u,i){return v(t,[r,e,n,o,c,u,i])}function N(t,r,e,n,o,c,u,i,a){return v(t,[r,e,n,o,c,u,i,a])}function R(t){return{tag:"ok",value:t}}function S(t,r){return{tag:"primitive",type:t,value:r}}function L(t,r){return{tag:"index",index:t,rest:r}}function z(t,r){return{tag:"field",field:t,rest:r}}function L(t,r){return{tag:"index",index:t,rest:r}}function I(t){return{tag:"oneOf",problems:t}}function O(t){return{tag:"fail",msg:t}}function q(t){for(var r="_";t;)switch(t.tag){case"primitive":return"Expecting "+t.type+("_"===r?"":" at "+r)+" but instead got: "+M(t.value);case"index":r+="["+t.index+"]",t=t.rest;break;case"field":r+="."+t.field,t=t.rest;break;case"oneOf":for(var e=t.problems,n=0;n=r.length)return S("a longer array. Need index "+a+" but there are only "+r.length+" entries",r);var o=P(t.decoder,r[a]);return"ok"===o.tag?o:L(a,o);case"key-value":if("object"!=typeof r||null===r||r instanceof Array)return S("an object",r);var _=$.Nil;for(var s in r){var o=P(t.decoder,r[s]);if("ok"!==o.tag)return z(s,o);var l=h.Tuple2(s,o.value);_=$.Cons(l,_)}return R(_);case"map-many":for(var f=t.func,d=t.decoders,n=0;n0&&e.push(S("p-thunk",n,s)));case"tagger":for(var l=t.tagger,f=r.tagger,d=!1,p=t.node;"tagger"===p.type;)d=!0,"object"!=typeof l?l=[l,p.tagger]:l.push(p.tagger),p=p.node;for(var h=r.node;"tagger"===h.type;)d=!0,"object"!=typeof f?f=[f,h.tagger]:f.push(h.tagger),h=h.node;return d&&l.length!==f.length?void e.push(S("p-redraw",n,r)):((d?z(l,f):l===f)||e.push(S("p-tagger",n,f)),void L(p,h,e,n+1));case"text":if(t.text!==r.text)return void e.push(S("p-text",n,r.text));return;case"node":if(t.tag!==r.tag||t.namespace!==r.namespace)return void e.push(S("p-redraw",n,r));var g=I(t.facts,r.facts);return void 0!==g&&e.push(S("p-facts",n,g)),void O(t,r,e,n);case"keyed-node":if(t.tag!==r.tag||t.namespace!==r.namespace)return void e.push(S("p-redraw",n,r));var g=I(t.facts,r.facts);return void 0!==g&&e.push(S("p-facts",n,g)),void q(t,r,e,n);case"custom":if(t.impl!==r.impl)return void e.push(S("p-redraw",n,r));var g=I(t.facts,r.facts);void 0!==g&&e.push(S("p-facts",n,g));var v=r.impl.diff(t,r);if(v)return void e.push(S("p-custom",n,v));return}}}function z(t,r){for(var e=0;ei?e.push(S("p-remove-last",n,u-i)):u0||u.length>0||void 0!==R)&&e.push(S("p-reorder",n,{patches:o,inserts:u,endInserts:R}))}function M(t,r,e,n,o,c){var u=t[e];if(void 0===u)return u={tag:"insert",vnode:n,index:o,data:void 0},c.push({index:o,entry:u}),void(t[e]=u);if("remove"===u.tag){c.push({index:o,entry:u}),u.tag="move";var i=[];return L(u.vnode,n,i,u.index),u.index=o,void(u.data.data={patches:i,entry:u})}M(t,r,e+gt,n,o,c)}function F(t,r,e,n,o){var c=t[e];if(void 0===c){var u=S("p-remove",o,void 0);return r.push(u),void(t[e]={tag:"remove",vnode:n,index:o,data:u})}if("insert"===c.tag){c.tag="move";var i=[];L(n,c.vnode,i,o);var u=S("p-remove",o,{patches:i,entry:c});return void r.push(u)}F(t,r,e+gt,n,o)}function D(t,r,e,n){P(t,r,e,0,0,r.descendantsCount,n)}function P(t,r,e,n,o,c,u){for(var i=e[n],a=i.index;a===o;){var _=i.type;if("p-thunk"===_)D(t,r.node,i.data,u);else if("p-reorder"===_){i.domNode=t,i.eventNode=u;var s=i.data.patches;s.length>0&&P(t,r,s,0,o,c,u)}else if("p-remove"===_){i.domNode=t,i.eventNode=u;var l=i.data;if(void 0!==l){l.entry.data=t;var s=l.patches;s.length>0&&P(t,r,s,0,o,c,u)}}else i.domNode=t,i.eventNode=u;if(n++,!(i=e[n])||(a=i.index)>c)return n}switch(r.type){case"tagger":for(var f=r.node;"tagger"===f.type;)f=f.node;return P(t,f,e,n,o+1,c,t.elm_event_node_ref);case"node":for(var d=r.children,p=t.childNodes,h=0;hc))return n;o=v}return n;case"keyed-node":for(var d=r.children,p=t.childNodes,h=0;hc))return n;o=v}return n;case"text":case"thunk":throw new Error("should never traverse `text` or `thunk` nodes like this")}}function V(t,r,e,n){return 0===e.length?t:(D(t,r,e,n),j(t,e))}function j(t,r){for(var e=0;e
    "),new Error(t)}function Z(t,r,e,n){r.embed=function(r,e){for(;r.lastChild;)r.removeChild(r.lastChild);return Ut.initialize(n(t.init,e,r),t.update,t.subscriptions,tt(r,t.view))},r.fullscreen=function(r){return Ut.initialize(n(t.init,r,document.body),t.update,t.subscriptions,tt(document.body,t.view))}}function tt(t,r){return function(e,n){var o={tagger:e,parent:void 0},c=r(n),u=x(c,o);return t.appendChild(u),rt(u,r,c,o)}}function rt(t,r,e,n){function o(){switch(u){case"NO_REQUEST":throw new Error("Unexpected draw callback.\nPlease report this to .");case"PENDING_REQUEST":bt(o),u="EXTRA_REQUEST";var e=r(c),a=$(i,e);return t=V(t,i,a,n),void(i=e);case"EXTRA_REQUEST":return void(u="NO_REQUEST")}}var c,u="NO_REQUEST",i=e;return function(t){"NO_REQUEST"===u&&bt(o),u="PENDING_REQUEST",c=t}}function et(t,r,e,n){r.fullscreen=function(r){var o={doc:void 0};return Ut.initialize(n(t.init,r,document.body),t.update(nt(o)),t.subscriptions,ot(e,document.body,o,t.view,t.viewIn,t.viewOut))},r.embed=function(r,o){var c={doc:void 0};return Ut.initialize(n(t.init,o,r),t.update(nt(c)),t.subscriptions,ot(e,r,c,t.view,t.viewIn,t.viewOut))}}function nt(t){return Wt.nativeBinding(function(r){var e=t.doc;if(e){var n=e.getElementsByClassName("debugger-sidebar-messages")[0];n&&(n.scrollTop=n.scrollHeight)}r(Wt.succeed(h.Tuple0))})}function ot(t,r,e,n,o,c){return function(u,i){var a={tagger:u,parent:void 0},_={tagger:u,parent:void 0},s=n(i),l=x(s,a);r.appendChild(l);var f=rt(l,n,s,a),d=o(i)._1,p=x(d,_);r.appendChild(p);var h=it(a,p,o),g=rt(p,h,d,_),v=ct(i,c,_,r,t,e);return function(t){f(t),g(t),v(t)}}}function ct(t,r,e,n,o,c){var u,i;return function(t){if(t.isDebuggerOpen){if(!c.doc)return u=r(t),void(i=ut(o,c,u,e));ht=c.doc;var n=r(t),a=$(u,n);i=V(i,u,a,e),u=n,ht=document}}}function ut(t,r,e,n){function o(){r.doc=void 0,i.close()}var c=screen.width-900,u=screen.height-360,i=window.open("","","width=900,height=360,left="+c+",top="+u);ht=i.document,r.doc=ht,ht.title="Debugger - "+t,ht.body.style.margin="0",ht.body.style.padding="0";var a=x(e,n);return ht.body.appendChild(a),ht.addEventListener("keydown",function(t){t.metaKey&&82===t.which&&window.location.reload(),38===t.which&&(n.tagger({ctor:"Up"}),t.preventDefault()),40===t.which&&(n.tagger({ctor:"Down"}),t.preventDefault())}),window.addEventListener("unload",o),i.addEventListener("unload",function(){r.doc=void 0,window.removeEventListener("unload",o),n.tagger({ctor:"Close"})}),ht=document,a}function it(t,r,e){var n,o=st(r),c="Normal",u=t.tagger,i=function(){};return function(r){var a=e(r),_=a._0.ctor;return t.tagger="Normal"===_?u:i,c!==_&&(at("removeEventListener",o,c),at("addEventListener",o,_),"Normal"===c&&(n=document.body.style.overflow,document.body.style.overflow="hidden"),"Normal"===_&&(document.body.style.overflow=n),c=_),a._1}}function at(t,r,e){switch(e){case"Normal":return;case"Pause":return _t(t,r,yt);case"Message":return _t(t,r,kt)}}function _t(t,r,e){for(var n=0;n=0?hljs.highlight(e,r,!0).value:r}var e=t.githubFlavored;return"Just"===e.ctor?{highlight:r,gfm:!0,tables:e._0.tables,breaks:e._0.breaks,sanitize:t.sanitize,smartypants:t.smartypants}:{highlight:r,gfm:!1,tables:!1,breaks:!1,sanitize:t.sanitize,smartypants:t.smartypants}}var u={render:r,diff:n},i=function(){var t={},r=t.exports={};return function(){function e(t){this.tokens=[],this.tokens.links={},this.options=t||l.defaults,this.rules=f.normal,this.options.gfm&&(this.options.tables?this.rules=f.tables:this.rules=f.gfm)}function n(t,r){if(this.options=r||l.defaults,this.links=t,this.rules=d.normal,this.renderer=this.options.renderer||new o,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=d.breaks:this.rules=d.gfm:this.options.pedantic&&(this.rules=d.pedantic)}function o(t){this.options=t||{}}function c(t){this.tokens=[],this.token=null,this.options=t||l.defaults,this.options.renderer=this.options.renderer||new o,this.renderer=this.options.renderer,this.renderer.options=this.options}function u(t,r){return t.replace(r?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(t){return t.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(t,r){return r=r.toLowerCase(),"colon"===r?":":"#"===r.charAt(0)?"x"===r.charAt(1)?String.fromCharCode(parseInt(r.substring(2),16)):String.fromCharCode(+r.substring(1)):""})}function a(t,r){return t=t.source,r=r||"",function e(n,o){return n?(o=o.source||o,o=o.replace(/(^|[^\[])\^/g,"$1"),t=t.replace(n,o),e):new RegExp(t,r)}}function _(){}function s(t){for(var r,e,n=1;nAn error occured:

    "+u(t.message+"",!0)+"
    ";throw t}}var f={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:_,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:_,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:_,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};f.bullet=/(?:[*+-]|\d+\.)/,f.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,f.item=a(f.item,"gm")(/bull/g,f.bullet)(),f.list=a(f.list)(/bull/g,f.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+f.def.source+")")(),f.blockquote=a(f.blockquote)("def",f.def)(),f._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",f.html=a(f.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,f._tag)(),f.paragraph=a(f.paragraph)("hr",f.hr)("heading",f.heading)("lheading",f.lheading)("blockquote",f.blockquote)("tag","<"+f._tag)("def",f.def)(),f.normal=s({},f),f.gfm=s({},f.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),f.gfm.paragraph=a(f.paragraph)("(?!","(?!"+f.gfm.fences.source.replace("\\1","\\2")+"|"+f.list.source.replace("\\1","\\3")+"|")(),f.tables=s({},f.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=f,e.lex=function(t,r){return new e(r).lex(t)},e.prototype.lex=function(t){return t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(t,!0)},e.prototype.token=function(t,r,e){for(var n,o,c,u,i,a,_,s,l,t=t.replace(/^ +$/gm,"");t;)if((c=this.rules.newline.exec(t))&&(t=t.substring(c[0].length),c[0].length>1&&this.tokens.push({type:"space"})),c=this.rules.code.exec(t))t=t.substring(c[0].length),c=c[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?c:c.replace(/\n+$/,"")});else if(c=this.rules.fences.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"code",lang:c[2],text:c[3]||""});else if(c=this.rules.heading.exec(t))t=t.substring(c[0].length),this.tokens.push({type:"heading",depth:c[1].length,text:c[2]});else if(r&&(c=this.rules.nptable.exec(t))){for(t=t.substring(c[0].length),a={type:"table",header:c[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:c[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:c[3].replace(/\n$/,"").split("\n")},s=0;s ?/gm,""),this.token(c,r,!0),this.tokens.push({type:"blockquote_end"});else if(c=this.rules.list.exec(t)){for(t=t.substring(c[0].length),u=c[2],this.tokens.push({type:"list_start",ordered:u.length>1}),c=c[0].match(this.rules.item),n=!1,l=c.length,s=0;s1&&i.length>1||(t=c.slice(s+1).join("\n")+t,s=l-1)),o=n||/\n\n(?!\s*$)/.test(a),s!==l-1&&(n="\n"===a.charAt(a.length-1),o||(o=n)),this.tokens.push({type:o?"loose_item_start":"list_item_start"}),this.token(a,!1,e),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(c=this.rules.html.exec(t))t=t.substring(c[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===c[1]||"script"===c[1]||"style"===c[1]),text:c[0]});else if(!e&&r&&(c=this.rules.def.exec(t)))t=t.substring(c[0].length),this.tokens.links[c[1].toLowerCase()]={href:c[2],title:c[3]};else if(r&&(c=this.rules.table.exec(t))){for(t=t.substring(c[0].length),a={type:"table",header:c[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:c[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:c[3].replace(/(?: *\| *)?\n$/,"").split("\n")},s=0;s])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:_,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:_,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,d.link=a(d.link)("inside",d._inside)("href",d._href)(),d.reflink=a(d.reflink)("inside",d._inside)(),d.normal=s({},d),d.pedantic=s({},d.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),d.gfm=s({},d.normal,{escape:a(d.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:a(d.text)("]|","~]|")("|","|https?://|")()}),d.breaks=s({},d.gfm,{br:a(d.br)("{2,}","*")(),text:a(d.gfm.text)("{2,}","*")()}),n.rules=d,n.output=function(t,r,e){return new n(r,e).output(t)},n.prototype.output=function(t){for(var r,e,n,o,c="";t;)if(o=this.rules.escape.exec(t))t=t.substring(o[0].length),c+=o[1];else if(o=this.rules.autolink.exec(t))t=t.substring(o[0].length),"@"===o[2]?(e=":"===o[1].charAt(6)?this.mangle(o[1].substring(7)):this.mangle(o[1]),n=this.mangle("mailto:")+e):(e=u(o[1]),n=e),c+=this.renderer.link(n,null,e);else if(this.inLink||!(o=this.rules.url.exec(t))){if(o=this.rules.tag.exec(t))!this.inLink&&/^
    /i.test(o[0])&&(this.inLink=!1),t=t.substring(o[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):u(o[0]):o[0];else if(o=this.rules.link.exec(t))t=t.substring(o[0].length),this.inLink=!0,c+=this.outputLink(o,{href:o[2],title:o[3]}),this.inLink=!1;else if((o=this.rules.reflink.exec(t))||(o=this.rules.nolink.exec(t))){if(t=t.substring(o[0].length),r=(o[2]||o[1]).replace(/\s+/g," "),!(r=this.links[r.toLowerCase()])||!r.href){c+=o[0].charAt(0),t=o[0].substring(1)+t;continue}this.inLink=!0,c+=this.outputLink(o,r),this.inLink=!1}else if(o=this.rules.strong.exec(t))t=t.substring(o[0].length),c+=this.renderer.strong(this.output(o[2]||o[1]));else if(o=this.rules.em.exec(t))t=t.substring(o[0].length),c+=this.renderer.em(this.output(o[2]||o[1]));else if(o=this.rules.code.exec(t))t=t.substring(o[0].length),c+=this.renderer.codespan(u(o[2],!0));else if(o=this.rules.br.exec(t))t=t.substring(o[0].length),c+=this.renderer.br();else if(o=this.rules.del.exec(t))t=t.substring(o[0].length),c+=this.renderer.del(this.output(o[1]));else if(o=this.rules.text.exec(t))t=t.substring(o[0].length),c+=this.renderer.text(u(this.smartypants(o[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else t=t.substring(o[0].length),e=u(o[1]),n=e,c+=this.renderer.link(n,null,e);return c},n.prototype.outputLink=function(t,r){var e=u(r.href),n=r.title?u(r.title):null;return"!"!==t[0].charAt(0)?this.renderer.link(e,n,this.output(t[1])):this.renderer.image(e,n,u(t[1]))},n.prototype.smartypants=function(t){return this.options.smartypants?t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):t},n.prototype.mangle=function(t){if(!this.options.mangle)return t;for(var r,e="",n=t.length,o=0;o.5&&(r="x"+r.toString(16)),e+="&#"+r+";";return e},o.prototype.code=function(t,r,e){if(this.options.highlight){var n=this.options.highlight(t,r);null!=n&&n!==t&&(e=!0,t=n)}return r?'
    '+(e?t:u(t,!0))+"\n
    \n":"
    "+(e?t:u(t,!0))+"\n
    "},o.prototype.blockquote=function(t){return"
    \n"+t+"
    \n"},o.prototype.html=function(t){return t},o.prototype.heading=function(t,r,e){return"'+t+"\n"},o.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},o.prototype.list=function(t,r){var e=r?"ol":"ul";return"<"+e+">\n"+t+"\n"},o.prototype.listitem=function(t){return"
  • "+t+"
  • \n"},o.prototype.paragraph=function(t){return"

    "+t+"

    \n"},o.prototype.table=function(t,r){return"\n\n"+t+"\n\n"+r+"\n
    \n"},o.prototype.tablerow=function(t){return"\n"+t+"\n"},o.prototype.tablecell=function(t,r){var e=r.header?"th":"td";return(r.align?"<"+e+' style="text-align:'+r.align+'">':"<"+e+">")+t+"\n"},o.prototype.strong=function(t){return""+t+""},o.prototype.em=function(t){return""+t+""},o.prototype.codespan=function(t){return""+t+""},o.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},o.prototype.del=function(t){return""+t+""},o.prototype.link=function(t,r,e){if(this.options.sanitize){try{var n=decodeURIComponent(i(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return""}var o='
    "},o.prototype.image=function(t,r,e){var n=''+e+'":">"},o.prototype.text=function(t){return t},c.parse=function(t,r,e){return new c(r,e).parse(t)},c.prototype.parse=function(t){this.inline=new n(t.links,this.options,this.renderer),this.tokens=t.reverse();for(var r="";this.next();)r+=this.tok();return r},c.prototype.next=function(){return this.token=this.tokens.pop()},c.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},c.prototype.parseText=function(){for(var t=this.token.text;"text"===this.peek().type;)t+="\n"+this.next().text;return this.inline.output(t)},c.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var t,r,e,n,o="",c="";for(e="",t=0;t"]=r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}});var _n=function(t){var r=t;return"TypeApplication"===r.ctor?{ctor:"::",_0:r._0,_1:_n(r._1)}:{ctor:"::",_0:r,_1:{ctor:"[]"}}},sn=function(t){var r=t;return"Application"===r.ctor?_(y["++"],sn(r._0),{ctor:"::",_0:r._1,_1:{ctor:"[]"}}):{ctor:"::",_0:r,_1:{ctor:"[]"}}},ln={ctor:"::",_0:"isTuple",_1:{ctor:"::",_0:"abs",_1:{ctor:"::",_0:"apply",_1:{ctor:"::",_0:"apply",_1:{ctor:"::",_0:"binary_part",_1:{ctor:"::",_0:"bit_size",_1:{ctor:"::",_0:"byte_size",_1:{ctor:"::",_0:"div",_1:{ctor:"::",_0:"elem",_1:{ctor:"::",_0:"exit",_1:{ctor:"::",_0:"function_exported?",_1:{ctor:"::",_0:"get_and_update_in",_1:{ctor:"::",_0:"get_in",_1:{ctor:"::",_0:"hd",_1:{ctor:"::",_0:"inspect",_1:{ctor:"::",_0:"inspect",_1:{ctor:"::",_0:"is_atom",_1:{ctor:"::",_0:"is_binary",_1:{ctor:"::",_0:"is_bitstring",_1:{ctor:"::",_0:"is_boolean",_1:{ctor:"::",_0:"is_float",_1:{ctor:"::",_0:"is_function",_1:{ctor:"::",_0:"is_function",_1:{ctor:"::",_0:"is_integer",_1:{ctor:"::",_0:"is_list",_1:{ctor:"::",_0:"is_map",_1:{ctor:"::",_0:"is_number",_1:{ctor:"::",_0:"is_pid",_1:{ctor:"::",_0:"is_port",_1:{ctor:"::",_0:"is_reference",_1:{ctor:"::",_0:"is_tuple",_1:{ctor:"::",_0:"length",_1:{ctor:"::",_0:"macro_exported?",_1:{ctor:"::",_0:"make_ref",_1:{ctor:"::",_0:"map_size",_1:{ctor:"::",_0:"max",_1:{ctor:"::",_0:"min",_1:{ctor:"::",_0:"node",_1:{ctor:"::",_0:"node",_1:{ctor:"::",_0:"not",_1:{ctor:"::",_0:"pop_in",_1:{ctor:"::",_0:"put_elem",_1:{ctor:"::",_0:"put_in",_1:{ctor:"::",_0:"rem",_1:{ctor:"::",_0:"round",_1:{ctor:"::",_0:"self",_1:{ctor:"::",_0:"send",_1:{ctor:"::",_0:"spawn",_1:{ctor:"::",_0:"spawn",_1:{ctor:"::",_0:"spawn_link",_1:{ctor:"::",_0:"spawn_link",_1:{ctor:"::",_0:"spawn_monitor",_1:{ctor:"::",_0:"spawn_monitor",_1:{ctor:"::",_0:"struct",_1:{ctor:"::",_0:"struct",_1:{ctor:"::",_0:"struct!",_1:{ctor:"::",_0:"struct!",_1:{ctor:"::",_0:"throw",_1:{ctor:"::",_0:"tl",_1:{ctor:"::",_0:"trunc",_1:{ctor:"::",_0:"tuple_size",_1:{ctor:"::",_0:"update_in",_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},fn={ctor:"::",_0:"cons",_1:{ctor:"::",_0:"compare",_1:{ctor:"::",_0:"xor",_1:{ctor:"::",_0:"negate",_1:{ctor:"::",_0:"sqrt",_1:{ctor:"::",_0:"clamp",_1:{ctor:"::",_0:"logBase",_1:{ctor:"::",_0:"e",_1:{ctor:"::",_0:"pi",_1:{ctor:"::",_0:"cos",_1:{ctor:"::",_0:"sin",_1:{ctor:"::",_0:"tan",_1:{ctor:"::",_0:"acos",_1:{ctor:"::",_0:"asin",_1:{ctor:"::",_0:"atan",_1:{ctor:"::",_0:"atan2",_1:{ctor:"::",_0:"round",_1:{ctor:"::",_0:"floor",_1:{ctor:"::",_0:"ceiling",_1:{ctor:"::",_0:"truncate",_1:{ctor:"::",_0:"toFloat",_1:{ctor:"::",_0:"toString",_1:{ctor:"::",_0:"identity",_1:{ctor:"::",_0:"always",_1:{ctor:"::",_0:"flip",_1:{ctor:"::",_0:"tuple2",_1:{ctor:"::",_0:"tuple3",_1:{ctor:"::",_0:"tuple4",_1:{ctor:"::",_0:"tuple5",_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},dn={ctor:"::",_0:"fn",_1:{ctor:"::",_0:"do",_1:{ctor:"::",_0:"end",_1:{ctor:"::",_0:"cond",_1:{ctor:"::",_0:"receive",_1:{ctor:"::",_0:"or",_1:{ctor:"::",_0:"and",_1:{ctor:"::",_0:"quote",_1:{ctor:"::",_0:"unquote",_1:{ctor:"::",_0:"unquote_splicing",_1:{ctor:"::",_0:"module",_1:{ctor:"[]"}}}}}}}}}}}},pn=function(t){return _(J,t,dn)?_(y["++"],t,"__"):t},hn=function(t){return _(J,t,{ctor:"::",_0:"Basics",_1:{ctor:"::",_0:"Bitwise",_1:{ctor:"::",_0:"Char",_1:{ctor:"::",_0:"Date",_1:{ctor:"::",_0:"Debug",_1:{ctor:"::",_0:"Dict",_1:{ctor:"::",_0:"List",_1:{ctor:"::",_0:"String",_1:{ctor:"::",_0:"Maybe",_1:{ctor:"::",_0:"Regex",_1:{ctor:"::",_0:"Result",_1:{ctor:"::",_0:"Set",_1:{ctor:"::",_0:"String",_1:{ctor:"::",_0:"Tuple",_1:{ctor:"[]"}}}}}}}}}}}}}}})},gn=function(t){return hn(t)?_(y["++"],"Elchemy.X",t):t},vn=_(lt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),{ctor:"::",_0:h.chr("+"),_1:{ctor:"::",_0:h.chr("-"),_1:{ctor:"::",_0:h.chr("/"),_1:{ctor:"::",_0:h.chr("*"),_1:{ctor:"::",_0:h.chr("="),_1:{ctor:"::",_0:h.chr("."),_1:{ctor:"::",_0:h.chr("$"),_1:{ctor:"::",_0:h.chr("<"),_1:{ctor:"::",_0:h.chr(">"),_1:{ctor:"::",_0:h.chr(":"),_1:{ctor:"::",_0:h.chr("&"),_1:{ctor:"::",_0:h.chr("|"),_1:{ctor:"::",_0:h.chr("^"),_1:{ctor:"::",_0:h.chr("?"),_1:{ctor:"::",_0:h.chr("%"),_1:{ctor:"::",_0:h.chr("#"),_1:{ctor:"::",_0:h.chr("@"),_1:{ctor:"::",_0:h.chr("~"),_1:{ctor:"::",_0:h.chr("!"),_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}),mn=function(t){var r=_(K,function(r){var e=r;return h.eq(t,e._1)},vn);return"::"===r.ctor&&"_Tuple2"===r._0.ctor?_(y["++"],"op",k(r._0._0)):h.crashCase("Helpers",{start:{line:433,column:5},end:{line:440,column:37}},r)("Illegal op")},bn=function(t){return s(v,r(function(t,r){return _(y["++"],t,r)}),"__",_(Lt,"",_(Q,mn,kt(t))))},yn=function(t){return l(tr,or,er("\\\\"),m("\\\\"),t)},kn=r(function(t,e){return _(Q,r(function(t,r){return _(y["++"],t,r)})(t),_(Q,k,_(st,1,e)))}),Tn=kn("x"),wn=s(V,g(jr),Er,{ctor:"::",_0:{ctor:"_Tuple2",_0:"||",_1:"||"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"&&",_1:"&&"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"==",_1:"=="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"/=",_1:"!="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<",_1:"<"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:">",_1:">"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:">=",_1:">="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<=",_1:"<="},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"++",_1:"++"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"+",_1:"+"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"-",_1:"-"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"*",_1:"*"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"/",_1:"/"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:">>",_1:">>>"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<|",_1:""},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"<<",_1:""},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"|>",_1:"|>"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"%",_1:"rem"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"//",_1:"div"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"^",_1:""},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"::",_1:"cons"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"not",_1:"!"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",",_1:"tuple2"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",,",_1:"tuple3"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",,,",_1:"tuple4"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:",,,,",_1:"tuple5"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"as",_1:"="},_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}}}}}}}}}),xn=function(t){var r=_(dr,t,wn);return"Just"===r.ctor?""===r._0?h.crashCase("Helpers",{start:{line:219,column:5},end:{line:229,column:25}},r)(_(y["++"],t," is not a valid or not implemented yet operator")):r._0:bn(t)},Bn=(s(tr,or,er("(^\\{|\\}$)"),function(t){return""}),e(function(t,r,e){var n=e;return"[]"===n.ctor?r:t(n)})),En=function(t){var r=t;return"::"===r.ctor?{ctor:"_Tuple2",_0:C(r._0),_1:r._1}:{ctor:"_Tuple2",_0:E,_1:{ctor:"[]"}}},An=function(t){return _(Pt,Y,En(Y(t)))},Cn=r(function(t,r){return function(t){var r=t;return{ctor:"_Tuple2",_0:r._1,_1:r._0}}(_(Vt,B(""),_(Pt,function(r){return s(Bn,Lt("."),t,Y(r))},En(Y(r)))))}),Nn=r(function(t,r){return _(Lt,"\n",_(Q,function(r){return h.eq(Nt(r),"")?r:_(y["++"],t,r)},At(r)))}),Rn=function(t){return _(Lt,"",_(at,2*(t+1)," "))},$n=function(t){return _(y["++"],"\n",Rn(t))},Sn=r(function(t,r){return _(y["++"],"\n",_(Nn,_(Rt,1,$n(t)),r))}),Ln=function(t){return _(B,!1,_(N,function(t){return bt(Jt(t))},Mt(t)))},zn=r(function(t,r){return h.eq(Et(r),r)?Bt(r):function(r){return t?pn(r):r}(Bt(_(Lt,"_",s(Zt,or,er("(?=[A-Z])"),r))))}),In=function(t){return _(y["++"],":",_(zn,!1,t))},On=function(t){return gn(_(Lt,".",_(Q,function(t){return Ln(t)?t:_(zn,!0,t)},t)))},qn=r(function(t,r){return h.crash("Helpers",{start:{line:25,column:12},end:{line:25,column:23}})(_(y["++"]," ## ERROR: No ",_(y["++"],t,_(y["++"]," implementation for ",_(y["++"],k(r),_(y["++"]," yet","\n"))))))}),Mn={ctor:"Custom"},Fn={ctor:"Builtin"},Dn={ctor:"None"},Pn=function(t){var e=_(rr,er("^[+\\-\\/*=.$<>:&|^?%#@~!]+$"),t),n=_(F,r(function(t,r){return h.eq(t,r)})(t),ur(wn)),o={ctor:"_Tuple2",_0:n,_1:e};t:do{if("_Tuple2"===o.ctor){if(!0===o._0)return Fn;if(!0===o._1)return Mn;break t}break t}while(!1);return Dn},Vn=function(t){return h.eq(Pn(t),Mn)},jn=function(t){return _(Q,function(t){var r=t,e=r._0;return _(y["++"],_(zn,!1,e),_(y["++"],": 0, ",_(y["++"],_(zn,!1,e),_(y["++"],": ",k(r._1)))))},_(Q,Pt(function(t){return t.arity}),t))},Jn=r(function(t,e){var n=_(B,Er,_(N,function(t){return t.definitions},_(dr,t.mod,t.commons.modules))),o=function(t){return _(B,{ctor:"[]"},_(N,function(e){return L(_(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,e))},_(dr,t,n)))};return h.eq(t.mod,"Elchemy.XBasics")?{ctor:"[]"}:_(et,o,e)}),Un=function(t){var e=jn(_(Jn,t,ln)),n=jn(_(Jn,t,fn)),o=r(function(t,e){return h.eq(e,{ctor:"[]"})?"":s(v,r(function(t,r){return _(y["++"],t,r)}),"]\n",_(r(function(t,r){return _(y["++"],t,r)}),_(y["++"],"import ",_(y["++"],t,", except: [")),_(Lt,", ",e)))});return _(y["++"],_(o,"Elchemy.XBasics",n),_(o,"Kernel",e))},Wn=r(function(t,r){return h.update(t,{variables:_(oe,t.variables,r.variables)})}),Hn=r(function(t,e){var n=t.exports;switch(n.ctor){case"SubsetExport":return!_(F,r(function(t,r){return h.eq(t,r)})(_Bogdanp$elm_ast$Ast_Statement$FunctionExport(e)),n._0);case"AllExport":return!1;default:return h.crashCase("ExContext",{start:{line:359,column:5},end:{line:370,column:41}},n)("No such export")}}),Qn=function(t){return h.update(t,{inArgs:!0})},Kn=e(function(t,e,n){return _(F,r(function(t,r){return h.eq(t,r)})({ctor:"_Tuple2",_0:t,_1:e}),n.flags)}),Xn=(r(function(t,e){return _(Q,jt,_(K,function(e){return _(r(function(t,r){return h.eq(t,r)}),t,Jt(e))},e.flags))}),n(function(t,r,e,n){return s(Kn,r,e,t)?"":n})),Gn=r(function(t,r){return h.update(r,{flags:{ctor:"::",_0:t,_1:r.flags}})}),Yn=function(t){return h.update(t,{indent:t.indent+1})},Zn=r(function(t,r){return h.update(r,{mod:t})}),to={modules:Er},ro=e(function(t,r,e){return _(N,function(t){return t.arity},_(A,dr(e),_(N,function(t){return t.definitions},_(dr,r,t.commons.modules))))}),eo=n(function(t,r,e,n){return h.eq(j(n),_(B,-1,s(ro,t,r,e)))}),no=n(function(t,r,e,n){return _(A,dr(e),_(N,t,_(dr,r,function(t){return t.modules}(function(t){return t.commons}(n)))))}),oo=no(function(t){return t.aliases}),co=no(function(t){return t.types}),uo=e(function(t,r,e){return h.crash("ExContext",{start:{line:140,column:5},end:{line:140,column:16}})(_(y["++"],"Expected ",_(y["++"],k(t),_(y["++"]," arguments for ",_(y["++"],e,_(y["++"],". But got ",k(j(r))))))))}),io=c(function(t,r,e,n,o,c){return{parentModule:t,arity:r,aliasType:e,body:n,typeBody:o,types:c}}),ao=(e(function(t,r,e){return{arity:t,parentModule:r,parentAlias:e}}),r(function(t,r){return{arity:t,def:r}})),_o=n(function(t,r,e,n){return{aliases:t,types:r,definitions:e,exports:n}}),so=r(function(t,r){return{mod:t,exports:r,indent:0,flags:{ctor:"[]"},variables:re,inArgs:!1,hasModuleDoc:!1,lastDoc:E,commons:{modules:_(Jr,t,l(_o,Er,Er,Er,r))},inTypeDefiniton:!1,inCaseOf:!1,importedTypes:Kr({ctor:"::",_0:{ctor:"_Tuple2",_0:"Order",_1:"Elchemy.XBasics"},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"Result",_1:"Elchemy.XResult"},_1:{ctor:"[]"}}})}}),lo=l(_o,Er,Er,Er,_Bogdanp$elm_ast$Ast_Statement$AllExport),fo=c(function(t,r,e,n,o,c){var u=c.commons,i=function(t){return C(_(n,_(B,lo,t),s(Vr,r,m(C(o)),_(B,Er,_(N,e,t)))))};return h.update(c,{commons:h.update(u,{modules:s(Vr,t,i,u.modules)})})}),po=r(function(t,e){return l(fo,t,e,function(t){return t.aliases},r(function(t,r){return h.update(t,{aliases:r})}))}),ho=n(function(t,e,n,o){var c={arity:o,parentModule:t,parentAlias:e};return f(fo,t,n,function(t){return t.types},r(function(t,r){return h.update(t,{types:r})}),c)}),go=e(function(t,e,n){return d(fo,t.mod,e,function(t){return t.definitions},r(function(t,r){return h.update(t,{definitions:r})}),n,t)}),vo=e(function(t,o,c){var u=n(function(t,r,n,o){return s(ar,e(function(e,n,c){return d(fo,o.mod,e,t,r,n,c)}),o,n)}),i=r(function(t,r){return _(B,Er,_(N,t,_(dr,r,c.commons.modules)))}),a=function(t){return _(Wr,r(function(r,e){return h.eq(r,t)}),_(i,function(t){return t.aliases},o))},f=r(function(t,e){return _(Wr,r(function(r,e){var n=e;return h.eq(n.parentAlias,t)}),_(i,function(t){return t.types},o))}),p=r(function(t,e){var n=t;switch(n.ctor){case"TypeExport":var o=n._0;return l(u,function(t){return t.types},r(function(t,r){return h.update(t,{types:r})}),_(f,o,n._1),l(u,function(t){return t.aliases},r(function(t,r){return h.update(t,{aliases:r})}),a(o),e));case"FunctionExport":return e;default:return h.crashCase("ExContext",{start:{line:474,column:13},end:{line:484,column:69}},n)("You can't import subset of subsets")}}),g=t;switch(g.ctor){case"AllExport":return l(u,function(t){return t.types},r(function(t,r){return h.update(t,{types:r})}),_(i,function(t){return t.types},o),l(u,function(t){return t.aliases},r(function(t,r){return h.update(t,{aliases:r})}),_(i,function(t){return t.aliases},o),c));case"SubsetExport":return s(V,p,c,g._0);default:return h.crashCase("ExContext",{start:{line:486,column:9},end:{line:496,column:77}},g)("You can't import something that's not a subset")}}),mo=e(function(t,r,e){return{ctor:"ArgumentedType",_0:t,_1:r,_2:e}}),bo=function(t){return{ctor:"SimpleType",_0:t}},yo={ctor:"TypeAlias"},ko={ctor:"Type"},To=r(function(t,r){var e=t(r);switch(e.ctor){case"TypeVariable":return e;case"TypeConstructor":return _(_Bogdanp$elm_ast$Ast_Statement$TypeConstructor,e._0,_(Q,To(t),e._1));case"TypeRecordConstructor":return _(_Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor,_(To,t,e._0),_(Q,Pt(To(t)),e._1));case"TypeTuple":return _Bogdanp$elm_ast$Ast_Statement$TypeTuple(_(Q,To(t),e._0));case"TypeRecord":return _Bogdanp$elm_ast$Ast_Statement$TypeRecord(_(Q,Pt(To(t)),e._0));default:return _(_Bogdanp$elm_ast$Ast_Statement$TypeApplication,_(To,t,e._0),_(To,t,e._1))}}),wo=r(function(t,r){return t(function(){var e=r;switch(e.ctor){case"TypeVariable":return e;case"TypeConstructor":return _(_Bogdanp$elm_ast$Ast_Statement$TypeConstructor,e._0,_(Q,wo(t),e._1));case"TypeTuple":return _Bogdanp$elm_ast$Ast_Statement$TypeTuple(_(Q,wo(t),e._0));case"TypeRecord":return _Bogdanp$elm_ast$Ast_Statement$TypeRecord(_(Q,Pt(wo(t)),e._0));case"TypeRecordConstructor":return _(_Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor,_(wo,t,e._0),_(Q,Pt(wo(t)),e._1));default:return _(_Bogdanp$elm_ast$Ast_Statement$TypeApplication,_(wo,t,e._0),_(wo,t,e._1))}}())}),xo=(r(function(t,r){return s(oo,r.mod,t,r)}),e(function(t,e,n){var o=function(t){var r=t;return"TypeVariable"===r.ctor?r._0:h.crashCase("ExAlias",{start:{line:169,column:13},end:{line:177,column:46}},r)(_(y["++"],"type can only take variables. ",_(y["++"],k(r),"is incorrect")))},c=s(V,g(jr),Er,s(M,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),_(Q,o,t),e));return _(wo,function(t){var r=t;return"TypeVariable"===r.ctor?_(B,r,_(dr,r._0,c)):r},n)})),Bo=e(function(t,e,n){var o=r(function(t,r){var o=r,c=t;if("TypeConstructor"===c.ctor&&"::"===c._0.ctor&&"[]"===c._0._1.ctor){var u=c._0._0;return _(an["=>"],{ctor:"::",_0:u,_1:o._0},f(ho,n.mod,e,u,j(c._1),o._1))}return h.crashCase("ExAlias",{start:{line:116,column:13},end:{line:122,column:65}},c)("Type can only start with a tag")});return s(V,o,{ctor:"_Tuple2",_0:{ctor:"[]"},_1:n},t)}),Eo=e(function(t,r,e){var n=r;if("TypeConstructor"===n.ctor&&"::"===n._0.ctor&&"[]"===n._0._1.ctor){var o=n._0._0,c=s(Bo,e,o,t),u=c._0,i=c._1,a=j(n._1),f=_Bogdanp$elm_ast$Ast_Statement$TypeVariable(_(y["++"],"@",o)),p=d(io,t.mod,a,ko,f,bo(f),u);return l(po,t.mod,o,p,i)}return h.crashCase("ExAlias",{start:{line:80,column:5},end:{line:98,column:68}},n)(_(y["++"],"Wrong type declaration ",k(n)))}),Ao=e(function(t,r,e){var n=r;if("TypeConstructor"===n.ctor&&"::"===n._0.ctor&&"[]"===n._0._1.ctor){var o=n._0._0,c=n._1,u=s(mo,o,c,e),i=j(c),a=d(io,t.mod,i,yo,e,u,{ctor:"[]"});return l(po,t.mod,o,a,t)}return h.crashCase("ExAlias",{start:{line:60,column:5},end:{line:75,column:74}},n)(_(y["++"],"Wrong type alias declaration ",k(n)))}),Co=r(function(t,r){var e=t;if("SimpleType"===e.ctor)return e._0;var n=e._1,o=j(n),c=j(r);return h.eq(c,o)?s(xo,n,r,e._2):s(uo,o,r,e._0)}),No=r(function(t,o){var c=n(function(e,n,o,c){return _(B,n,_(A,function(t){switch(t.ctor){case"TypeRecordConstructor":case"TypeApplication":return C(t);default:return E}},_(N,function(t){return _(Co,t.typeBody,c)},_(cn,function(t){return _(r(function(t,r){return h.eq(t,r)}),yo,function(t){return t.aliasType}(t))},s(oo,e,o,t)))))}),u=e(function(r,e,n){return function(t){var e=t;return l(c,e._0,r,e._1,n)}(_(Cn,t.mod,e))});return _(wo,function(t){var r=t;return"TypeConstructor"===r.ctor?s(u,t,r._0,r._1):r},o)}),Ro=e(function(t,r,e){var n=j(_n(_(No,t,e)));return s(go,t,r,_(ao,n-1,e))}),$o=r(function(t,r){var e=t;switch(e.ctor){case"TypeAliasDeclaration":return s(Ao,r,e._0,e._1);case"TypeDeclaration":return s(Eo,r,e._0,e._1);case"FunctionTypeDeclaration":return s(Ro,r,e._0,e._1);default:return r}}),So=r(function(t,r){return s(V,$o,t,r)}),Lo=r(function(t,n){var o=e(function(r,e,n){for(;;){var o=e;if("[]"===o.ctor)return h.eq(r,{ctor:"[]"})?pt(Y(n)):dt(r);var c=o._1,u=o._0,i=_(y["++"],r,c);if(_(D,_(v,t,u),i)){var a={ctor:"[]"},s=i,l={ctor:"::",_0:u,_1:n};r=a,e=s,n=l}else{var f={ctor:"::",_0:u,_1:r},d=c,p=n;r=f,e=d,n=p}}});return r(function(r,e){return _(Le,function(e){return _(D,t(e),r)},e)}),s(o,{ctor:"[]"},n,{ctor:"[]"})}),zo=r(function(t,r){return _(K,function(r){return!s(v,J,t,r)},r)}),Io=function(t){var r=sn(t);return"::"===r.ctor&&"[]"===r._1.ctor?"Variable"===r._0.ctor&&"::"===r._0._0.ctor&&"[]"===r._0._0._1.ctor?r._0._0._0:h.crashCase("ExVariable",{start:{line:133,column:5},end:{line:143,column:40}},r)(_(y["++"],k(r._0)," is not a variable")):_(B,"",_(N,Io,W(r)))},Oo=function(t){var e={ctor:"[]"},n=function(t){return s(P,r(function(t,r){return _(y["++"],t,r)}),{ctor:"[]"},_(Q,Oo,t))},o=t;t:do{r:do{switch(o.ctor){case"Record":return n(_(Q,jt,o._0));case"Tuple":return n(o._0);case"Variable":if("::"===o._0.ctor&&"[]"===o._0._1.ctor)return function(t){return{ctor:"::",_0:t,_1:{ctor:"[]"}}}(o._0._0);break t;case"List":return n(o._0);case"Application":return n({ctor:"::",_0:o._0,_1:{ctor:"::",_0:o._1,_1:{ctor:"[]"}}});case"BinOp":if("Variable"!==o._0.ctor||"::"!==o._0._0.ctor||"[]"!==o._0._0._1.ctor)break r;switch(o._0._0._0){case"::":return n({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}});case"as":if("Variable"===o._2.ctor){if("Variable"===o._1.ctor)return n({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}});if("::"===o._2._0.ctor&&"[]"===o._2._0._1.ctor)return n({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}});break r}break r;default:break r}case"Case":return _(zo,Oo(o._0),_(et,g(qo),o._1));case"Let":return _(et,g(qo),o._0);case"Lambda":return _(zo,_(et,Oo,o._0),Oo(o._1));default:break t}}while(!1);return n({ctor:"::",_0:o._1,_1:{ctor:"::",_0:o._2,_1:{ctor:"[]"}}})}while(!1);return e},qo=r(function(t,r){return _(zo,Oo(t),Oo(r))}),Mo=function(t){var r=sn(t);return"::"===r.ctor&&"[]"===r._1.ctor?"Variable"===r._0.ctor&&"::"===r._0._0.ctor&&"[]"===r._0._0._1.ctor?{ctor:"::",_0:r._0._0._0,_1:{ctor:"[]"}}:Oo(r._0):_(B,{ctor:"[]"},_(N,Mo,W(r)))},Fo=function(t){var r=sn(t);return"::"===r.ctor&&"[]"===r._1.ctor?{ctor:"[]"}:_(B,{ctor:"[]"},_(N,et(Mo),U(r)))},Do=r(function(t,e){var n=t,o=e;return _(r(function(t,r){return _(F,_(v,J,r),t)}),Mo(n._0),_(zo,Fo(o._0),Oo(o._1)))}),Po=function(t){var e=_(Lo,r(function(t,r){return!_(Do,t,r)}),t);return"Ok"===e.ctor?e._0:(h.crash("ExVariable",{start:{line:122,column:21},end:{line:122,column:32}})(_(y["++"],"Couldn't find a solution to ",k(_(Q,Jt,e._0)))),{ctor:"[]"})},Vo=function(t){return _(ze,r(function(t,r){return _(Do,t,r)&&_(Do,r,t)}),t)},jo=r(function(t,r){return _(Zr,r,t.variables)||t.inArgs?r:_(y["++"],r,"()")}),Jo=r(function(t,e){var n=r(function(t,r){return h.update(r,{variables:_(ee,_(zn,!0,t),r.variables)})});return s(V,n,e,s(P,r(function(t,r){return _(y["++"],t,r)}),{ctor:"[]"},_(Q,Oo,t)))}),Uo=function(t){return _(K,function(t){var r=t;return h.cmp(r._1,1)>0},_(Q,Pt(function(t){return _(r(function(t,r){return t+r}),-1,j(t))}),_(lt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),_(Q,_n,_(B,{ctor:"[]"},_(N,_n,t))))))},Wo=r(function(t,r){return _(Hn,t,r)?"p":""}),Ho=o(function(t,r,e,n,o){var c={ctor:"_Tuple2",_0:n,_1:s(Kn,"nocurry",e,t)};t:do{if(!0===c._1){if(0===c._0)break t;return""}if(0===c._0)break t;var u=c._0,i=_(Q,function(t){var r=t;return _(y["++"],"{",_(y["++"],k(r._0),_(y["++"],", ",_(y["++"],k(r._1),"}"))))},o),a=_(Wo,t,e),l=Vn(e)?xn(e):_(zn,!0,e);return h.eq(i,{ctor:"[]"})||h.eq(a,"p")?_(Lt,"",{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"curry",_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:l,_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:k(u),_1:{ctor:"[]"}}}}}}}):_(Lt,"",{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"curry",_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:l,_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:k(u),_1:{ctor:"::",_0:", lambdas: [",_1:{ctor:"::",_0:_(Lt,", ",i),_1:{ctor:"::",_0:"]",_1:{ctor:"[]"}}}}}}}}}})}while(!1);return""}),Qo=c(function(t,e,n,o,c,u){var i={ctor:"_Tuple2",_0:Pn(n),_1:o};switch(i._0.ctor){case"Custom":return _(Lt,"",{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"def",_1:{ctor:"::",_0:_(Wo,t,n),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:xn(n),_1:{ctor:"::",_0:"(",_1:{ctor:"::",_0:_(Lt,", ",s(v,r(function(t,r){return _(y["++"],t,r)}),Tn(c),_(Q,e(_(Jo,o,t)),o))),_1:{ctor:"::",_0:") do",_1:{ctor:"::",_0:$n(t.indent+1),_1:{ctor:"::",_0:_(e,_(Jo,o,Yn(t)),u),_1:{ctor:"::",_0:_(Lt,"",_(Q,function(t){return _(y["++"],".(",_(y["++"],t,")"))},Tn(c))),_1:{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}}}}}}}}}}}});case"Builtin":if("::"===i._1.ctor&&"::"===i._1._1.ctor&&"[]"===i._1._1._1.ctor){var a=i._1._1._0,l=i._1._0;return _(Lt,"",{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"def",_1:{ctor:"::",_0:_(Wo,t,n),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:_(e,_(Jo,{ctor:"::",_0:l,_1:{ctor:"[]"}},t),l),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:xn(n),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:_(e,_(Jo,{ctor:"::",_0:a,_1:{ctor:"[]"}},t),a),_1:{ctor:"::",_0:" do",_1:{ctor:"::",_0:$n(t.indent+1),_1:{ctor:"::",_0:_(e,_(Jo,o,Yn(t)),u),_1:{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}}}}}}}}}}}}})}return h.crashCase("ExFunction",{start:{line:113,column:5},end:{line:195,column:38}},i)(_(y["++"],"operator ",_(y["++"],n,_(y["++"]," has to have 2 arguments but has ",k(o)))));default:var f=Tn(c),d=function(t){return h.cmp(j(f),0)>0?t:""},p=_(Q,function(t){return _Bogdanp$elm_ast$Ast_Expression$Variable(L(t))},f);return _(Lt,"",{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"def",_1:{ctor:"::",_0:_(Wo,t,n),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:_(zn,!0,n),_1:{ctor:"::",_0:"(",_1:{ctor:"::",_0:_(Lt,", ",_(Q,e(Qn(t)),_(y["++"],o,p))),_1:{ctor:"::",_0:") do",_1:{ctor:"::",_0:$n(t.indent+1),_1:{ctor:"::",_0:d("("),_1:{ctor:"::",_0:_(e,_(Jo,_(y["++"],o,p),Yn(t)),u),_1:{ctor:"::",_0:d(")"),_1:{ctor:"::",_0:_(Lt,"",_(Q,function(t){return _(y["++"],".(",_(y["++"],t,")"))},f)),_1:{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}}}}}}}}}}}}}})}}),Ko=c(function(t,e,n,o,c,u){var i=function(t){return s(M,v(_Bogdanp$elm_ast$Ast_Expression$BinOp(_Bogdanp$elm_ast$Ast_Expression$Variable({ctor:"::",_0:"as",_1:{ctor:"[]"}}))),o,t)},a=_(A,function(t){return _(dr,n,function(t){return t.definitions}(t))},_(dr,t.mod,t.commons.modules)),l=_(B,0,_(N,function(t){return t.arity},a)),p=function(r){var o=r,c=o._1,u=o._0,a=u;if("Tuple"===a.ctor){var _=a._0;return d(Qo,t,e,n,i(_),l-j(i(_)),c)}return d(Qo,t,e,n,{ctor:"::",_0:u,_1:{ctor:"[]"}},l-1,c)},h=Uo(_(N,function(t){return t.def},a));return s(Kn,"nodef",n,t)?f(Ho,t,e,n,l,h):_(y["++"],f(Ho,t,e,n,l,h),s(v,r(function(t,r){return _(y["++"],t,r)}),"\n",s(P,r(function(t,r){return _(y["++"],t,r)}),"",_(Q,p,u))))}),Xo=o(function(t,r,e,n,o){var c=_(A,function(t){return _(dr,e,function(t){return t.definitions}(t))},_(dr,t.mod,t.commons.modules)),u=_(B,0,_(N,function(t){return t.arity},c)),i=Uo(_(N,function(t){return t.def},c));return s(Kn,"nodef",e,t)?f(Ho,t,r,e,u,i):_(y["++"],f(Ho,t,r,e,u,i),_(y["++"],d(Qo,t,r,e,n,u-j(n),o),"\n"))}),Go=e(function(t,r,e){var n=function(e){return _(Lt,",",_(Q,r(t),e))},o=e;t:do{switch(o.ctor){case"TryFfi":if("String"===o._0.ctor&&"String"===o._1.ctor)return"Tuple"===o._2.ctor?_(y["++"],"try_catch fn _ -> ",_(y["++"],o._0._0,_(y["++"],".",_(y["++"],o._1._0,_(y["++"],"(",_(y["++"],n(o._2._0),_(y["++"],")"," end"))))))):_(y["++"],"try_catch fn _ -> ",_(y["++"],o._0._0,_(y["++"],".",_(y["++"],o._1._0,_(y["++"],"(",_(y["++"],_(r,t,o._2),_(y["++"],")"," end")))))));break t;case"Ffi":if("String"===o._0.ctor&&"String"===o._1.ctor)return"Tuple"===o._2.ctor?_(y["++"],o._0._0,_(y["++"],".",_(y["++"],o._1._0,_(y["++"],"(",_(y["++"],n(o._2._0),")"))))):_(y["++"],o._0._0,_(y["++"],".",_(y["++"],o._1._0,_(y["++"],"(",_(y["++"],_(r,t,o._2),")")))));break t;case"Lffi":if("String"===o._0.ctor)return"Tuple"===o._1.ctor?_(y["++"],o._0._0,_(y["++"],"(",_(y["++"],n(o._1._0),")"))):_(y["++"],o._0._0,_(y["++"],"(",_(y["++"],_(r,t,o._1),")")));break t;default:var c=Tn(o._0);return _(y["++"],"fn (",_(y["++"],_(Lt,",",c),_(y["++"],") -> ",_(y["++"],_(r,t,o._1),_(y["++"],_(Lt,"",_(Q,function(t){return _(y["++"],".(",_(y["++"],t,")"))},c))," end")))))}}while(!1);return h.crashCase("ExFfi",{start:{line:161,column:9},end:{line:214,column:45}},o)("Wrong ffi call")}),Yo=r(function(t,r){return{ctor:"Flambda",_0:t,_1:r}}),Zo=e(function(t,e,n){var o=j(n)-1,c=_(st,1,o);return _(Lt,", ",_(Q,function(r){var n=r,o=n._0,c=n._1;if("[]"===c.ctor)return h.crashCase("ExFfi",{start:{line:126,column:21},end:{line:141,column:71}},c)("Impossible");if("[]"===c._1.ctor)return _(y["++"],"a",k(o));var u=Yo(j(c)-1),i=_Bogdanp$elm_ast$Ast_Expression$Variable({ctor:"::",_0:_(y["++"],"a",k(o)),_1:{ctor:"[]"}});return s(Go,t,e,u(i))},s(M,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),c,n)))}),tc=o(function(t,r,e,n,o){var c=Q(function(t){return _Bogdanp$elm_ast$Ast_Expression$Variable(L(t))}),u=function(t){return s(Zo,t,r,n)},i=(sn(o),_(A,function(t){return _(dr,e,function(t){return t.definitions}(t))},_(dr,t.mod,t.commons.modules))),a={ctor:"_Tuple2",_0:i,_1:sn(o)};t:do{if("_Tuple2"!==a.ctor)break t;if("Nothing"===a._0.ctor)return h.crashCase("ExFfi",{start:{line:44,column:9},end:{line:109,column:51}},a)("Ffi requires type definition");if("::"!==a._1.ctor||"Variable"!==a._1._0.ctor||"::"!==a._1._0._0.ctor||"[]"!==a._1._0._0._1.ctor||"::"!==a._1._1.ctor||"String"!==a._1._1._0.ctor||"::"!==a._1._1._1.ctor||"String"!==a._1._1._1._0.ctor||"[]"!==a._1._1._1._1.ctor)break t;switch(a._1._0._0._0){case"ffi":var d=a._1._1._0._0,p=a._1._1._1._0._0,g=a._0._0,v=_(kn,"a",g.arity);return _(y["++"],f(Ho,t,r,e,g.arity,{ctor:"[]"}),_(y["++"],l(Xn,t,"noverify",e,_(y["++"],$n(t.indent),_(y["++"],"verify as: ",_(y["++"],d,_(y["++"],".",_(y["++"],p,_(y["++"],"/",k(g.arity)))))))),_(y["++"],$n(t.indent),_(y["++"],"def",_(y["++"],_(Wo,t,e),_(y["++"]," ",_(y["++"],_(zn,!0,e),_(y["++"],"(",_(y["++"],_(Lt,", ",v),_(y["++"],")",_(y["++"],", do: ",_(y["++"],d,_(y["++"],".",_(y["++"],p,_(y["++"],"(",_(y["++"],u(_(Jo,c(v),t)),")"))))))))))))))));case"tryFfi":var m=a._0._0,v=_(kn,"a",m.arity);return _(y["++"],f(Ho,t,r,e,m.arity,{ctor:"[]"}),_(y["++"],$n(t.indent),_(y["++"],"def",_(y["++"],_(Wo,t,e),_(y["++"]," ",_(y["++"],_(zn,!0,e),_(y["++"],"(",_(y["++"],_(Lt,", ",_(kn,"a",m.arity)),_(y["++"],")",_(y["++"]," do ",_(y["++"],$n(t.indent+1),_(y["++"],"try_catch fn -> ",_(y["++"],$n(t.indent+2),_(y["++"],a._1._1._0._0,_(y["++"],".",_(y["++"],a._1._1._1._0._0,_(y["++"],"(",_(y["++"],u(_(Jo,c(v),t)),_(y["++"],")",_(y["++"],$n(t.indent+1),_(y["++"],"end",_(y["++"],$n(t.indent),"end"))))))))))))))))))))));default:break t}}while(!1);return h.crashCase("ExFfi",{start:{line:44,column:9},end:{line:109,column:51}},a)("Wrong ffi definition")}),rc=(e(function(t,r,e){return{ctor:"TryFfi",_0:t,_1:r,_2:e}}),e(function(t,r,e){return{ctor:"Ffi",_0:t,_1:r,_2:e}}),r(function(t,r){return{ctor:"Lffi",_0:t,_1:r}}),r(function(t,e){t:for(;;){var n=e,o={ctor:"_Tuple2",_0:n.aliasType,_1:n.body};r:do{e:do{if("_Tuple2"!==o.ctor)break r;switch(o._1.ctor){case"TypeConstructor":if("Type"===o._0.ctor)break e;if("::"===o._1._0.ctor&&"[]"===o._1._0._1.ctor)return E;break r;case"TypeRecord":if("Type"===o._0.ctor)break e;var c=o._1._0,u=_(Q,function(t){return _Bogdanp$elm_ast$Ast_Expression$Variable(L(t))},_(Q,function(t){return _(r(function(t,r){return _(y["++"],t,r)}),"arg",k(t))},_(st,1,_(r(function(t,r){return t+r}),0-j(t),j(c))))),i=_(Q,Vt(Jt),s(M,v(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}})),_(y["++"],t,u),c));return C(_(_Bogdanp$elm_ast$Ast_Expression$Lambda,u,_Bogdanp$elm_ast$Ast_Expression$Record(i)));case"TypeTuple":if("Type"===o._0.ctor)break e;if("::"===o._1._0.ctor&&"[]"===o._1._0._1.ctor){var a=t,l=h.update(n,{typeBody:bo(o._1._0._0)});t=a,e=l;continue t}var t=_(Q,function(t){return _Bogdanp$elm_ast$Ast_Expression$Variable(L(t))},_(Q,function(t){return _(r(function(t,r){return _(y["++"],t,r)}),"arg",k(t))},_(st,1,j(o._1._0))));return C(_(_Bogdanp$elm_ast$Ast_Expression$Lambda,t,_Bogdanp$elm_ast$Ast_Expression$Tuple(t)));case"TypeVariable":if("Type"===o._0.ctor)break e;return C(_Bogdanp$elm_ast$Ast_Expression$Variable({ctor:"::",_0:o._1._0,_1:{ctor:"[]"}}));default:if("Type"===o._0.ctor)break e;break r}}while(!1);return E}while(!1);return E}})),ec=(r(function(t,r){return _(B,r,_(N,function(t){return _(y["++"],t,_(y["++"],".",r))},_(dr,"name",t.importedTypes)))}),e(function(t,r,e){var n=e;switch(n.ctor){case"SubsetExport":return _(et,_(ec,t,r),n._0);case"TypeExport":return{ctor:"::",_0:n._0,_1:{ctor:"[]"}};case"AllExport":return _(B,{ctor:"[]"},_(N,function(t){return _(y["++"],ur(t.aliases),ur(t.types))},_(dr,r,t.commons.modules)));default:return{ctor:"[]"}}})),nc=e(function(t,r,e){t:for(;;){var n=e;switch(n.ctor){case"TypeTuple":if("[]"===n._0.ctor)return"no_return";if("[]"===n._0._1.ctor){var o=t,c=r,u=n._0._0;t=o,r=c,e=u;continue t}return _(y["++"],"{",_(y["++"],_(Lt,", ",_(Q,_(nc,t,r),n._0)),"}"));case"TypeVariable":if("number"===n._0)return"number";var i=n._0,a=Mt(i);return"Just"===a.ctor&&"_Tuple2"===a._0.ctor&&"@"===a._0._0.valueOf()?_(zn,!0,a._0._1):r.inTypeDefiniton?i:"any";case"TypeConstructor":var f=_(Cn,r.mod,n._0),d=f._0,p=f._1,g=h.eq(d,r.mod)?_(B,"",_(N,function(t){return _(y["++"],t,".")},_(dr,p,r.importedTypes))):_(y["++"],d,".");return _(y["++"],g,l(oc,t,r,p,n._1));case"TypeRecord":return _(y["++"],"%{",_(y["++"],$n(r.indent+1),_(y["++"],_(Lt,_(y["++"],",",$n(r.indent+1)),_(Q,function(e){var n=e;return _(y["++"],_(zn,!1,n._0),_(y["++"],": ",s(nc,t,Yn(r),n._1)))},n._0)),_(y["++"],$n(r.indent),"}"))));case"TypeRecordConstructor":return _(y["++"],"%{",_(y["++"],$n(r.indent+1),_(y["++"],_(Lt,_(y["++"],", ",$n(r.indent+1)),s(cc,Yn(r),t,n)),_(y["++"],$n(r.indent),"}"))));default:var v=n._1,m=n._0;return t?function(e){var n=e;return _(y["++"],"(",_(y["++"],_(Lt,", ",_(Q,_(nc,t,Yn(r)),{ctor:"::",_0:m,_1:n._1})),_(y["++"]," -> ",_(y["++"],_(B,"",_(N,_(nc,t,r),n._0)),")"))))}(An(_n(v))):_(y["++"],"(",_(y["++"],s(nc,t,r,m),_(y["++"]," -> ",_(y["++"],s(nc,t,r,v),")"))))}}}),oc=n(function(t,r,e,n){var o={ctor:"_Tuple2",_0:e,_1:n};t:do{if("::"===o._1.ctor){if("[]"!==o._1._1.ctor)break t;switch(o._0){case"List":return _(y["++"],"list(",_(y["++"],s(nc,t,r,o._1._0),")"));case"Maybe":return _(y["++"],"{",_(y["++"],s(nc,t,r,o._1._0),"} | nil"));case"Just":return s(nc,t,r,o._1._0);case"Err":return _(y["++"],"{:error, ",_(y["++"],s(nc,t,r,o._1._0),"}"));case"Ok":var c=o._1._0;return h.eq(c,_Bogdanp$elm_ast$Ast_Statement$TypeTuple({ctor:"[]"}))?"ok":_(y["++"],"{:ok,",_(y["++"],s(nc,t,r,c),"}"));default:break t}}else switch(o._0){case"String":return"String.t";case"Char":return"integer";case"Bool":return"boolean";case"Int":return"integer";case"Pid":return"pid";case"Float":return"float";case"Nothing":return"nil";default:return _(zn,!0,o._0)}}while(!1);return _(y["++"],_(zn,!0,o._0),_(y["++"],"(",_(y["++"],_(Lt,", ",_(Q,_(nc,t,r),o._1)),")")))}),cc=e(function(t,r,e){t:for(;;){var n=function(e){var n=e;return _(y["++"],n._0,_(y["++"],": ",s(nc,r,t,n._1)))},o=e;r:do{switch(o.ctor){case"TypeRecordConstructor":switch(o._0.ctor){case"TypeConstructor":if("::"===o._0._0.ctor&&"[]"===o._0._0._1.ctor){var c=_(N,_(cc,t,r),_(N,function(t){return _(Co,t.typeBody,o._0._1)},s(oo,t.mod,o._0._0._0,t)));return _(y["++"],_(Q,n,o._1),_(B,{ctor:"::",_0:"",_1:{ctor:"[]"}},c))}break r;case"TypeRecord":return _(Q,n,_(y["++"],o._1,o._0._0));case"TypeVariable":return _(Q,n,o._1);case"TypeTuple":if("::"===o._0._0.ctor&&"[]"===o._0._0._1.ctor){var u=t,i=r,a=_(_Bogdanp$elm_ast$Ast_Statement$TypeRecordConstructor,o._0._0._0,o._1);t=u,r=i,e=a;continue t}break r;case"TypeRecordConstructor":return _(y["++"],_(Q,n,o._1),s(cc,t,r,o._0));default:break r}case"TypeRecord":return _(Q,n,o._0);default:break r}}while(!1);return h.crashCase("ExType",{start:{line:130,column:9},end:{line:158,column:79}},o)(_(y["++"],"Wrong type record constructor ",k(o)))}}),uc=(nc(!0),nc(!1)),ic=(r(function(t,r){return _(y["++"],"() :: ",_(uc,t,r))}),r(function(t,r){var e=An(_n(r));return"Just"===e._0.ctor?_(y["++"],"(",_(y["++"],_(Lt,", ",_(Q,uc(t),e._1)),_(y["++"],") :: ",_(uc,t,e._0._0)))):h.crashCase("ExType",{start:{line:266,column:5},end:{line:276,column:37}},e)("impossible")})),ac=r(function(t,r){var e=r;return"TypeConstructor"===e.ctor&&"::"===e._0.ctor&&"[]"===e._0._1.ctor?"[]"===e._1.ctor?In(e._0._0):_(y["++"],"{",_(y["++"],In(e._0._0),_(y["++"],", ",_(y["++"],_(Lt,", ",_(Q,uc(t),e._1)),"}")))):h.crashCase("ExType",{start:{line:283,column:5},end:{line:295,column:96}},e)(_(y["++"],"I am looking for union type constructor. But got ",k(e)))}),_c=(n(function(t,r,e,n){return _(B,n,N(function(r){var n=r,o=n.typeBody,c=n.parentModule;return h.eq(c,t.mod)?_(uc,t,_(Co,o,e)):"Type"===n.aliasType.ctor?_(y["++"],c,_(y["++"],".",_(uc,t,_(Co,o,e)))):_(uc,h.update(t,{mod:c}),_(Co,o,e))})(s(oo,t.mod,r,t)))}),function(t){var r=t;return"BinOp"===r.ctor&&"Variable"===r._0.ctor&&"::"===r._0._0.ctor&&"|>"===r._0._0._0&&"[]"===r._0._0._1.ctor?"BinOp"===r._2.ctor&&"Variable"===r._2._0.ctor&&"::"===r._2._0._0.ctor&&"|>"===r._2._0._0._0&&"[]"===r._2._0._0._1.ctor?_(y["++"],{ctor:"::",_0:r._1,_1:{ctor:"[]"}},_c(r._2)):_(y["++"],{ctor:"::",_0:r._1,_1:{ctor:"[]"}},{ctor:"::",_0:r._2,_1:{ctor:"[]"}}):{ctor:"::",_0:r,_1:{ctor:"[]"}}}),sc=o(function(t,e,n,o,c){t:for(;;){var u=n;switch(u){case"//":return _(y["++"],"div(",_(y["++"],_(e,t,o),_(y["++"],", ",_(y["++"],_(e,t,c),")"))));case"%":return _(y["++"],"rem(",_(y["++"],_(e,t,o),_(y["++"],", ",_(y["++"],_(e,t,c),")"))));case"^":return _(y["++"],":math.pow(",_(y["++"],_(e,t,o),_(y["++"],", ",_(y["++"],_(e,t,c),")"))));case"::":return _(y["++"],"[",_(y["++"],_(e,t,o),_(y["++"]," | ",_(y["++"],_(e,t,c),"]"))));case"<<":var i=t,a=e,s=c,l=o;t=i,e=a,n=">>",o=s,c=l;continue t;case"<|":var f=t,d=e,p=c,g=o;t=f,e=d,n="|>",o=p,c=g;continue t;case"|>":return _(y["++"],"(",_(y["++"],_(e,t,o),_(y["++"],_(Lt,"",_(Q,_(v,r(function(t,r){return _(y["++"],t,r)}),").()"),_(Q,r(function(t,r){return _(y["++"],t,r)})(_(y["++"],$n(t.indent),"|> (")),_(Q,e(t),_c(c))))),")")));case"as":return _(y["++"],_(e,t,o),_(y["++"]," = ",_(e,t,c)));default:var m=u,b=Pn(m);switch(b.ctor){case"Builtin":return _(Lt,"",{ctor:"::",_0:"(",_1:{ctor:"::",_0:_(e,t,o),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:xn(m),_1:{ctor:"::",_0:" ",_1:{ctor:"::",_0:_(e,t,c),_1:{ctor:"::",_0:")",_1:{ctor:"[]"}}}}}}}});case"Custom":return _(y["++"],xn(m),_(y["++"],"(",_(y["++"],_(e,t,o),_(y["++"],", ",_(y["++"],_(e,t,c),")")))));default:return h.crashCase("ExOperator",{start:{line:52,column:13},end:{line:66,column:60}},b)(_(y["++"],"Illegal operator ",m))}}}}),lc=function(t){return{ctor:"Access",_0:t}},fc=function(t){var r=t;return"AccessFunction"===r.ctor?lc(_(zn,!0,r._0)):h.crashCase("ExSelector",{start:{line:26,column:5},end:{line:31,column:65}},r)("The only allowed selectors are: .field")},dc={ctor:"Update"},pc={ctor:"Put"},hc={ctor:"Get"},gc=function(t){var e=function(t){return _(ft,1,Tt(_(It,yt,t)))};return _(N,function(r){return{ctor:"_Tuple2",_0:r,_1:e(t)}},function(t){return s(V,r(function(r,e){var n=r,o=e;return"Nothing"===o.ctor?_(rr,er(n._0),t)?C(n._1):E:o}),E,{ctor:"::",_0:{ctor:"_Tuple2",_0:"updateIn\\d?",_1:dc},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"putIn\\d?",_1:pc},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"getIn\\d?",_1:hc},_1:{ctor:"[]"}}}})}(t))},vc=e(function(t,r,e){return{ctor:"AccessMacro",_0:t,_1:r,_2:e}}),mc=r(function(t,e){var n=r(function(t,r){var e=_(T,j(r),t);switch(e.ctor){case"LT":return h.crashCase("ExSelector",{start:{line:38,column:13},end:{line:50,column:65}},e)(_(y["++"],"Access macros [updateIn/getIn/putIn] cannot be partially applied. Expecting ",_(y["++"],k(t)," selector arguments.")));case"EQ":return{ctor:"_Tuple2",_0:_(Q,fc,r),_1:{ctor:"[]"}};default:return _(Vt,Q(fc),_(fe,t,r))}}),o={ctor:"_Tuple2",_0:t,_1:e};return"_Tuple2"===o.ctor&&"Variable"===o._0.ctor&&"::"===o._0._0.ctor&&"[]"===o._0._0._1.ctor?_(N,function(t){var r=t,e=r._1,c=_(n,e,o._1),u=c._0,i=c._1;return{ctor:"_Tuple2",_0:s(vc,r._0,e,u),_1:i}},gc(o._0._0._0)):E}),bc=function(t){t:for(;;){var r=t;switch(r.ctor){case"Application":var e=r._0;t=e;continue t;case"Variable":return"::"===r._0.ctor&&"[]"===r._0._1.ctor?"()"===r._0._0||Ln(r._0._0):function(t){var r=t;return bc(_Bogdanp$elm_ast$Ast_Expression$Variable({ctor:"::",_0:r._1,_1:{ctor:"[]"}}))}(_(Cn,"",r._0));default:return!1}}},yc=function(t){var r=t;return"TypeAlias"===r.aliasType.ctor?C(r):E},kc=function(t){t:for(;;){var r=t;r:do{switch(r.ctor){case"Application":var e=r._0;t=e;continue t;case"Variable":if("::"===r._0.ctor&&"[]"===r._0._1.ctor)return _(J,r._0._0,{ctor:"::",_0:"tryFfi",_1:{ctor:"::",_0:"ffi",_1:{ctor:"::",_0:"lffi",_1:{ctor:"::",_0:"flambda",_1:{ctor:"::",_0:"updateIn",_1:{ctor:"::",_0:"updateIn2",_1:{ctor:"::",_0:"updateIn3",_1:{ctor:"::",_0:"updateIn4",_1:{ctor:"::",_0:"updateIn5",_1:{ctor:"::",_0:"putIn",_1:{ctor:"::",_0:"putIn",_1:{ctor:"::",_0:"putIn2",_1:{ctor:"::",_0:"putIn3",_1:{ctor:"::",_0:"putIn4",_1:{ctor:"::",_0:"putIn5",_1:{ctor:"::",_0:"getIn",_1:{ctor:"::",_0:"getIn2",_1:{ctor:"::",_0:"getIn3",_1:{ctor:"::",_0:"getIn4",_1:{ctor:"::",_0:"getIn5",_1:{ctor:"[]"}}}}}}}}}}}}}}}}}}}}});break r;default:break r}}while(!1);return!1}},Tc=function(t){var r=t;return"Application"===r.ctor?kc(t)||bc(t)?_(y["++"],Tc(r._0),{ctor:"::",_0:r._1,_1:{ctor:"[]"}}):{ctor:"::",_0:t,_1:{ctor:"[]"}}:{ctor:"::",_0:r,_1:{ctor:"[]"}}},wc=r(function(t,r){var e=r;t:do{switch(e.ctor){case"Variable":return _(Mc,t,e._0);case"Application":return _(Nc,t,e);case"RecordUpdate":return _(y["++"],"%{",_(y["++"],_(zn,!0,e._0),_(y["++"]," | ",_(y["++"],_(Lt,", ",_(Q,function(r){var e=r;return _(y["++"],e._0,_(y["++"],": ",_(wc,t,e._1)))},e._1)),"}"))));case"Access":return"Variable"===e._0.ctor?_(y["++"],On(e._0._0),_(y["++"],".",_(Lt,".",_(Q,zn(!0),e._1)))):_(y["++"],_(wc,t,e._0),_(y["++"],".",_(Lt,".",e._1)));case"AccessFunction":return _(y["++"],"(fn a -> a.",_(y["++"],_(zn,!0,e._0)," end)"));case"BinOp":if("Variable"===e._0.ctor&&"::"===e._0._0.ctor&&"[]"===e._0._0._1.ctor)return f(sc,t,wc,e._0._0._0,e._1,e._2);break t;default:break t}}while(!1);return _(xc,t,e)}),xc=r(function(t,e){var n=e;switch(n.ctor){case"Case":return s(Bc,t,n._0,n._1);case"Lambda":return s(Cc,t,n._0,n._1);case"If":return"If"===n._2.ctor?_(Lt,"",_(y["++"],{ctor:"::",_0:"cond do",_1:{ctor:"[]"}},_(y["++"],_(qc,Yn(t),n),{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"end",_1:{ctor:"[]"}}}))):_(y["++"],"if ",_(y["++"],_(wc,t,n._0),_(y["++"]," do ",_(y["++"],_(wc,t,n._1),_(y["++"]," else ",_(y["++"],_(wc,t,n._2)," end"))))));case"Let":return function(t){var r=t;return _(y["++"],r._1,_(wc,r._0,n._1))}(s(v,V,{ctor:"_Tuple2",_0:t,_1:""},r(function(t,r){var e=r,n=e._0;return function(t){var r=t,o=r._0;return _(an["=>"],_(Wn,o,n),_(y["++"],e._1,_(y["++"],r._1,$n(o.indent))))}(function(){var r=t;return"[]"===r.ctor?_(an["=>"],n,""):"_Tuple2"===r._0.ctor&&"[]"===r._1.ctor?_(Ac,n,{ctor:"_Tuple2",_0:r._0._0,_1:r._0._1}):_(Ic,n,r)}())}))(Vo(Po(n._0))));default:return _(Oc,t,e)}}),Bc=e(function(t,r,e){return t.inCaseOf?h.crash("ExExpression",{start:{line:595,column:9},end:{line:595,column:20}})(_(y["++"],"Module ",_(y["++"],t.mod,"\nBecause of a known bug in elm-ast parser, you can't reliably use nested case..of yet. Sorry"))):_(y["++"],"case ",_(y["++"],_(wc,t,r),_(y["++"]," do",_(y["++"],_(Lt,"",_(Q,Ec(_(Jo,{ctor:"::",_0:r,_1:{ctor:"[]"}},h.update(t,{inCaseOf:!0}))),e)),_(y["++"],$n(t.indent),"end")))))}),Ec=r(function(t,r){var e=r,n=e._0;return _(y["++"],_(y["++"],$n(t.indent+1),_(wc,Qn(t),n)),_(y["++"]," ->",_(y["++"],$n(t.indent+2),_(wc,_(Jo,{ctor:"::",_0:n,_1:{ctor:"[]"}},Yn(Yn(t))),e._1))))}),Ac=r(function(t,e){var n=e,o=n._0,c=n._1,u=r(function(t,r){return"Let"===r.ctor?_(y["++"],"(",_(y["++"],$n(t.indent+1),_(y["++"],_(wc,Yn(t),r),_(y["++"],$n(t.indent),")")))):_(wc,t,r)}),i=sn(o);t:do{if("::"===i.ctor){if("Variable"===i._0.ctor&&"::"===i._0._0.ctor&&"[]"===i._0._0._1.ctor){if("[]"===i._1.ctor){var a=i._0;return _(an["=>"],_(Jo,{ctor:"::",_0:a,_1:{ctor:"[]"}},t),_(y["++"],_(zn,!0,i._0._0._0),_(y["++"]," = ",_(u,_(Jo,{ctor:"::",_0:a,_1:{ctor:"[]"}},t),c))))}var l=i._0,f=i._0._0._0,d=i._1;return Ln(f)?_(an["=>"],_(Jo,d,t),_(y["++"],_(Nc,_(Jo,d,t),o),_(y["++"]," = ",_(u,t,c)))):_(an["=>"],_(Jo,{ctor:"::",_0:l,_1:{ctor:"[]"}},t),_(y["++"],_(zn,!0,f),_(y["++"]," = rec ",_(y["++"],_(zn,!0,f),_(y["++"],", ",s(Cc,_(Jo,{ctor:"::",_0:l,_1:{ctor:"[]"}},t),d,c))))))}if("[]"===i._1.ctor){var p=i._0;return _(an["=>"],_(Jo,{ctor:"::",_0:p,_1:{ctor:"[]"}},t),_(y["++"],_(wc,Qn(t),p),_(y["++"]," = ",_(u,_(Jo,{ctor:"::",_0:p,_1:{ctor:"[]"}},t),c))))}break t}break t}while(!1);return _(an["=>"],t,"")}),Cc=e(function(t,r,e){var n=h.update(t,{inCaseOf:!1}),o=r;if("::"===o.ctor){var c=o._0;return _(y["++"],"fn ",_(y["++"],_(wc,Qn(t),c),_(y["++"]," -> ",_(y["++"],s(Cc,_(Jo,{ctor:"::",_0:c,_1:{ctor:"[]"}},n),o._1,e)," end"))))}return _(wc,n,e)}),Nc=r(function(t,r){var e=Tc(r);t:do{r:do{if("::"!==e.ctor)break t;switch(e._0.ctor){case"Application":if("[]"===e._1.ctor)return s(zc,t,e._0._0,e._0._1);break t;case"Variable":if("::"!==e._0._0.ctor||"[]"!==e._0._0._1.ctor)break r;switch(e._0._0._0){case"ffi":return h.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},e)("Ffi inside function body is deprecated since Elchemy 0.3");case"tryFfi":return h.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},e)("tryFfi inside function body is deprecated since Elchemy 0.3");case"lffi":return h.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},e)("Lffi inside function body is deprecated since Elchemy 0.3");case"flambda":return h.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},e)("Flambda is deprecated since Elchemy 0.3");case"Just":if("::"===e._1.ctor&&"[]"===e._1._1.ctor)return _(y["++"],"{",_(y["++"],_(wc,t,e._1._0),"}"));break r;case"Ok":if("::"===e._1.ctor&&"[]"===e._1._1.ctor)return _(y["++"],"{:ok, ",_(y["++"],_(wc,t,e._1._0),"}"));break r;case"Err":if("::"===e._1.ctor&&"[]"===e._1._1.ctor)return _(y["++"],"{:error, ",_(y["++"],_(wc,t,e._1._0),"}"));break r;default:break r}default:break t}}while(!1);var n=e._1;return _(B,function(r){var e=r,o=e._1;return _(B,_(y["++"],"{",_(y["++"],_(wc,t,_Bogdanp$elm_ast$Ast_Expression$Variable({ctor:"::",_0:o,_1:{ctor:"[]"}})),_(y["++"],", ",_(y["++"],_(Lt,", ",_(Q,wc(t),n)),"}")))),s(Rc,_(Zn,e._0,t),o,n))}(_(Cn,t.mod,e._0._0)),_(N,Lc(t),_(mc,e._0,n)))}while(!1);return h.crashCase("ExExpression",{start:{line:443,column:5},end:{line:489,column:70}},e)(_(y["++"],"Shouldn't ever work for",k(e)))}),Rc=e(function(t,r,e){return _(un,s($c,t,r,e),s(Sc,t,r,e))}),$c=e(function(t,r,e){return _(N,wc(t),_(A,rc(e),_(A,yc,s(oo,t.mod,r,t))))}),Sc=e(function(t,e,n){return N(function(o){var c=o,u=c.arity,i=j(n),a=u-i,l=Tn(a),f=_(Q,function(t){return _Bogdanp$elm_ast$Ast_Expression$Variable(L(t))},l);return h.eq(u,0)?In(e):h.cmp(a,0)>-1?s(v,r(function(t,r){return _(y["++"],t,r)}),_(St,a," end"),_(y["++"],_(Lt,"",_(Q,_(v,r(function(t,r){return _(y["++"],t,r)})," -> "),_(Q,r(function(t,r){return _(y["++"],t,r)})("fn "),l))),_(y["++"],"{",_(y["++"],In(e),_(y["++"],", ",_(y["++"],_(Lt,", ",_(Q,wc(_(Jo,_(y["++"],n,f),t)),_(y["++"],n,f))),"}")))))):h.crash("ExExpression",{start:{line:558,column:29},end:{line:558,column:40}})(_(y["++"],"Expected ",_(y["++"],k(u),_(y["++"]," arguments for '",_(y["++"],e,_(y["++"],"'. Got: ",k(j(n))))))))})(s(co,t.mod,e,t))}),Lc=r(function(t,r){var e=r,n=e._1,o=function(){return"[]"===n.ctor?"":_(y["++"],".(",_(y["++"],_(Lt,").(",_(Q,wc(t),n)),")"))}(),c=function(){switch(e._0._0.ctor){case"Update":return"update_in_";case"Get":return"get_in_";default:return"put_in_"}}(),u=function(t){var r=t;return _(y["++"],":",_(zn,!0,r._0))},i=_(Lt,", ",_(Q,u,e._0._2));return _(y["++"],c,_(y["++"],"([",_(y["++"],i,_(y["++"],"])",o))))}),zc=e(function(t,r,n){var o=e(function(t,r,e){return _(Lt,e,_(Q,wc(t),r))}),c=sn(_(_Bogdanp$elm_ast$Ast_Expression$Application,r,n));t:do{if("::"!==c.ctor)break t;switch(c._0.ctor){case"Variable":if("::"===c._0._0.ctor&&"[]"===c._0._0._1.ctor){var u=c._0._0._0,i=c._1;return l(eo,t,t.mod,u,i)?_(y["++"],_(zn,!0,u),_(y["++"],"(",_(y["++"],s(o,t,i,", "),")"))):_(y["++"],_(wc,t,r),_(y["++"],".(",_(y["++"],_(wc,t,n),")")))}break t;case"Access":if("Variable"===c._0._0.ctor&&"::"===c._0._1.ctor&&"[]"===c._0._1._1.ctor){var a=c._0._1._0,f=c._1,d=_(zn,!0,a),p=On(c._0._0._0);return l(eo,t,p,a,f)?_(y["++"],p,_(y["++"],".",_(y["++"],d,_(y["++"],"(",_(y["++"],s(o,t,f,", "),")"))))):_(y["++"],p,_(y["++"],".",_(y["++"],d,_(y["++"],"().(",_(y["++"],s(o,t,f,").("),")")))))}break t;default:break t}}while(!1);return _(y["++"],_(wc,t,r),_(y["++"],".(",_(y["++"],_(wc,t,n),")")))}),Ic=r(function(t,e){var n=r(function(t,r){var e=r,n=e._0,o=e._1,c=sn(n);return"[]"===c.ctor?"":"[]"===c._1.ctor?_(wc,t,o):"Variable"===c._0.ctor&&"::"===c._0._0.ctor&&"[]"===c._0._0._1.ctor?s(Cc,t,c._1,o):h.crashCase("ExExpression",{start:{line:152,column:13},end:{line:163,column:78}},c)(_(y["++"],k(n)," is not a let in branch"))}),o=_(Q,function(t){return _(zn,!0,Io(Jt(t)))},e),c=_(Q,Jt,e),u=_(Jo,c,t);return _(an["=>"],u,_(y["++"],"{",_(y["++"],_(Lt,", ",o),_(y["++"],"} = let [",_(y["++"],_(Lt,",",_(Q,function(t){var r=t;return _(y["++"],$n(u.indent+1),_(y["++"],_(zn,!0,r._0),_(y["++"],": ",r._1)))},_(Q,Pt(n(Yn(u))),_(Q,function(t){var r=t;return{ctor:"_Tuple2",_0:Io(r._0),_1:r}},e)))),_(y["++"],$n(u.indent),"]"))))))}),Oc=r(function(t,r){var e=r;switch(e.ctor){case"Integer":return k(e._0);case"Float":var n=k(e._0);return _(xt,".",n)?n:_(y["++"],n,".0");case"Character":var o=e._0;switch(o.valueOf()){case" ":return"?\\s";case"\n":return"?\\n";case"\r":return"?\\r";case"\t":return"?\\t";case"\\":return"?\\\\";case"\0":return"?\\0";default:return _(y["++"],"?",Dt(o))}case"String":return _(y["++"],'"',_(y["++"],e._0,'"'));case"List":return _(y["++"],"[",_(y["++"],_(Lt,", ",_(Q,wc(t),e._0)),"]"));case"Tuple":return _(y["++"],"{",_(y["++"],_(Lt,", ",_(Q,wc(t),e._0)),"}"));case"Record":return _(y["++"],"%{",_(y["++"],_(Lt,", ",_(Q,function(r){var e=r;return _(y["++"],_(zn,!0,e._0),_(y["++"],": ",_(wc,t,e._1)))},e._0)),"}"));default:return _(qn,"expression",r)}}),qc=r(function(t,r){var e=r;return"If"===e.ctor?_(y["++"],{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:_(wc,Yn(t),e._0),_1:{ctor:"::",_0:" -> ",_1:{ctor:"::",_0:_(wc,Yn(t),e._1),_1:{ctor:"[]"}}}}},_(qc,t,e._2)):{ctor:"::",_0:$n(t.indent),_1:{ctor:"::",_0:"true -> ",_1:{ctor:"::",_0:_(wc,Yn(t),r),_1:{ctor:"[]"}}}}}),Mc=r(function(t,r){var e=r;t:do{if("[]"===e.ctor)return"";if("[]"!==e._1.ctor)break t;switch(e._0){case"()":return"{}";case"Nothing":return"nil";case"Just":return"fn x1 -> {x1} end";case"Err":return"fn x1 -> {:error, x1} end";case"Ok":return"fn x1 -> {:ok, x1} end";case"curry":return"curried()";case"uncurry":return"uncurried()";default:break t}}while(!1);return function(r){var e=r,n=e._1;if(Ln(n))return _(B,In(n),s(Rc,_(Zn,e._0,t),n,{ctor:"[]"}));if(_(wt,"@",n))return In(_(Rt,1,n));switch(Pn(n).ctor){case"Builtin":return h.eq(n,"<|")?"flip().((&|>/0).())":_(y["++"],"(&XBasics.",_(y["++"],xn(n),"/0).()"));case"Custom":return xn(n);default:return _(jo,t,_(zn,!0,n))}}(_(Cn,t.mod,e))}),Fc=e(function(t,e,n){if(_(wt,$n(t.indent+1),_(y["++"],"\n",n))){var o=_(_Bogdanp$elm_ast$Ast$parseExpression,_Bogdanp$elm_ast$Ast_BinOp$operators,Nt(n));if("Ok"===o.ctor&&"_Tuple3"===o._0.ctor&&"BinOp"===o._0._2.ctor&&"Variable"===o._0._2._0.ctor&&"::"===o._0._2._0._0.ctor&&"=="===o._0._2._0._0._0&&"[]"===o._0._2._0._0._1.ctor){var c=_(K,function(t){return _(r(function(t,r){return h.eq(t,r)}),e,Jt(t))},_(y["++"],_(Jn,t,fn),_(Jn,t,ln))),u=h.eq(c,{ctor:"[]"})?"":s(v,r(function(t,r){return _(y["++"],t,r)}),$n(0),_(r(function(t,r){return _(y["++"],t,r)}),_(y["++"],Rn(1),"iex> "),_(Lt,_(y["++"],$n(t.indent+2),"iex> "),_(zt,"\n",Ct(Un(t))))));return _(y["++"],u,_(y["++"],Rn(t.indent+1),_(y["++"],"iex> import ",_(y["++"],t.mod,_(y["++"],$n(t.indent+2),_(y["++"],"iex> ",_(y["++"],_(wc,t,o._0._2._1),_(y["++"],$n(t.indent+2),_(y["++"],_(wc,t,o._0._2._2),"\n")))))))))}return n}return n}),Dc=r(function(t,r){return _(K,_(v,J,r),t)}),Pc=r(function(t,e){var n=r(function(t,r){return _(y["++"],"{:'",_(y["++"],t,_(y["++"],"', ",_(y["++"],k(r),"}"))))});return _(Q,function(e){return Vn(e)?_(y["++"],_(n,xn(e),0),_(y["++"],", ",_(n,xn(e),2))):h.eq(e,"ffi")?"":_(y["++"],_(n,_(zn,!0,e),0),_(B,"",_(N,r(function(t,r){return _(y["++"],t,r)})(", "),_(N,n(_(zn,!0,e)),_(cn,r(function(t,r){return!h.eq(t,r)})(0),_(N,function(t){return t.arity},_(A,dr(e),_(N,function(t){return t.definitions},_(dr,t.mod,t.commons.modules)))))))))},e)}),Vc=function(t){var r=t;switch(r.ctor){case"TypeExport":return{ctor:"[]"};case"FunctionExport":return{ctor:"::",_0:r._0,_1:{ctor:"[]"}};default:return h.crashCase("ExStatement",{start:{line:482,column:5},end:{line:490,column:62}},r)(_(y["++"],"You can't export ",k(t)))}},jc=function(t){var r=t;t:do{if("::"===r.ctor){if("::"===r._1.ctor){if("[]"===r._1._1.ctor)return C({ctor:"_Tuple2",_0:r._0,_1:r._1._0});break t}if(""===r._0)return E;break t}break t}while(!1);return h.crashCase("ExStatement",{start:{line:369,column:5},end:{line:377,column:62}},r)(_(y["++"],"Wrong flag format ",k(r)))},Jc=e(function(t,r,e){var n=s(ec,e,t,r);return h.update(e,{importedTypes:s(V,_(v,jr,t),e.importedTypes,n)})}),Uc=function(t){var r=t;return"ModuleDeclaration"===r.ctor?_(so,On(r._0),r._1):h.crashCase("ExStatement",{start:{line:51,column:5},end:{line:56,column:69}},r)("First statement must be module declaration")},Wc=function(t){return{ctor:"Flag",_0:t}},Hc=function(t){return{ctor:"Normal",_0:t}},Qc=function(t){return{ctor:"Ex",_0:t}},Kc=function(t){return{ctor:"Doc",_0:t}},Xc=function(t){var r=e(function(t,r,e){var n=e;if("Normal"===n.ctor){var o=n._0;return _(rr,t,o)?r(l(tr,nr(1),t,m(""),o)):Hc(o)}return n});return s(V,g(r),Hc(t),_(Q,function(t){var r=t;return{ctor:"_Tuple2",_0:er(r._0),_1:r._1}},{ctor:"::",_0:{ctor:"_Tuple2",_0:"^\\sex\\b",_1:Qc},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"^\\|",_1:Kc},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"^\\sflag\\b",_1:Wc},_1:{ctor:"[]"}}}}))},Gc={ctor:"ModuleDoc"},Yc={ctor:"Typedoc"},Zc={ctor:"Fundoc"},tu=n(function(t,e,n,o){var c=t.hasModuleDoc?h.eq(e,Zc)?"@doc":"@typedoc":"@moduledoc";return _(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),h.update(t,{hasModuleDoc:!0,lastDoc:E}),_(y["++"],$n(t.indent),_(y["++"],c,_(y["++"],' """\n ',_(y["++"],l(tr,or,er("\n(\n| ){3,}\n"),m("\n\n"),_(Lt,$n(t.indent),_(Q,s(tr,or,er('"""'),m('\\"\\"\\"')),_(Q,yn,_(Q,_(Fc,t,n),At(o)))))),_(y["++"],$n(t.indent),'"""'))))))}),ru=o(function(t,e,n,o,c){var u=function(r){return(c?ac(h.update(t,{inTypeDefiniton:!0})):_(nc,!1,h.update(t,{inTypeDefiniton:!0})))(_(No,t,r))},i=function(t){var r=t;return"TypeVariable"===r.ctor?r._0:h.crashCase("ExStatement",{start:{line:68,column:13},end:{line:73,column:74}},r)(_(y["++"],k(t)," is not a type variable"))},a=h.eq(n,{ctor:"[]"})?"":_(y["++"],"(",_(y["++"],_(Lt,", ",_(Q,i,n)),")")),f=_(B,{ctor:"_Tuple2",_0:t,_1:""},_(N,s(tu,t,Yc,e),t.lastDoc)),d=f._0,p=f._1;return _(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),d,l(Xn,t,"notype",e,_(y["++"],p,_(y["++"],$n(t.indent),_(y["++"],"@type ",_(y["++"],_(zn,!0,e),_(y["++"],a,_(y["++"]," :: ",_(y["++"],_(Lt," | ",_(Q,u,o)),"\n")))))))))}),eu=r(function(t,e){var n=Xc(e);switch(n.ctor){case"Doc":var o=n._0;return t.hasModuleDoc?_(an["=>"],h.update(t,{lastDoc:C(o)}),""):l(tu,t,Gc,t.mod,o);case"Ex":return _(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,_(Sn,t.indent,_(Lt,"\n",_(Q,Nt,_(zt,"\n",n._0)))));case"Flag":return s(v,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),"",s(V,Gn,t,_(G,jc,_(Q,zt(":+"),s(Zt,or,er("\\s+"),n._0)))));default:return _(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,_(Sn,t.indent,_(Nn,"# ",n._0)))}}),nu=r(function(t,e){var n=e;t:do{switch(n.ctor){case"InfixDeclaration":return{ctor:"_Tuple2",_0:t,_1:""};case"TypeDeclaration":if("TypeConstructor"===n._0.ctor&&"::"===n._0._0.ctor&&"[]"===n._0._0._1.ctor)return f(ru,t,n._0._0._0,n._0._1,n._1,!0);break t;case"TypeAliasDeclaration":if("TypeConstructor"===n._0.ctor&&"::"===n._0._0.ctor&&"[]"===n._0._0._1.ctor)return f(ru,t,n._0._0._0,n._0._1,{ctor:"::",_0:n._1,_1:{ctor:"[]"}},!1);break t;case"FunctionTypeDeclaration":if("TypeApplication"===n._1.ctor){var o=n._0,c=_(No,t,n._1),u=_(B,{ctor:"_Tuple2",_0:t,_1:""},_(N,s(tu,t,Zc,o),t.lastDoc)),i=u._0,a=u._1;return _(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),i,_(y["++"],l(Xn,i,"nodef",o,a),function(){switch(Pn(o).ctor){case"Builtin":return"";case"Custom":return l(Xn,i,"nospec",o,_(y["++"],$n(i.indent),_(y["++"],"@spec ",_(y["++"],xn(o),_(ic,i,c)))));default:return l(Xn,i,"nospec",o,_(y["++"],$n(i.indent),_(y["++"],"@spec ",_(y["++"],_(zn,!0,o),_(ic,i,c)))))}}()))}var p=n._1,g=n._0,v=_(B,{ctor:"_Tuple2",_0:t,_1:""},_(N,s(tu,t,Zc,g),t.lastDoc)),i=v._0,a=v._1;return _(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),i,_(y["++"],a,function(){switch(Pn(g).ctor){case"Builtin":return"";case"Custom":return l(Xn,i,g,"nospec",_(y["++"],$n(t.indent),_(y["++"],"@spec ",_(y["++"],xn(g),_(ic,i,p)))));default:return l(Xn,i,g,"nospec",_(y["++"],$n(t.indent),_(y["++"],"@spec ",_(y["++"],_(zn,!0,g),_(ic,i,p)))))}}()));case"FunctionDeclaration":var m=n._0,b=n._2,T=n._1,w=_(r(function(t,r){return!h.eq(t,r)}),E,_(A,function(t){return _(dr,m,function(t){return t.definitions}(t))},_(dr,t.mod,t.commons.modules))),x=w||h.eq(T,{ctor:"[]"})?"":_(y["++"],$n(t.indent),_(y["++"],"curryp ",_(y["++"],_(zn,!0,m),_(y["++"],"/",k(j(T)))))),C=function(t){return"Tuple"===t.ctor},R=_(Hn,t,m),$=l(tc,t,wc,m,_(Q,_n,_(B,{ctor:"[]"},_(N,function(t){return _n(function(t){return t.def}(t))},_(A,function(t){return _(dr,m,function(t){return t.definitions}(t))},_(dr,t.mod,t.commons.modules))))));return _(an["=>"],t,w||R?_(y["++"],x,function(){var r=b;r:do{switch(r.ctor){case"Application":if("Application"!==r._0.ctor||"Variable"!==r._0._0.ctor||"::"!==r._0._0._0.ctor||"[]"!==r._0._0._0._1.ctor)break r;switch(r._0._0._0._0){case"ffi":case"tryFfi":return $(r);default:break r}case"Case":switch(r._0.ctor){case"Variable":if("::"===r._0._0.ctor&&"[]"===r._0._0._1.ctor){var e=r._0._0._0;return h.eq({ctor:"::",_0:r._0,_1:{ctor:"[]"}},T)?d(Ko,t,wc,e,T,b,r._1):f(Xo,t,wc,e,T,b)}break r;case"Tuple":var n=r._1;return h.eq(r._0._0,T)&&_(D,function(t){return C(Jt(t))},n)?d(Ko,t,wc,m,T,b,n):f(Xo,t,wc,m,T,b);default:break r}default:break r}}while(!1);return f(Xo,t,wc,m,T,b)}()):h.crash("ExStatement",{start:{line:213,column:25},end:{line:213,column:36}})(_(y["++"],"To be able to export it, you need to provide function type for `",_(y["++"],m,_(y["++"],"` function in module ",k(t.mod))))));case"Comment":return _(eu,t,n._0);case"ImportStatement":if("Just"===n._1.ctor){if("Nothing"===n._2.ctor)return _(an["=>"],t,_(y["++"],$n(t.indent),_(y["++"],"alias ",_(y["++"],On(n._0),_(y["++"],", as: ",n._1._0)))));break t}if("Nothing"===n._2.ctor)return _(an["=>"],t,_(y["++"],$n(t.indent),_(y["++"],"alias ",On(n._0))));switch(n._2._0.ctor){case"SubsetExport":var S=n._2._0,L=n._0,z=s(P,r(function(t,r){return _(y["++"],t,r)}),{ctor:"[]"},_(Q,Vc,n._2._0._0)),I=_(B,{ctor:"[]"},_(N,function(t){return _(Dc,z,ur(function(t){return t.definitions}(t)))},_(dr,t.mod,t.commons.modules))),O=h.eq(I,{ctor:"[]"})?{ctor:"[]"}:{ctor:"::",_0:_(y["++"],"except: [",_(y["++"],_(Lt,", ",_(Pc,t,I)),"]")),_1:{ctor:"[]"}},q=h.eq(z,{ctor:"[]"})?{ctor:"[]"}:{ctor:"::",_0:_(y["++"],"only: [",_(y["++"],_(Lt,", ",_(Pc,t,z)),"]")),_1:{ctor:"[]"}},M=h.eq(z,{ctor:"[]"})&&h.eq(I,{ctor:"[]"})?"alias ":"import ",F=_(Lt,".",L);return _(an["=>"],s(vo,S,On(L),s(Jc,F,S,t)),_(y["++"],$n(t.indent),_(y["++"],M,_(Lt,", ",s(P,r(function(t,r){return _(y["++"],t,r)}),{ctor:"[]"},{ctor:"::",_0:{ctor:"::",_0:On(L),_1:{ctor:"[]"}},_1:{ctor:"::",_0:q,_1:{ctor:"::",_0:O,_1:{ctor:"[]"}}}})))));case"AllExport":if("::"===n._0.ctor&&"Elchemy"===n._0._0&&"[]"===n._0._1.ctor)return{ctor:"_Tuple2",_0:t,_1:""};var V=On(n._0),J=_(B,{ctor:"[]"},_(N,function(t){return ur(function(t){return t.definitions}(t))},_(dr,V,t.commons.modules))),I=_(B,{ctor:"[]"},_(N,function(t){return _(Dc,J,ur(function(t){return t.definitions}(t)))},_(dr,t.mod,t.commons.modules))),O=h.eq(I,{ctor:"[]"})?{ctor:"[]"}:{ctor:"::",_0:_(y["++"],"except: [",_(y["++"],_(Lt,", ",_(Pc,t,I)),"]")),_1:{ctor:"[]"}};return _(an["=>"],s(Jc,V,_Bogdanp$elm_ast$Ast_Statement$AllExport,s(vo,_Bogdanp$elm_ast$Ast_Statement$AllExport,V,t)),_(y["++"],$n(t.indent),_(y["++"],"import ",_(Lt,", ",s(P,r(function(t,r){return _(y["++"],t,r)}),{ctor:"[]"},{ctor:"::",_0:{ctor:"::",_0:V,_1:{ctor:"[]"}},_1:{ctor:"::",_0:O,_1:{ctor:"[]"}}})))));default:break t}default:break t}}while(!1);return _(r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),t,_(qn,"statement",n))}),ou=r(function(t,r){var e=At(s($t,0,t,r));return{ctor:"_Tuple2",_0:j(e),_1:_(B,0,_(N,Ot,W(Y(e))))}}),cu=(s(tr,or,er('(?:({-(?:\\n|.)*?-})|([\\w\\])}"][\\t ]*)\\n[\\t ]+((?!.*\\s->\\s)(?!.*=)(?!.*\\bin\\b)[\\w[({"]))'),function(t){return _(Lt," ",_(G,b,_(Q,N(_(v,r(function(t,r){return _(y["++"],t,r)})," ")),t.submatches)))}),function(t){return l(tr,or,er("\n +\\w+ : .*"),m(""),l(tr,or,er("\\s--.*\n"),m(""),t))}),uu=function(t){return cu(t)},iu=r(function(t,r){var e=_Bogdanp$elm_ast$Ast$parse(uu(r));t:do{if("Ok"===e.ctor){if("_Tuple3"===e._0.ctor)return e._0._2;break t}if("_Tuple3"===e._0.ctor&&"_Tuple0"===e._0._0.ctor&&"::"===e._0._2.ctor&&"[]"===e._0._2._1.ctor){var n=_(ou,e._0._1.position,r),o=n._0,c=n._1;return h.crash("Compiler",{start:{line:216,column:17},end:{line:216,column:28}})(_(y["++"],"]ERR> Compilation error in:\n ",_(y["++"],t,_(y["++"],":",_(y["++"],k(o),_(y["++"],":",_(y["++"],k(c),_(y["++"],"\nat:\n ",_(y["++"],_(Lt,"\n",_(ut,30,At(e._0._1.input))),"\n")))))))))}break t}while(!1);return h.crashCase("Compiler",{start:{line:207,column:5},end:{line:232,column:39}},e)(k(e))}),au=r(function(t,r){var e=r,n=_(nu,e._0,t),o=n._0,c=n._1;return{ctor:"_Tuple2",_0:o,_1:_(y["++"],e._1,c)}}),_u=function(t){var r=t;if("[]"===r.ctor)return{ctor:"_Tuple2",_0:E,_1:{ctor:"[]"}};var e=r._1,n=Uc(r._0);return{ctor:"_Tuple2",_0:C(_(So,n,e)),_1:e}},su=function(t){var n=r(function(t,r){return d(_r,jr,e(function(t,r,e){return _(jr,t,r)}),jr,r,t,Er)});return s(V,function(t){return n(function(t){return t.modules}(t))},Er,t)},lu=function(t){var r=_(zt,"\n",t);return"::"===r.ctor?{ctor:"_Tuple2",_0:r._0,_1:_(Lt,"\n",r._1)}:{ctor:"_Tuple2",_0:"",_1:""}},fu=_(y["++"],"\n",_(y["++"],Nt("\n end\n\n "),"\n")),du=_(y["++"],$n(0),_(y["++"],"use Elchemy","\n")),pu=r(function(t,r){var e=Un(t);return _(y["++"],_(y["++"],"# Compiled using Elchemy v","0.6.3"),_(y["++"],"\n",_(y["++"],_(y["++"],"defmodule ",_(y["++"],t.mod," do")),_(y["++"],du,_(y["++"],$n(t.indent),_(y["++"],e,_(y["++"],jt(s(V,au,{ctor:"_Tuple2",_0:t,_1:""},r)),fu)))))))}),hu=r(function(t,e){if(_(rr,er("^\\s*$"),e))return{ctor:"_Tuple2",_0:"",_1:t};var n=_(zt,_(y["++"],">>",">>"),e);if("::"===n.ctor&&"[]"===n._1.ctor)return function(t){var r=t,e=r._0;if("Nothing"===e.ctor)return h.crashCase("Compiler",{start:{line:80,column:29},end:{line:85,column:63}},e)("Failed getting context");var n=e._0;return{ctor:"_Tuple2",_0:_(pu,n,r._1),_1:n.commons}}(_u(_(iu,"NoName.elm",n._0)));var o=n,c=_(x,"Number of files",j(o)),u=_(Q,function(t){var r=t,e=r._1._0;return s(v,x,e,_(y["++"],"Parsing ",_(y["++"],k(c-r._0),_(y["++"],"/",_(y["++"],k(c)," # "))))),{ctor:"_Tuple2",_0:e,_1:_(iu,e,r._1._1)}},_(lt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),_(Q,lu,o))),i=_(G,function(t){var r=t;return"Nothing"===r._1._0.ctor?E:C({ctor:"_Tuple3",_0:r._0,_1:r._1._0._0,_2:r._1._1})},_(Q,function(t){var r=t;return{ctor:"_Tuple2",_0:r._0,_1:_u(r._1)}},u)),a=function(t){return{modules:t}}(su(_(r(function(t,r){return{ctor:"::",_0:t,_1:r}}),t,_(Q,function(t){return t._1.commons},i)))),l=_(Q,function(t){var r=t;return{ctor:"_Tuple3",_0:r._0,_1:h.update(r._1,{commons:a}),_2:r._2}},i),f=function(t){var r=t,e=r._1._0;return s(v,x,e,_(y["++"],"Compiling ",_(y["++"],k(c-r._0),_(y["++"],"/",_(y["++"],k(c)," # "))))),_(y["++"],">>",_(y["++"],">>",_(y["++"],e,_(y["++"],"\n",_(pu,r._1._1,r._1._2)))))};return s(v,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),a,_(Lt,"\n",_(Q,f,_(lt,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),l))))}),gu=function(t){return _(hu,to,t)},vu=function(t){return Jt(gu(t))},mu=r(function(t,r){var e=t;return"Replace"===e.ctor?{ctor:"_Tuple2",_0:e._0,_1:Qt}:{ctor:"_Tuple2",_0:"",_1:Qt}}),bu=function(t){return{ctor:"_Tuple2",_0:t,_1:Qt}},yu=function(t){return _(on,{ctor:"[]"},_(y["++"],"```elixir\n",_(y["++"],vu(t),"\n```")))},ku=Ut.incomingPort("updateInput",He),Tu=function(t){return{ctor:"Replace",_0:t}},wu=tn({init:bu,update:mu,view:yu,subscriptions:function(t){return Xt({ctor:"::",_0:ku(Tu),_1:{ctor:"[]"}})}})(He),xu={};if(xu.Main=xu.Main||{},void 0!==wu&&wu(xu.Main,"Main",void 0),"function"==typeof define&&define.amd)return void define([],function(){return xu});if("object"==typeof t)return void(t.exports=xu);var Bu=this.Elm;if(void 0===Bu)return void(this.Elm=xu);for(var Eu in xu){if(Eu in Bu)throw new Error("There are two Elm modules called `"+Eu+"` on this page! Rename one of them.");Bu[Eu]=xu[Eu]}}).call(this)},function(t,r){},function(t,r,e){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e(1),o=(e.n(n),e(0)),c=e.n(o),u='module FizzBuzz exposing (fizzbuzz)\n\nimport List exposing (map, range)\n\n\n{-| Fizzes the buzzes, and buzzfizzes the fizz out of buzz\nfizzbuzz 1 7 == "1 2 Fizz 4 Buzz Fizz 7"\n-}\nfizzbuzz : Int -> Int -> String\nfizzbuzz from to =\n let\n fizzBuzz n =\n case ( n % 3, n % 5 ) of\n ( 0, 0 ) ->\n "FizzBuzz"\n\n ( 0, _ ) ->\n "Fizz"\n\n ( _, 0 ) ->\n "Buzz"\n\n _ ->\n toString n\n in\n List.range from to\n |> map (fizzBuzz >> toString)\n |> joinWords\n\n\njoinWords : List String -> String\njoinWords a =\n String.join " " a',i=c.a.Main.embed(document.getElementById("root"),u),a=CodeMirror(document.getElementById("code-editor"),{value:u,lineNumbers:!0,mode:"elm",theme:"one-dark"});a.setSize("100%","100%"),a.on("change",function(t,r){return i.ports.updateInput.send(t.getValue())}),window.onerror=function(t,r,e){return setTimeout(function(){var r=t.split("The message provided by the code author is:");2==r.length&&(document.getElementById("error-dialog").innerText=r[1])},30),!1},window.onkeydown=function(){document.getElementById("error-dialog").innerText=""}}]); \ No newline at end of file diff --git a/elchemy b/elchemy index 7f73df2..2781337 100755 --- a/elchemy +++ b/elchemy @@ -1,7 +1,7 @@ #!/bin/bash -version="0.7.1" +version="0.7.2" set -e VERBOSE=false diff --git a/elchemy-core b/elchemy-core index a5590cf..5802884 160000 --- a/elchemy-core +++ b/elchemy-core @@ -1 +1 @@ -Subproject commit a5590cf58a8f247f2c1c050a6ce406bf14290014 +Subproject commit 5802884300d401dbacae5cf5fc464b8866a47aab diff --git a/mix.exs b/mix.exs index fd2211c..feaec47 100644 --- a/mix.exs +++ b/mix.exs @@ -5,7 +5,7 @@ defmodule Elchemy.Mixfile do [app: :elchemy, name: "Elchemy Compiler", description: "Mix compiler wrapper around Elchemy project", - version: "0.7.1", + version: "0.7.2", elixir: "~> 1.4", description: "", package: package(), diff --git a/src/Compiler.elm b/src/Compiler.elm index 50e7d27..8d79f0b 100644 --- a/src/Compiler.elm +++ b/src/Compiler.elm @@ -21,7 +21,7 @@ import Regex exposing (Regex, HowMany(..), regex) -} version : String version = - "0.7.1" + "0.7.2" glueStart : String