UNPKG

cor-lang

Version:
1,311 lines (1,103 loc) 166 kB
/* Cor is released under the BSD license: Copyright 2015 (c) Yosbel Marin <yosbel.marin@gtm.jovenclub.cu> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ (function(){ /* CRL (Cor Runtime Library) */ CRL = (typeof CRL === 'undefined' ? {} : CRL); var hasProp = Object.prototype.hasOwnProperty, toString = Object.prototype.toString, nativeTypes = { 'String' : String, 'Number' : Number, 'Boolean' : Boolean, 'RegExp' : RegExp, 'Array' : Array, 'Object' : Object, 'Function' : Function }; // copy object own properties from an source `src` to a destiny `dst` // returns the destiny object CRL.copyObj = Object.assign ? Object.assign : function copyObj(dest, src) { var name; for (name in src) { if (hasProp.call(src, name)) { dest[name] = src[name]; } } return dest; }; // convert a class in a subclass of other class // CRL.subclass(Subclass, Superclass) CRL.subclass = function subclass(subClass, superClass) { CRL.copyObj(subClass, superClass); function Proto() { this.constructor = subClass; } Proto.prototype = superClass.prototype; subClass.prototype = new Proto(); } // extract keys from an object or array // CRL.keys([5, 7, 3]) -> [0, 1, 2] // CRL.keys({x: 2, y: 4}) -> ['x', 'y'] CRL.keys = function keys(obj) { var keys, i, len; // is array if (obj instanceof Array) { i = -1; len = obj.length; keys = []; while (++i < len) { keys.push(i); } return keys; } // if has key function if (typeof Object.keys === 'function') { return Object.keys(obj); } // otherwise polyfill it for (i in obj) { if (hasProp.call(obj, i)) { keys.push(i); } } return keys; }; // whether a object is instance of a class or not // CRL.assertType({}, Object) // CRL.assertType(person, Person) CRL.assertType = function assertType(obj, Class) { var type; if (Class === void 0) { return obj === void 0; } if (typeof Class !== 'function') { throw 'Trying to assert invalid class'; } if (typeof obj === 'undefined') { throw 'Trying to assert undefined object'; } // try with instanceof if (obj instanceof Class) { return true; } // try with finding the native type according to "Object.prototype.toString" type = toString.call(obj); type = type.substring(8, type.length - 1); if(hasProp.call(nativeTypes, type) && nativeTypes[type] === Class) { return true; } return false; }; CRL.regex = function regex(pattern, flags) { return new RegExp(pattern, flags); } })(); (function(global) { // Lightweight non standard compliant Promise function Promise(resolverFn) { if (typeof resolverFn !== 'function') { throw 'provided resolver must be a function'; } var p = this; // this.value; // this.reason; this.completed = false; this.fail = false; this.success = false; this.thenListeners = []; this.catchListeners = []; resolverFn( function resolve(value){ Promise.doResolve(p, value); }, function reject(reason) { Promise.doReject(p, reason); } ); } Promise.prototype = { then: function(onSuccess, onFail) { if (isFunction(onSuccess)) { // proactive add this.thenListeners.push(onSuccess); if (this.success) { Promise.doResolve(this, this.value); } } if (isFunction(onFail)) { // proactive add this.catchListeners.push(onFail); if (this.fail) { Promise.doReject(this, this.reason); } } }, catch: function(onFail) { this.then(null, onFail); } }; Promise.doResolve = function doResolve(p, value) { p.thenListeners.forEach(function(listener) { listener(value); }) p.success = true; p.value = value; p.completed = true; }; Promise.doReject = function doReject(p, reason) { if (p.catchListeners.length === 0) { console.log('Uncaught (in promise): ' + reason); } p.catchListeners.forEach(function(listener) { listener(reason); }) p.fail = true; p.reason = reason; p.completed = true; }; Promise.all = function all(array) { var promise, i = -1, numPending = 0, result = [], len = array.length; return new Promise(function(resolve) { while (++i < len) { promise = array[i]; if (isPromise(promise)) { setupThen(promise, i); } else { result[i] = array[i]; tryToResolve(); } } function setupThen(promise, i) { numPending++; // default value result[i] = void 0; promise.then(function(value) { result[i] = value; numPending--; tryToResolve(); }) } function tryToResolve() { if (numPending === 0) { resolve(result) } } }) } Promise.defer = function defer() { var deferred = {}; // use CRL.Promise deferred.promise = new CRL.Promise(function(resolve, reject) { deferred.resolve = resolve; deferred.reject = reject; }) return deferred; } CRL.Promise = Promise; // polyfill Promise if (typeof global.Promise !== 'function') { global.Promise = CRL.Promise; } // Coroutines // Schedule function schedule(fn, time) { if (time === void 0 && typeof global.setImmediate !== 'undefined') { setImmediate(fn); } else { setTimeout(fn, +time); } } function isPromise(p) { return p && typeof p.then === 'function'; } function isFunction(f) { return typeof f === 'function'; } function isObject(obj) { return obj && Object == obj.constructor; } function isArray(arr) { return Array.isArray(arr); } // Generator Runner CRL.go = function go(genf, ctx) { var state, gen = genf.apply(ctx || {}); return new CRL.Promise(function(resolve, reject) { // ensure it runs asynchronously schedule(next); function next(value) { if (state && state.done) { resolve(value); return; } try { state = gen.next(value); value = state.value; } catch (e) { console.error(e.stack ? '\n' + e.stack : e); return; } if (isPromise(value)) { value.then( function onFulfilled(value) { next(value) }, function onRejected(reason) { gen.throw(reason) } ) return; } next(value); } }) } // convert to promise as much possible function toPromise(obj) { if (isPromise(obj)) { return obj; } if (isArray(obj)) { return arrayToPromise(obj); } if (isObject(obj)) { return objectToPromise(obj); } } // convert array to promise function arrayToPromise(array) { var promise; return CRL.Promise.all(array.map(function(value) { promise = toPromise(value); if (isPromise(promise)) { return promise; } return value; })); } // convert object to promise function objectToPromise(obj) { var key, promise, ret, promises = [], result = {}, i = -1, keys = Object.keys(obj), len = keys.length; ret = new CRL.Promise(function(resolve) { while (++i < len) { key = keys[i]; promise = toPromise(obj[key]); if (isPromise(promise)) { setupThen(promise, key); } else { result[key] = obj[key]; } } CRL.Promise.all(promises).then(function() { resolve(result); }) function setupThen(promise, key) { // default value result[key] = void 0; promise.then(function(value) { result[key] = value; }) promises.push(promise); } }) return ret; } // receiver CRL.receive = function receive(obj) { var prom; if (obj && isFunction(obj.receive)) { return obj.receive(); } prom = toPromise(obj); if (isPromise(prom)) { return prom; } return obj; } // sender CRL.send = function send(obj, value) { if (obj && isFunction(obj.send)) { return obj.send(value); } throw 'unable to receive values'; } function timeout(time) { if (!isNaN(time) && time !== null) { return new CRL.Promise(function(resolve) { schedule(resolve, time) }) } throw 'Invalid time'; } CRL.timeout = timeout; // Buffer: simple array based buffer to use with channels function Buffer(size) { this.size = isNaN(size) ? 1 : size; this.array = []; } Buffer.prototype = { read: function() { return this.array.shift(); }, write: function(value) { if (this.isFull()) { return false } this.array.push(value); return true; }, isFull: function() { return !(this.array.length < this.size); }, isEmpty: function() { return this.array.length === 0; } } function isBuffer(b) { return (b && isFunction(b.read) && isFunction(b.write) && isFunction(b.isFull) && isFunction(b.isEmpty)); } // Channel: a structure to transport messages function indentityFn(x) {return x} function scheduledResolve(deferred, value) { schedule(function() { deferred.resolve(value) }) } function Channel(buffer, transform) { this.buffer = buffer; this.closed = false; this.data = void 0; this.senderPromises = []; this.receiverPromises = []; this.transform = transform || indentityFn; } Channel.prototype = { receive: function() { var data, deferred; // is unbuffered if (! this.buffer) { // there is data? if (this.data !== void 0) { // resume the first sender coroutine if (this.senderPromises[0]) { scheduledResolve(this.senderPromises.shift()); } // clean and return data = this.data; this.data = void 0; return data; // if no data } else { // suspend the coroutine wanting to receive deferred = Promise.defer(); this.receiverPromises.push(deferred); return deferred.promise; } } // if buffered // empty buffer? if (this.buffer.isEmpty()) { // suspend the coroutine wanting to receive deferred = Promise.defer(); this.receiverPromises.push(deferred); return deferred.promise; // some value in the buffer? } else { // resume the first sender coroutine if (this.senderPromises[0]) { scheduledResolve(this.senderPromises.shift()); } // clean and return return this.buffer.read(); } }, send: function(data) { if (this.closed) { throw 'closed channel' } var deferred; // is unbuffered if (! this.buffer) { // some stored data? if (this.data !== void 0) { // deliver data to the first waiting coroutine if (this.receiverPromises[0]) { scheduledResolve(this.receiverPromises.shift(), this.data); } // no stored data? } else { // pass sent data directly to the first waiting for it if (this.receiverPromises[0]) { this.data = void 0; scheduledResolve(this.receiverPromises.shift(), this.transform(data)); // schedule the the sender coroutine return timeout(0); } } // else, store the transformed data this.data = this.transform(data); deferred = Promise.defer(); this.senderPromises.push(deferred); return deferred.promise; } // if buffered // emty buffer? if (! this.buffer.isFull()) { // TODO: optimize below code // store sent value in the buffer this.buffer.write(this.transform(data)); // if any waiting for the data, give it if (this.receiverPromises[0]) { scheduledResolve(this.receiverPromises.shift(), this.buffer.read()); } } // full buffer? if (this.buffer.isFull()) { // stop until the buffer start to be drained deferred = Promise.defer(); this.senderPromises.push(deferred); return deferred.promise; } }, close: function() { this.closed = true; this.senderPromises = []; while (this.receiverPromises.length) { scheduledResolve(this.receiverPromises.shift()); } } } CRL.Channel = Channel; CRL.chan = function chan(size, transform) { if (isBuffer(size)) { return new Channel(size, transform); } // isNaN(null) == false :O if (isNaN(size) || size === null) { return new Channel(null, transform); } return new Channel(new Buffer(size), transform); } })(this); (function(){ cor = (typeof cor === 'undefined' ? {} : cor); var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined', isNode = ! isBrowser && typeof global !== 'undefined' && typeof process !== 'undefined'; if (isBrowser) { global = window; } cor.isBrowser = isBrowser; cor.isNode = isNode; cor.compile = function(src, filename) { var comp = new cor.Compiler(src, filename), ast = comp.parse(), js = comp.compile(ast); return js; }; cor.run = function(src, require, module, exports) { exports = exports || {}; require = require || function(){}; module = module || {exports: exports}; var PROG, js = this.compile(src); eval('var PROG=function(require,module,exports){var PROG;' + js + '};'); PROG(require, module, exports); return module.exports; }; })(); (function(cor){ /* A library to provide some OO features across Cor source code Usage: var Class = cor.Class; var A = Class({ init: function(){ this.xx = true; this.y() }, y: function(){ console.log('A') } }) var B = Class(A, { y: function(){ this.base('y') console.log('B') } }) var C = Class(B, { y: function(){ this.base('y') console.log('C') } }) c = new C() c; */ var hasProp = Object.prototype.hasOwnProperty; function Class(Base, classBody){ if (! classBody){ classBody = Base || {}; Base = function(){}; } var key, member, base = newBaseMethod(), Class = newClass(), proto = Object.create(Base.prototype); for (key in classBody) { if (! hasProp.call(classBody, key)){ continue; } member = classBody[key]; if (typeof member === 'function') { member.$owner = Class; } proto[key] = classBody[key]; } proto._base_ = Base; proto.base = base; Class.prototype = proto; return Class; }; function newClass() { return function() { (typeof this.init === 'function') && this.init.apply(this, arguments); }; } function newBaseMethod() { return function base(methodName, args){ var callerMethod = this.base.caller, meth = callerMethod.$owner.prototype._base_.prototype[methodName]; if (typeof meth === 'function') { return meth.apply(this, args); } throw "Can not find the base method '" + methodName + "'"; }; } cor.Class = Class; })(typeof cor === 'undefined' ? {} : cor); /* parser generated by jison 0.4.15 */ /* Returns a Parser object of the following structure: Parser: { yy: {} } Parser.prototype: { yy: {}, trace: function(), symbols_: {associative list: name ==> number}, terminals_: {associative list: number ==> name}, productions_: [...], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), table: [...], defaultActions: {...}, parseError: function(str, hash), parse: function(input), lexer: { EOF: 1, parseError: function(str, hash), setInput: function(input), input: function(), unput: function(str), more: function(), less: function(n), pastInput: function(), upcomingInput: function(), showPosition: function(), test_match: function(regex_match_array, rule_index), next: function(), lex: function(), begin: function(condition), popState: function(), _currentRules: function(), topState: function(), pushState: function(condition), options: { ranges: boolean (optional: true ==> token location info will include a .range[] member) flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) }, performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), rules: [...], conditions: {associative list: name ==> set}, } } token location info (@$, _$, etc.): { first_line: n, last_line: n, first_column: n, last_column: n, range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) } the parseError function receives a 'hash' object with these members for lexer and parser errors: { text: (matched text) token: (the produced terminal token, if any) line: (yylineno) } while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { loc: (yylloc) expected: (string describing the set of expected tokens) recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) } */ var CorParser = (function(){ var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,4],$V1=[1,11],$V2=[1,14],$V3=[1,9],$V4=[1,10],$V5=[1,12],$V6=[5,9,10,22,26,37],$V7=[1,24],$V8=[5,9,10,14,16,18,22,24,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,121,126,132,134],$V9=[5,22],$Va=[1,42],$Vb=[1,55],$Vc=[1,51],$Vd=[1,50],$Ve=[1,52],$Vf=[1,53],$Vg=[1,54],$Vh=[1,46],$Vi=[1,47],$Vj=[1,48],$Vk=[1,49],$Vl=[1,63],$Vm=[1,40],$Vn=[1,66],$Vo=[1,64],$Vp=[1,65],$Vq=[5,9,10,14,16,18,22,26,30,33,37,132,134],$Vr=[2,158],$Vs=[1,74],$Vt=[1,75],$Vu=[1,76],$Vv=[1,77],$Vw=[5,9,10,14,16,18,22,26,30,33,37,49,100,101,113,117,121,132,134],$Vx=[1,78],$Vy=[1,79],$Vz=[1,80],$VA=[1,81],$VB=[1,82],$VC=[1,83],$VD=[1,84],$VE=[2,87],$VF=[5,9,10,14,16,18,22,26,30,33,37,49,100,101,106,107,108,109,110,111,112,113,117,121,132,134],$VG=[5,9,10,14,16,18,22,24,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,115,117,118,121,126,132,134],$VH=[2,84],$VI=[2,101],$VJ=[1,91],$VK=[1,88],$VL=[1,89],$VM=[1,90],$VN=[5,9,10,14,16,18,22,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,121,126,132,134],$VO=[2,89],$VP=[1,103],$VQ=[1,104],$VR=[1,109],$VS=[30,33],$VT=[1,118],$VU=[2,10],$VV=[1,117],$VW=[1,134],$VX=[1,132],$VY=[1,133],$VZ=[1,142],$V_=[1,140],$V$=[1,143],$V01=[1,141],$V11=[1,147],$V21=[1,148],$V31=[1,149],$V41=[1,150],$V51=[1,151],$V61=[1,152],$V71=[1,153],$V81=[1,157],$V91=[1,146],$Va1=[1,155],$Vb1=[1,154],$Vc1=[1,144],$Vd1=[1,156],$Ve1=[1,145],$Vf1=[1,158],$Vg1=[1,170],$Vh1=[1,171],$Vi1=[2,33],$Vj1=[1,196],$Vk1=[1,197],$Vl1=[1,198],$Vm1=[1,199],$Vn1=[1,203],$Vo1=[1,200],$Vp1=[1,201],$Vq1=[1,202],$Vr1=[10,18,22,26],$Vs1=[18,22],$Vt1=[14,100,101,106,107,108,109,110,111,112,113],$Vu1=[1,225],$Vv1=[10,26,28,30,38,88,89,90,91,100,101,102,103,112,113,128,130,133],$Vw1=[10,18,22,26,28,38,51,56,64,69,71,73,75,79,82,88,89,90,91,100,101,102,103,112,113,128,130,133],$Vx1=[1,242],$Vy1=[2,39],$Vz1=[1,243],$VA1=[2,40],$VB1=[1,244],$VC1=[2,205],$VD1=[1,255],$VE1=[1,256],$VF1=[16,18,22],$VG1=[2,122],$VH1=[1,277],$VI1=[2,206],$VJ1=[1,298],$VK1=[1,299],$VL1=[18,69,71],$VM1=[1,328],$VN1=[1,329],$VO1=[1,330]; var parser = {trace: function trace() { }, yy: {}, symbols_: {"error":2,"Module":3,"Source":4,"EOF":5,"GlobalStmt":6,"GlobalStmtNoSemicolon":7,"ClassStmt":8,"CLASS":9,"IDENT":10,"ClassStmt_option0":11,"ClassBlock":12,"ExtendsStmt":13,":":14,"QualifiedIdent":15,"{":16,"MemberList":17,"}":18,"Member":19,"MemberNotSemicolon":20,"PropertyDecl":21,";":22,"FunctionStmt":23,"=":24,"Value":25,"FUNC":26,"FunctionStmt_option0":27,"(":28,"FunctionStmt_option1":29,")":30,"FunctionStmt_group0":31,"FunctionArgs":32,",":33,"Block":34,"StmtList":35,"UseStmt":36,"USE":37,"STRING":38,"UseStmt_option0":39,"GlobalDeclarationStmt":40,"Stmt":41,"StmtNotSemicolon":42,"StrictStmtList":43,"SimpleStmt":44,"Expr":45,"IncDecStmt":46,"SimpleStmtNotSemicolon":47,"OperationExpr":48,"INCDECOP":49,"IfStmt":50,"IF":51,"IfStmt_option0":52,"ElseStmt":53,"ELSE":54,"ForStmt":55,"FOR":56,"ForStmt_option0":57,"ForStmt_option1":58,"ForStmt_option2":59,"ForInStmt":60,"IN":61,"ForInRangeStmt":62,"SwitchStmt":63,"SWITCH":64,"SwitchStmt_option0":65,"CaseBlock":66,"CaseStmtList":67,"CaseStmt":68,"CASE":69,"ExprList":70,"DEFAULT":71,"CatchStmt":72,"CATCH":73,"ReturnStmt":74,"RETURN":75,"ReturnStmt_option0":76,"ReturnStmtNotSemicolon":77,"BreakStmt":78,"BREAK":79,"BreakStmtNotSemicolon":80,"ContinueStmt":81,"CONTINUE":82,"ContinueStmtNotSemicolon":83,"LeftHandExpr":84,"IndexExpr":85,"SelectorExpr":86,"PrimaryExpr":87,"ME":88,"BOOLEAN":89,"NUMBER":90,"NIL":91,"SliceExpr":92,"CallExpr":93,"TypeAssertExpr":94,"ObjectConstructor":95,"ArrayConstructor":96,"TemplateLiteral":97,"GoExpr":98,"UnaryExpr":99,"+":100,"-":101,"!":102,"~":103,"?":104,"OperationExprNotAdditive":105,"*":106,"/":107,"%":108,"SHIFTOP":109,"COMPARISONOP":110,"BINARYOP":111,"&":112,"ASYNCOP":113,"AssignmentExpr":114,"ASSIGNMENTOP":115,"CoalesceExpr":116,"COALESCEOP":117,"[":118,"SliceExpr_option0":119,"SliceExpr_option1":120,"]":121,"SliceExpr_option2":122,"SliceExpr_option3":123,"CallExpr_option0":124,"CallExpr_option1":125,".":126,"Property":127,"GO":128,"TypeAssertExpr_option0":129,"TPL_BEGIN":130,"TemplateLiteralBody":131,"TPL_END":132,"TPL_SIMPLE":133,"TPL_CONTINUATION":134,"TemplateLiteralBody_option0":135,"ReceiveExpr":136,"KeyValueElementList":137,"ObjectConstructorArgs":138,"SimpleElementList":139,"KeyedElement":140,"KeyValueElementList_option0":141,"SimpleElementList_option0":142,"ArrayItems":143,"ArrayConstructor_option0":144,"ValueList":145,"ValueList_option0":146,"$accept":0,"$end":1}, terminals_: {2:"error",5:"EOF",9:"CLASS",10:"IDENT",14:":",16:"{",18:"}",22:";",24:"=",26:"FUNC",28:"(",30:")",33:",",37:"USE",38:"STRING",49:"INCDECOP",51:"IF",54:"ELSE",56:"FOR",61:"IN",64:"SWITCH",69:"CASE",71:"DEFAULT",73:"CATCH",75:"RETURN",79:"BREAK",82:"CONTINUE",88:"ME",89:"BOOLEAN",90:"NUMBER",91:"NIL",100:"+",101:"-",102:"!",103:"~",104:"?",106:"*",107:"/",108:"%",109:"SHIFTOP",110:"COMPARISONOP",111:"BINARYOP",112:"&",113:"ASYNCOP",115:"ASSIGNMENTOP",117:"COALESCEOP",118:"[",121:"]",126:".",128:"GO",130:"TPL_BEGIN",132:"TPL_END",133:"TPL_SIMPLE",134:"TPL_CONTINUATION"}, productions_: [0,[3,2],[4,2],[4,1],[4,0],[8,4],[13,2],[12,3],[17,2],[17,1],[17,0],[19,2],[19,2],[19,1],[20,1],[20,1],[21,3],[21,1],[23,6],[32,1],[32,3],[34,3],[36,3],[40,3],[6,1],[6,1],[6,2],[6,2],[6,1],[7,1],[7,1],[35,2],[35,1],[35,0],[43,1],[43,2],[44,2],[44,2],[44,1],[47,1],[47,1],[46,2],[50,4],[53,2],[53,2],[55,7],[55,3],[55,2],[60,5],[60,7],[62,7],[62,6],[62,6],[62,5],[63,3],[66,3],[67,1],[67,2],[68,4],[68,3],[72,3],[74,3],[77,2],[77,1],[78,2],[80,1],[81,2],[83,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,2],[42,1],[42,1],[42,1],[42,1],[42,1],[84,1],[84,1],[84,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,3],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[99,1],[99,2],[99,2],[99,2],[99,2],[99,2],[105,1],[105,3],[105,3],[105,3],[105,3],[105,3],[105,3],[105,3],[48,1],[48,3],[48,3],[48,3],[114,3],[114,3],[116,3],[70,1],[70,3],[92,6],[92,7],[93,4],[93,5],[86,3],[86,4],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[127,1],[85,4],[85,5],[94,5],[97,3],[97,1],[131,1],[131,3],[98,2],[136,2],[45,1],[45,1],[45,1],[45,1],[95,3],[95,3],[95,3],[95,2],[138,2],[138,3],[138,3],[15,1],[15,3],[137,1],[137,3],[140,3],[140,3],[139,1],[139,3],[96,3],[96,4],[143,2],[143,3],[25,1],[25,1],[145,1],[145,3],[11,0],[11,1],[27,0],[27,1],[29,0],[29,1],[31,1],[31,1],[39,0],[39,1],[52,0],[52,1],[57,0],[57,1],[58,0],[58,1],[59,0],[59,1],[65,0],[65,1],[76,0],[76,1],[119,0],[119,1],[120,0],[120,1],[122,0],[122,1],[123,0],[123,1],[124,0],[124,1],[125,0],[125,1],[129,0],[129,1],[135,0],[135,1],[141,0],[141,1],[142,0],[142,1],[144,0],[144,1],[146,0],[146,1]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ var $0 = $$.length - 1; switch (yystate) { case 1: return new yy.ModuleNode($$[$0-1]) break; case 2: case 31: if ($$[$0] instanceof yy.List) { $$[$0].addFront($$[$0-1]) this.$= $$[$0] } else if ($$[$0]){ this.$= new yy.List($$[$0-1], $$[$0]) } else { this.$= new yy.List($$[$0-1]) } break; case 3: if (this.$ instanceof yy.List) { this.$.add($$[$0]) } else { this.$ = new yy.List($$[$0]) } break; case 4: this.$= new yy.List() break; case 5: this.$= new yy.ClassNode( new yy.Lit($$[$0-3], _$[$0-3]), new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0] ) break; case 6: case 43: case 44: case 62: this.$= new yy.Node(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 7: case 55: this.$= new yy.Node(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 8: if ($$[$0] instanceof yy.List) { $$[$0].addFront($$[$0-1]) this.$= $$[$0] } else if ($$[$0]) { this.$= new yy.List($$[$0-1], $$[$0]) } else { this.$= new yy.List($$[$0-1]) } break; case 9: case 34: case 122: case 154: case 171: case 175: this.$= new yy.List($$[$0]) break; case 11: $$[$0-1].children.push(new yy.Lit(';', _$[$0])); this.$=$$[$0-1] break; case 12: this.$= new yy.MethodNode($$[$0-1], new yy.Lit(';', _$[$0])) break; case 13: this.$= new yy.Lit(';', _$[$0]) break; case 15: this.$= new yy.MethodNode($$[$0]) break; case 16: this.$= new yy.PropertyNode(new yy.Lit($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 17: this.$= new yy.PropertyNode(new yy.Lit($$[$0], _$[$0])) break; case 18: this.$= new yy.FunctionNode( new yy.Lit($$[$0-5], _$[$0-5]), new yy.Lit($$[$0-4], _$[$0-4]), new yy.Lit($$[$0-3], _$[$0-3]), $$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0] ) break; case 19: case 169: this.$= new yy.List(new yy.Lit($$[$0], _$[$0])) break; case 20: case 170: $$[$0-2].add(new yy.Lit($$[$0-1], _$[$0-1]), new yy.Lit($$[$0], _$[$0])) break; case 21: this.$= new yy.BlockNode( new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]) ) break; case 22: this.$= new yy.UseNode(new yy.Str($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0] ? new yy.Lit($$[$0], _$[$0]) : null) break; case 23: case 119: case 120: this.$= new yy.AssignmentNode($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 26: case 27: $$[$0-1].children.push(new yy.Lit(';', _$[$0])); this.$ = $$[$0-1] break; case 28: case 38: this.$= new yy.Lit(';', _$[$0]) break; case 35: case 57: $$[$0-1].add($$[$0]) break; case 36: case 37: this.$= new yy.SimpleStmtNode($$[$0-1], new yy.Lit(';', _$[$0])) break; case 39: case 40: this.$= new yy.SimpleStmtNode($$[$0]) break; case 41: this.$= new yy.Node($$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 42: this.$= new yy.IfNode(new yy.Lit($$[$0-3], _$[$0-3]), $$[$0-2], $$[$0-1], $$[$0]) break; case 45: this.$= new yy.ForNode( new yy.Lit($$[$0-6], _$[$0-6]), $$[$0-5], new yy.Lit($$[$0-4], _$[$0-4]), $$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0] ) break; case 46: this.$= new yy.ForNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0]) break; case 47: this.$= new yy.ForNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 48: this.$= new yy.ForInNode( new yy.Lit($$[$0-4], _$[$0-4]), new yy.VarNode(new yy.Lit($$[$0-3], _$[$0-3])), new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0] ) break; case 49: this.$= new yy.ForInNode( new yy.Lit($$[$0-6], _$[$0-6]), new yy.VarNode(new yy.Lit($$[$0-5], _$[$0-5])), new yy.Lit($$[$0-4], _$[$0-4]), new yy.VarNode(new yy.Lit($$[$0-3], _$[$0-3])), new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0] ) break; case 50: this.$= new yy.ForInRangeNode( new yy.Lit($$[$0-6], _$[$0-6]), new yy.VarNode(new yy.Lit($$[$0-5], _$[$0-5])), new yy.Lit($$[$0-4], _$[$0-4]), $$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0] ) break; case 51: this.$= new yy.ForInRangeNode( new yy.Lit($$[$0-5], _$[$0-5]), new yy.VarNode(new yy.Lit($$[$0-4], _$[$0-4])), new yy.Lit($$[$0-3], _$[$0-3]), $$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), null, $$[$0] ) break; case 52: this.$= new yy.ForInRangeNode( new yy.Lit($$[$0-5], _$[$0-5]), new yy.VarNode(new yy.Lit($$[$0-4], _$[$0-4])), new yy.Lit($$[$0-3], _$[$0-3]), null, new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0] ) break; case 53: this.$= new yy.ForInRangeNode( new yy.Lit($$[$0-4], _$[$0-4]), new yy.VarNode(new yy.Lit($$[$0-3], _$[$0-3])), new yy.Lit($$[$0-2], _$[$0-2]), null, new yy.Lit($$[$0-1], _$[$0-1]), null, $$[$0] ) break; case 54: this.$= new yy.SwitchNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0]) break; case 56: this.$ = new yy.List($$[$0]) break; case 58: this.$= new yy.CaseNode(new yy.Lit($$[$0-3], _$[$0-3]), $$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 59: this.$= new yy.CaseNode(new yy.Lit($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 60: this.$= new yy.CatchNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0]) break; case 61: this.$= new yy.Node(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit(';', _$[$0])) break; case 63: case 90: case 91: case 92: this.$= new yy.Lit($$[$0], _$[$0]) break; case 64: case 66: this.$= new yy.Node(new yy.Lit($$[$0-1], _$[$0-1]), new yy.Lit(';', _$[$0])) break; case 65: case 67: this.$= new yy.Node(new yy.Lit($$[$0], _$[$0])) break; case 84: this.$= new yy.VarNode(new yy.Lit($$[$0], _$[$0])) break; case 88: this.$= new yy.MeNode($$[$0], _$[$0]) break; case 89: this.$= new yy.Str($$[$0], _$[$0]) break; case 93: this.$= new yy.AssociationNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 102: case 103: case 104: case 105: this.$= new yy.UnaryExprNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 106: this.$= new yy.UnaryExistenceNode($$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 108: case 109: case 110: case 111: case 112: case 113: case 114: case 116: case 117: this.$= new yy.Node($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 118: this.$= new yy.SendAsyncNode($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 121: this.$= new yy.CoalesceNode($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 123: case 184: $$[$0-2].add(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 124: this.$= new yy.SliceNode( $$[$0-5], new yy.Lit($$[$0-4], _$[$0-4]), $$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]) ) break; case 125: this.$= new yy.ExistenceNode( new yy.SliceNode( $$[$0-6], new yy.Lit($$[$0-4], _$[$0-4]), $$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]) ) ) break; case 126: this.$= new yy.CallNode($$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 127: this.$= new yy.ExistenceNode(new yy.CallNode($$[$0-4], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))) break; case 128: this.$= new yy.Node($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), new yy.ObjectPropertyNode($$[$0], _$[$0])) break; case 129: this.$= new yy.ExistenceNode(new yy.Node($$[$0-3], new yy.Lit($$[$0-1], _$[$0-1]), new yy.ObjectPropertyNode($$[$0], _$[$0]))) break; case 149: this.$= new yy.Node($$[$0-3], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 150: this.$= new yy.ExistenceNode(new yy.Node($$[$0-4], new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]))) break; case 151: this.$= new yy.TypeAssertNode( $$[$0-4], new yy.Lit($$[$0-3], _$[$0-3]), new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]) ) break; case 152: this.$= new yy.TemplateLiteralNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 153: this.$= new yy.TemplateLiteralNode(new yy.Lit($$[$0], _$[$0])) break; case 155: case 172: if ($$[$0] instanceof yy.List) { $$[$0].addFront($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1])) this.$= $$[$0] } else if ($$[$0]){ this.$= new yy.List($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) } break; case 156: this.$= new yy.GoExprNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 157: this.$= new yy.ReceiveAsyncNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 162: this.$= new yy.ObjectConstructorNode( new yy.Lit('&', _$[$0-2]), null, new yy.ObjectConstructorArgsNode( new yy.Lit($$[$0-2], _$[$0-2]), null, new yy.Lit($$[$0], _$[$0]) ) ) break; case 163: this.$= new yy.ObjectConstructorNode( new yy.Lit('&', _$[$0-2]), null, new yy.ObjectConstructorArgsNode( new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]), true ) ) break; case 164: this.$= new yy.ObjectConstructorNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], $$[$0]) break; case 165: this.$= new yy.ObjectConstructorNode(new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 166: this.$= new yy.ObjectConstructorArgsNode(new yy.Lit($$[$0-1], _$[$0-1]), null, new yy.Lit($$[$0], _$[$0])) break; case 167: this.$= new yy.ObjectConstructorArgsNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0])) break; case 168: this.$= new yy.ObjectConstructorArgsNode(new yy.Lit($$[$0-2], _$[$0-2]), $$[$0-1], new yy.Lit($$[$0], _$[$0]), true) break; case 173: this.$= new yy.Node(new yy.Lit($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 174: this.$= new yy.Node(new yy.Str($$[$0-2], _$[$0-2]), new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) break; case 176: if ($$[$0] instanceof yy.List) { $$[$0].addFront($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1])) this.$= $$[$0] } else if ($$[$0]){ this.$= new yy.List($$[$0-2], new yy.Lit($$[$0-1], _$[$0-1]), $$[$0]) } break; case 177: this.$= new yy.ArrayConstructorNode( new yy.Lit('[', _$[$0-2]), null, new yy.Lit(']', _$[$0]) ) break; case 178: if ($$[$0-1]) $$[$0-2].add($$[$0-1]); this.$= new yy.ArrayConstructorNode( new yy.Lit('[', _$[$0-3]), $$[$0-2], new yy.Lit(']', _$[$0]) ) break; case 179: this.$= new yy.List($$[$0-1]); this.$.add(new yy.Lit($$[$0], _$[$0])) break; case 180: if ($$[$0-2] instanceof yy.List) { $$[$0-2].add($$[$0-1], new yy.Lit($$[$0], _$[$0])) this.$= $$[$0-2] } break; case 183: this.$= new yy.ValueList($$[$0]) break; } }, table: [{3:1,4:2,5:$V0,6:3,7:4,8:6,9:$V1,10:$V2,15:13,22:$V3,23:5,26:$V4,36:7,37:$V5,40:8},{1:[3]},{5:[1,15]},{4:16,5:$V0,6:3,7:4,8:6,9:$V1,10:$V2,15:13,22:$V3,23:5,26:$V4,36:7,37:$V5,40:8},{5:[2,3]},o($V6,[2,24]),o($V6,[2,25]),{5:[2,29],22:[1,17]},{5:[2,30],22:[1,18]},o($V6,[2,28]),{10:[1,20],27:19,28:[2,187]},{10:[1,21]},{38:[1,22]},{24:[1,23],126:$V7},o($V8,[2,169]),{1:[2,1]},{5:[2,2]},o($V6,[2,26]),o($V6,[2,27]),{28:[1,25]},{28:[2,188]},{11:26,13:27,14:[1,28],16:[2,185]},o($V9,[2,193],{39:29,10:[1,30]}),{10:$Va,23:33,25:31,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:[1,67]},{10:[1,70],29:68,30:[2,189],32:69},{12:71,16:[1,72]},{16:[2,186]},{10:$V2,15:73},o($V9,[2,22]),o($V9,[2,194]),o($V9,[2,23]),o($Vq,[2,181]),o($Vq,[2,182]),o($Vq,$Vr,{100:$Vs,101:$Vt,113:$Vu,117:$Vv}),o($Vq,[2,159]),o($Vq,[2,160]),o($Vq,[2,161]),o($Vw,[2,115],{106:$Vx,107:$Vy,108:$Vz,109:$VA,110:$VB,111:$VC,112:$VD}),o([5,9,10,14,16,18,22,26,28,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,126,132,134],$VE,{24:[1,86],115:[1,85]}),{10:$Va,23:33,25:87,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},o($VF,[2,107]),o($VG,$VH),o($VG,[2,85]),o($VG,[2,86]),o($VF,$VI,{28:$VJ,104:$VK,118:$VL,126:$VM}),{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:92,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:94,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:95,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:96,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},o($VN,[2,88]),o($VN,$VO),o($VN,[2,90]),o($VN,[2,91]),o($VN,[2,92]),{10:$VP,14:[1,98],23:33,25:97,26:$V4,28:$Vb,33:[1,100],38:$VQ,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37,137:99,140:102,143:101},o($VN,[2,94]),o($VN,[2,95]),o($VN,[2,96]),o($VN,[2,97]),o($VN,[2,98]),o($VN,[2,99]),o($VN,[2,100]),{10:$V2,15:105},{10:$Va,28:$Vb,38:$Vc,45:107,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,131:106,133:$Vp,136:37},o($VN,[2,153]),{16:$VR,34:108},o($V8,[2,170]),{30:[1,110]},{30:[2,190],33:[1,111]},o($VS,[2,19]),o($V6,[2,5]),{10:$VT,17:112,18:$VU,19:113,20:114,21:115,22:$VV,23:116,26:$V4},{16:[2,6],126:$V7},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:119,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:120,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,48:121,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,23:33,25:122,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:123,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:124,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:125,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:126,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:127,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:128,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,28:$Vb,38:$Vc,84:93,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:129,100:$Vh,101:$Vi,102:$Vj,103:$Vk,112:$Vl,128:$Vn,130:$Vo,133:$Vp},{10:$Va,23:33,25:130,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:$Va,23:33,25:131,26:$V4,28:$Vb,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},o($Vq,[2,157]),o($VF,[2,106],{28:$VW,118:$VX,126:$VY}),{10:$Va,14:[2,207],28:$Vb,38:$Vc,48:137,84:93,85:43,86:44,87:135,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,119:136,128:$Vn,130:$Vo,133:$Vp},{9:$VZ,10:$V_,26:$V$,28:[1,139],37:$V01,51:$V11,54:$V21,56:$V31,61:$V41,64:$V51,69:$V61,71:$V71,73:$V81,75:$V91,79:$Va1,82:$Vb1,88:$Vc1,89:$Vd1,91:$Ve1,127:138,128:$Vf1},{10:$Va,23:33,25:161,26:$V4,28:$Vb,30:[2,215],38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,124:159,128:$Vn,130:$Vo,133:$Vp,136:37,145:160},o($VF,[2,102]),o($VN,$VE),o($VF,[2,103]),o($VF,[2,104]),o($VF,[2,105]),{30:[1,162],33:[1,163]},{30:[1,164]},{30:[1,165]},{30:[1,166]},{10:$Va,23:33,25:168,26:$V4,28:$Vb,30:[2,227],38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37,144:167},{30:[2,171],33:[1,169]},o([24,28,30,33,100,101,104,106,107,108,109,110,111,112,113,115,117,118,126],$VH,{14:$Vg1}),o([28,30,33,100,101,104,106,107,108,109,110,111,112,113,117,118,126],$VO,{14:$Vh1}),o([5,9,10,14,16,18,22,26,30,33,37,49,100,101,104,106,107,108,109,110,111,112,113,117,118,121,132,134],[2,165],{138:172,28:[1,173],126:$V7}),{132:[1,174]},{132:[2,154],134:[1,175]},o($VN,[2,156]),{10:$Va,18:$Vi1,22:$Vj1,23:189,26:$V4,28:$Vb,35:176,38:$Vc,41:177,42:178,44:179,45:194,46:195,47:190,48:204,50:180,51:$Vk1,55:181,56:$Vl1,60:182,62:183,63:184,64:$Vm1,72:188,73:$Vn1,74:185,75:$Vo1,77:191,78:186,79:$Vp1,80:192,81:187,82:$Vq1,83:193,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:$Va,16:$VR,23:33,25:207,26:$V4,28:$Vb,31:205,34:206,38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,128:$Vn,130:$Vo,133:$Vp,136:37},{10:[1,208]},{18:[1,209]},{10:$VT,17:210,18:$VU,19:113,20:114,21:115,22:$VV,23:116,26:$V4},{18:[2,9]},{18:[2,14],22:[1,211]},{18:[2,15],22:[1,212]},o($Vr1,[2,13]),o($Vs1,[2,17],{24:[1,213]}),o($Vw,[2,116],{106:$Vx,107:$Vy,108:$Vz,109:$VA,110:$VB,111:$VC,112:$VD}),o($Vw,[2,117],{106:$Vx,107:$Vy,108:$Vz,109:$VA,110:$VB,111:$VC,112:$VD}),o([5,9,10,14,16,18,22,26,30,33,37,49,113,117,121,132,134],[2,118],{100:$Vs,101:$Vt}),o($Vq,[2,121]),o($VF,[2,108]),o($VF,[2,109]),o($VF,[2,110]),o($VF,[2,111]),o($VF,[2,112]),o($VF,[2,113]),o($VF,[2,114]),o($Vq,[2,119]),o($Vq,[2,120]),{10:$Va,14:[2,211],28:$Vb,38:$Vc,48:216,84:93,85:43,86:44,87:214,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,122:215,128:$Vn,130:$Vo,133:$Vp},{9:$VZ,10:$V_,26:$V$,37:$V01,51:$V11,54:$V21,56:$V31,61:$V41,64:$V51,69:$V61,71:$V71,73:$V81,75:$V91,79:$Va1,82:$Vb1,88:$Vc1,89:$Vd1,91:$Ve1,127:217,128:$Vf1},{10:$Va,23:33,25:161,26:$V4,28:$Vb,30:[2,217],38:$Vc,45:32,48:34,84:39,85:43,86:44,87:45,88:$Vd,89:$Ve,90:$Vf,91:$Vg,92:56,93:57,94:58,95:59,96:60,97:61,98:62,99:41,100:$Vh,101:$Vi,102:$Vj,103:$Vk,105:38,112:$Vl,113:$Vm,114:35,116:36,125:218,128:$Vn,130:$Vo,133:$Vp,136:37,145:219},o($Vt1,$VI,{2