-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbundle.js
More file actions
15 lines (15 loc) · 461 KB
/
bundle.js
File metadata and controls
15 lines (15 loc) · 461 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,g.javaconves6func=f()}}(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){(function(process,__filename){"use strict";function amdefine(module,requireFn){function trimDots(ary){var i,part;for(i=0;ary[i];i+=1)if(part=ary[i],"."===part)ary.splice(i,1),i-=1;else if(".."===part){if(1===i&&(".."===ary[2]||".."===ary[0]))break;i>0&&(ary.splice(i-1,2),i-=2)}}function normalize(name,baseName){var baseParts;return name&&"."===name.charAt(0)&&baseName&&(baseParts=baseName.split("/"),baseParts=baseParts.slice(0,baseParts.length-1),baseParts=baseParts.concat(name.split("/")),trimDots(baseParts),name=baseParts.join("/")),name}function makeNormalize(relName){return function(name){return normalize(name,relName)}}function makeLoad(id){function load(value){loaderCache[id]=value}return load.fromText=function(id,text){throw new Error("amdefine does not implement load.fromText")},load}function runFactory(id,deps,factory){var r,e,m,result;if(id)e=loaderCache[id]={},m={id:id,uri:__filename,exports:e},r=makeRequire(requireFn,e,m,id);else{if(alreadyCalled)throw new Error("amdefine with no module ID cannot be called more than once per file.");alreadyCalled=!0,e=module.exports,m=module,r=makeRequire(requireFn,e,m,module.id)}deps&&(deps=deps.map(function(depName){return r(depName)})),result="function"==typeof factory?factory.apply(m.exports,deps):factory,void 0!==result&&(m.exports=result,id&&(loaderCache[id]=m.exports))}function define(id,deps,factory){Array.isArray(id)?(factory=deps,deps=id,id=void 0):"string"!=typeof id&&(factory=id,id=deps=void 0),deps&&!Array.isArray(deps)&&(factory=deps,deps=void 0),deps||(deps=["require","exports","module"]),id?defineCache[id]=[id,deps,factory]:runFactory(id,deps,factory)}var makeRequire,stringRequire,defineCache={},loaderCache={},alreadyCalled=!1,path=require("path");return makeRequire=function(systemRequire,exports,module,relId){function amdRequire(deps,callback){return"string"==typeof deps?stringRequire(systemRequire,exports,module,deps,relId):(deps=deps.map(function(depName){return stringRequire(systemRequire,exports,module,depName,relId)}),void(callback&&process.nextTick(function(){callback.apply(null,deps)})))}return amdRequire.toUrl=function(filePath){return 0===filePath.indexOf(".")?normalize(filePath,path.dirname(module.filename)):filePath},amdRequire},requireFn=requireFn||function(){return module.require.apply(module,arguments)},stringRequire=function(systemRequire,exports,module,id,relId){var prefix,plugin,index=id.indexOf("!"),originalId=id;if(-1===index){if(id=normalize(id,relId),"require"===id)return makeRequire(systemRequire,exports,module,relId);if("exports"===id)return exports;if("module"===id)return module;if(loaderCache.hasOwnProperty(id))return loaderCache[id];if(defineCache[id])return runFactory.apply(null,defineCache[id]),loaderCache[id];if(systemRequire)return systemRequire(originalId);throw new Error("No module with ID: "+id)}return prefix=id.substring(0,index),id=id.substring(index+1,id.length),plugin=stringRequire(systemRequire,exports,module,prefix,relId),id=plugin.normalize?plugin.normalize(id,makeNormalize(relId)):normalize(id,relId),loaderCache[id]?loaderCache[id]:(plugin.load(id,makeRequire(systemRequire,exports,module,relId),makeLoad(id),{}),loaderCache[id])},define.require=function(id){return loaderCache[id]?loaderCache[id]:defineCache[id]?(runFactory.apply(null,defineCache[id]),loaderCache[id]):void 0},define.amd={},define}module.exports=amdefine}).call(this,require("_process"),"/node_modules/amdefine/amdefine.js")},{_process:28,path:27}],2:[function(require,module,exports){require("./es7");var types=require("../lib/types"),defaults=require("../lib/shared").defaults,def=types.Type.def,or=types.Type.or;def("Noop").bases("Node").build(),def("DoExpression").bases("Expression").build("body").field("body",[def("Statement")]),def("Super").bases("Expression").build(),def("BindExpression").bases("Expression").build("object","callee").field("object",or(def("Expression"),null)).field("callee",def("Expression")),def("Decorator").bases("Node").build("expression").field("expression",def("Expression")),def("Property").field("decorators",or([def("Decorator")],null),defaults["null"]),def("MethodDefinition").field("decorators",or([def("Decorator")],null),defaults["null"]),def("MetaProperty").bases("Expression").build("meta","property").field("meta",def("Identifier")).field("property",def("Identifier")),def("ParenthesizedExpression").bases("Expression").build("expression").field("expression",def("Expression")),def("ImportSpecifier").bases("ModuleSpecifier").build("imported","local").field("imported",def("Identifier")),def("ImportDefaultSpecifier").bases("ModuleSpecifier").build("local"),def("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("local"),def("ExportDefaultDeclaration").bases("Declaration").build("declaration").field("declaration",or(def("Declaration"),def("Expression"))),def("ExportNamedDeclaration").bases("Declaration").build("declaration","specifiers","source").field("declaration",or(def("Declaration"),null)).field("specifiers",[def("ExportSpecifier")],defaults.emptyArray).field("source",or(def("Literal"),null),defaults["null"]),def("ExportSpecifier").bases("ModuleSpecifier").build("local","exported").field("exported",def("Identifier")),def("ExportNamespaceSpecifier").bases("Specifier").build("exported").field("exported",def("Identifier")),def("ExportDefaultSpecifier").bases("Specifier").build("exported").field("exported",def("Identifier")),def("ExportAllDeclaration").bases("Declaration").build("exported","source").field("exported",or(def("Identifier"),null)).field("source",def("Literal")),def("CommentBlock").bases("Comment").build("value","leading","trailing"),def("CommentLine").bases("Comment").build("value","leading","trailing")},{"../lib/shared":16,"../lib/types":17,"./es7":6}],3:[function(require,module,exports){var types=require("../lib/types"),Type=types.Type,def=Type.def,or=Type.or,shared=require("../lib/shared"),defaults=shared.defaults,geq=shared.geq;def("Printable").field("loc",or(def("SourceLocation"),null),defaults["null"],!0),def("Node").bases("Printable").field("type",String).field("comments",or([def("Comment")],null),defaults["null"],!0),def("SourceLocation").build("start","end","source").field("start",def("Position")).field("end",def("Position")).field("source",or(String,null),defaults["null"]),def("Position").build("line","column").field("line",geq(1)).field("column",geq(0)),def("File").bases("Node").build("program").field("program",def("Program")),def("Program").bases("Node").build("body").field("body",[def("Statement")]),def("Function").bases("Node").field("id",or(def("Identifier"),null),defaults["null"]).field("params",[def("Pattern")]).field("body",def("BlockStatement")),def("Statement").bases("Node"),def("EmptyStatement").bases("Statement").build(),def("BlockStatement").bases("Statement").build("body").field("body",[def("Statement")]),def("ExpressionStatement").bases("Statement").build("expression").field("expression",def("Expression")),def("IfStatement").bases("Statement").build("test","consequent","alternate").field("test",def("Expression")).field("consequent",def("Statement")).field("alternate",or(def("Statement"),null),defaults["null"]),def("LabeledStatement").bases("Statement").build("label","body").field("label",def("Identifier")).field("body",def("Statement")),def("BreakStatement").bases("Statement").build("label").field("label",or(def("Identifier"),null),defaults["null"]),def("ContinueStatement").bases("Statement").build("label").field("label",or(def("Identifier"),null),defaults["null"]),def("WithStatement").bases("Statement").build("object","body").field("object",def("Expression")).field("body",def("Statement")),def("SwitchStatement").bases("Statement").build("discriminant","cases","lexical").field("discriminant",def("Expression")).field("cases",[def("SwitchCase")]).field("lexical",Boolean,defaults["false"]),def("ReturnStatement").bases("Statement").build("argument").field("argument",or(def("Expression"),null)),def("ThrowStatement").bases("Statement").build("argument").field("argument",def("Expression")),def("TryStatement").bases("Statement").build("block","handler","finalizer").field("block",def("BlockStatement")).field("handler",or(def("CatchClause"),null),function(){return this.handlers&&this.handlers[0]||null}).field("handlers",[def("CatchClause")],function(){return this.handler?[this.handler]:[]},!0).field("guardedHandlers",[def("CatchClause")],defaults.emptyArray).field("finalizer",or(def("BlockStatement"),null),defaults["null"]),def("CatchClause").bases("Node").build("param","guard","body").field("param",def("Pattern")).field("guard",or(def("Expression"),null),defaults["null"]).field("body",def("BlockStatement")),def("WhileStatement").bases("Statement").build("test","body").field("test",def("Expression")).field("body",def("Statement")),def("DoWhileStatement").bases("Statement").build("body","test").field("body",def("Statement")).field("test",def("Expression")),def("ForStatement").bases("Statement").build("init","test","update","body").field("init",or(def("VariableDeclaration"),def("Expression"),null)).field("test",or(def("Expression"),null)).field("update",or(def("Expression"),null)).field("body",def("Statement")),def("ForInStatement").bases("Statement").build("left","right","body").field("left",or(def("VariableDeclaration"),def("Expression"))).field("right",def("Expression")).field("body",def("Statement")),def("DebuggerStatement").bases("Statement").build(),def("Declaration").bases("Statement"),def("FunctionDeclaration").bases("Function","Declaration").build("id","params","body").field("id",def("Identifier")),def("FunctionExpression").bases("Function","Expression").build("id","params","body"),def("VariableDeclaration").bases("Declaration").build("kind","declarations").field("kind",or("var","let","const")).field("declarations",[def("VariableDeclarator")]),def("VariableDeclarator").bases("Node").build("id","init").field("id",def("Pattern")).field("init",or(def("Expression"),null)),def("Expression").bases("Node","Pattern"),def("ThisExpression").bases("Expression").build(),def("ArrayExpression").bases("Expression").build("elements").field("elements",[or(def("Expression"),null)]),def("ObjectExpression").bases("Expression").build("properties").field("properties",[def("Property")]),def("Property").bases("Node").build("kind","key","value").field("kind",or("init","get","set")).field("key",or(def("Literal"),def("Identifier"))).field("value",def("Expression")),def("SequenceExpression").bases("Expression").build("expressions").field("expressions",[def("Expression")]);var UnaryOperator=or("-","+","!","~","typeof","void","delete");def("UnaryExpression").bases("Expression").build("operator","argument","prefix").field("operator",UnaryOperator).field("argument",def("Expression")).field("prefix",Boolean,defaults["true"]);var BinaryOperator=or("==","!=","===","!==","<","<=",">",">=","<<",">>",">>>","+","-","*","/","%","&","|","^","in","instanceof","..");def("BinaryExpression").bases("Expression").build("operator","left","right").field("operator",BinaryOperator).field("left",def("Expression")).field("right",def("Expression"));var AssignmentOperator=or("=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","^=","&=");def("AssignmentExpression").bases("Expression").build("operator","left","right").field("operator",AssignmentOperator).field("left",def("Pattern")).field("right",def("Expression"));var UpdateOperator=or("++","--");def("UpdateExpression").bases("Expression").build("operator","argument","prefix").field("operator",UpdateOperator).field("argument",def("Expression")).field("prefix",Boolean);var LogicalOperator=or("||","&&");def("LogicalExpression").bases("Expression").build("operator","left","right").field("operator",LogicalOperator).field("left",def("Expression")).field("right",def("Expression")),def("ConditionalExpression").bases("Expression").build("test","consequent","alternate").field("test",def("Expression")).field("consequent",def("Expression")).field("alternate",def("Expression")),def("NewExpression").bases("Expression").build("callee","arguments").field("callee",def("Expression")).field("arguments",[def("Expression")]),def("CallExpression").bases("Expression").build("callee","arguments").field("callee",def("Expression")).field("arguments",[def("Expression")]),def("MemberExpression").bases("Expression").build("object","property","computed").field("object",def("Expression")).field("property",or(def("Identifier"),def("Expression"))).field("computed",Boolean,function(){var type=this.property.type;return"Literal"===type||"MemberExpression"===type||"BinaryExpression"===type}),def("Pattern").bases("Node"),def("SwitchCase").bases("Node").build("test","consequent").field("test",or(def("Expression"),null)).field("consequent",[def("Statement")]),def("Identifier").bases("Node","Expression","Pattern").build("name").field("name",String),def("Literal").bases("Node","Expression").build("value").field("value",or(String,Boolean,null,Number,RegExp)).field("regex",or({pattern:String,flags:String},null),function(){if(this.value instanceof RegExp){var flags="";return this.value.ignoreCase&&(flags+="i"),this.value.multiline&&(flags+="m"),this.value.global&&(flags+="g"),{pattern:this.value.source,flags:flags}}return null}),def("Comment").bases("Printable").field("value",String).field("leading",Boolean,defaults["true"]).field("trailing",Boolean,defaults["false"])},{"../lib/shared":16,"../lib/types":17}],4:[function(require,module,exports){require("./core");var types=require("../lib/types"),def=types.Type.def,or=types.Type.or;def("XMLDefaultDeclaration").bases("Declaration").field("namespace",def("Expression")),def("XMLAnyName").bases("Expression"),def("XMLQualifiedIdentifier").bases("Expression").field("left",or(def("Identifier"),def("XMLAnyName"))).field("right",or(def("Identifier"),def("Expression"))).field("computed",Boolean),def("XMLFunctionQualifiedIdentifier").bases("Expression").field("right",or(def("Identifier"),def("Expression"))).field("computed",Boolean),def("XMLAttributeSelector").bases("Expression").field("attribute",def("Expression")),def("XMLFilterExpression").bases("Expression").field("left",def("Expression")).field("right",def("Expression")),def("XMLElement").bases("XML","Expression").field("contents",[def("XML")]),def("XMLList").bases("XML","Expression").field("contents",[def("XML")]),def("XML").bases("Node"),def("XMLEscape").bases("XML").field("expression",def("Expression")),def("XMLText").bases("XML").field("text",String),def("XMLStartTag").bases("XML").field("contents",[def("XML")]),def("XMLEndTag").bases("XML").field("contents",[def("XML")]),def("XMLPointTag").bases("XML").field("contents",[def("XML")]),def("XMLName").bases("XML").field("contents",or(String,[def("XML")])),def("XMLAttribute").bases("XML").field("value",String),def("XMLCdata").bases("XML").field("contents",String),def("XMLComment").bases("XML").field("contents",String),def("XMLProcessingInstruction").bases("XML").field("target",String).field("contents",or(String,null))},{"../lib/types":17,"./core":3}],5:[function(require,module,exports){require("./core");var types=require("../lib/types"),def=types.Type.def,or=types.Type.or,defaults=require("../lib/shared").defaults;def("Function").field("generator",Boolean,defaults["false"]).field("expression",Boolean,defaults["false"]).field("defaults",[or(def("Expression"),null)],defaults.emptyArray).field("rest",or(def("Identifier"),null),defaults["null"]),def("RestElement").bases("Pattern").build("argument").field("argument",def("Pattern")),def("SpreadElementPattern").bases("Pattern").build("argument").field("argument",def("Pattern")),def("FunctionDeclaration").build("id","params","body","generator","expression"),def("FunctionExpression").build("id","params","body","generator","expression"),def("ArrowFunctionExpression").bases("Function","Expression").build("params","body","expression").field("id",null,defaults["null"]).field("body",or(def("BlockStatement"),def("Expression"))).field("generator",!1,defaults["false"]),def("YieldExpression").bases("Expression").build("argument","delegate").field("argument",or(def("Expression"),null)).field("delegate",Boolean,defaults["false"]),def("GeneratorExpression").bases("Expression").build("body","blocks","filter").field("body",def("Expression")).field("blocks",[def("ComprehensionBlock")]).field("filter",or(def("Expression"),null)),def("ComprehensionExpression").bases("Expression").build("body","blocks","filter").field("body",def("Expression")).field("blocks",[def("ComprehensionBlock")]).field("filter",or(def("Expression"),null)),def("ComprehensionBlock").bases("Node").build("left","right","each").field("left",def("Pattern")).field("right",def("Expression")).field("each",Boolean),def("Property").field("key",or(def("Literal"),def("Identifier"),def("Expression"))).field("value",or(def("Expression"),def("Pattern"))).field("method",Boolean,defaults["false"]).field("shorthand",Boolean,defaults["false"]).field("computed",Boolean,defaults["false"]),def("PropertyPattern").bases("Pattern").build("key","pattern").field("key",or(def("Literal"),def("Identifier"),def("Expression"))).field("pattern",def("Pattern")).field("computed",Boolean,defaults["false"]),def("ObjectPattern").bases("Pattern").build("properties").field("properties",[or(def("PropertyPattern"),def("Property"))]),def("ArrayPattern").bases("Pattern").build("elements").field("elements",[or(def("Pattern"),null)]),def("MethodDefinition").bases("Declaration").build("kind","key","value","static").field("kind",or("constructor","method","get","set")).field("key",or(def("Literal"),def("Identifier"),def("Expression"))).field("value",def("Function")).field("computed",Boolean,defaults["false"]).field("static",Boolean,defaults["false"]),def("SpreadElement").bases("Node").build("argument").field("argument",def("Expression")),def("ArrayExpression").field("elements",[or(def("Expression"),def("SpreadElement"),def("RestElement"),null)]),def("NewExpression").field("arguments",[or(def("Expression"),def("SpreadElement"))]),def("CallExpression").field("arguments",[or(def("Expression"),def("SpreadElement"))]),def("AssignmentPattern").bases("Pattern").build("left","right").field("left",def("Pattern")).field("right",def("Expression"));var ClassBodyElement=or(def("MethodDefinition"),def("VariableDeclarator"),def("ClassPropertyDefinition"),def("ClassProperty"));def("ClassProperty").bases("Declaration").build("key").field("key",or(def("Literal"),def("Identifier"),def("Expression"))).field("computed",Boolean,defaults["false"]),def("ClassPropertyDefinition").bases("Declaration").build("definition").field("definition",ClassBodyElement),def("ClassBody").bases("Declaration").build("body").field("body",[ClassBodyElement]),def("ClassDeclaration").bases("Declaration").build("id","body","superClass").field("id",or(def("Identifier"),null)).field("body",def("ClassBody")).field("superClass",or(def("Expression"),null),defaults["null"]),def("ClassExpression").bases("Expression").build("id","body","superClass").field("id",or(def("Identifier"),null),defaults["null"]).field("body",def("ClassBody")).field("superClass",or(def("Expression"),null),defaults["null"]).field("implements",[def("ClassImplements")],defaults.emptyArray),def("ClassImplements").bases("Node").build("id").field("id",def("Identifier")).field("superClass",or(def("Expression"),null),defaults["null"]),def("Specifier").bases("Node"),def("ModuleSpecifier").bases("Specifier").field("local",or(def("Identifier"),null),defaults["null"]).field("id",or(def("Identifier"),null),defaults["null"]).field("name",or(def("Identifier"),null),defaults["null"]),def("TaggedTemplateExpression").bases("Expression").build("tag","quasi").field("tag",def("Expression")).field("quasi",def("TemplateLiteral")),def("TemplateLiteral").bases("Expression").build("quasis","expressions").field("quasis",[def("TemplateElement")]).field("expressions",[def("Expression")]),def("TemplateElement").bases("Node").build("value","tail").field("value",{cooked:String,raw:String}).field("tail",Boolean)},{"../lib/shared":16,"../lib/types":17,"./core":3}],6:[function(require,module,exports){require("./es6");var types=require("../lib/types"),def=types.Type.def,or=types.Type.or,defaults=(types.builtInTypes,require("../lib/shared").defaults);def("Function").field("async",Boolean,defaults["false"]),def("SpreadProperty").bases("Node").build("argument").field("argument",def("Expression")),def("ObjectExpression").field("properties",[or(def("Property"),def("SpreadProperty"))]),def("SpreadPropertyPattern").bases("Pattern").build("argument").field("argument",def("Pattern")),def("ObjectPattern").field("properties",[or(def("Property"),def("PropertyPattern"),def("SpreadPropertyPattern"))]),def("AwaitExpression").bases("Expression").build("argument","all").field("argument",or(def("Expression"),null)).field("all",Boolean,defaults["false"])},{"../lib/shared":16,"../lib/types":17,"./es6":5}],7:[function(require,module,exports){require("./es7");var types=require("../lib/types"),defaults=require("../lib/shared").defaults,def=types.Type.def,or=types.Type.or;def("VariableDeclaration").field("declarations",[or(def("VariableDeclarator"),def("Identifier"))]),def("Property").field("value",or(def("Expression"),def("Pattern"))),def("ArrayPattern").field("elements",[or(def("Pattern"),def("SpreadElement"),null)]),def("ObjectPattern").field("properties",[or(def("Property"),def("PropertyPattern"),def("SpreadPropertyPattern"),def("SpreadProperty"))]),def("ExportSpecifier").bases("ModuleSpecifier").build("id","name"),def("ExportBatchSpecifier").bases("Specifier").build(),def("ImportSpecifier").bases("ModuleSpecifier").build("id","name"),def("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("id"),def("ImportDefaultSpecifier").bases("ModuleSpecifier").build("id"),def("ExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",or(def("Declaration"),def("Expression"),null)).field("specifiers",[or(def("ExportSpecifier"),def("ExportBatchSpecifier"))],defaults.emptyArray).field("source",or(def("Literal"),null),defaults["null"]),def("ImportDeclaration").bases("Declaration").build("specifiers","source").field("specifiers",[or(def("ImportSpecifier"),def("ImportNamespaceSpecifier"),def("ImportDefaultSpecifier"))],defaults.emptyArray).field("source",def("Literal")),def("Block").bases("Comment").build("value","leading","trailing"),def("Line").bases("Comment").build("value","leading","trailing")},{"../lib/shared":16,"../lib/types":17,"./es7":6}],8:[function(require,module,exports){require("./es7");var types=require("../lib/types"),def=types.Type.def,or=types.Type.or,defaults=require("../lib/shared").defaults;def("Type").bases("Node"),def("AnyTypeAnnotation").bases("Type").build(),def("MixedTypeAnnotation").bases("Type").build(),def("VoidTypeAnnotation").bases("Type").build(),def("NumberTypeAnnotation").bases("Type").build(),def("NumberLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Number).field("raw",String),def("StringTypeAnnotation").bases("Type").build(),def("StringLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",String).field("raw",String),def("BooleanTypeAnnotation").bases("Type").build(),def("BooleanLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Boolean).field("raw",String),def("TypeAnnotation").bases("Node").build("typeAnnotation").field("typeAnnotation",def("Type")),def("NullableTypeAnnotation").bases("Type").build("typeAnnotation").field("typeAnnotation",def("Type")),def("NullLiteralTypeAnnotation").bases("Type").build(),def("ThisTypeAnnotation").bases("Type").build(),def("FunctionTypeAnnotation").bases("Type").build("params","returnType","rest","typeParameters").field("params",[def("FunctionTypeParam")]).field("returnType",def("Type")).field("rest",or(def("FunctionTypeParam"),null)).field("typeParameters",or(def("TypeParameterDeclaration"),null)),def("FunctionTypeParam").bases("Node").build("name","typeAnnotation","optional").field("name",def("Identifier")).field("typeAnnotation",def("Type")).field("optional",Boolean),def("ArrayTypeAnnotation").bases("Type").build("elementType").field("elementType",def("Type")),def("ObjectTypeAnnotation").bases("Type").build("properties").field("properties",[def("ObjectTypeProperty")]).field("indexers",[def("ObjectTypeIndexer")],defaults.emptyArray).field("callProperties",[def("ObjectTypeCallProperty")],defaults.emptyArray),def("ObjectTypeProperty").bases("Node").build("key","value","optional").field("key",or(def("Literal"),def("Identifier"))).field("value",def("Type")).field("optional",Boolean),def("ObjectTypeIndexer").bases("Node").build("id","key","value").field("id",def("Identifier")).field("key",def("Type")).field("value",def("Type")),def("ObjectTypeCallProperty").bases("Node").build("value").field("value",def("FunctionTypeAnnotation")).field("static",Boolean,defaults["false"]),def("QualifiedTypeIdentifier").bases("Node").build("qualification","id").field("qualification",or(def("Identifier"),def("QualifiedTypeIdentifier"))).field("id",def("Identifier")),def("GenericTypeAnnotation").bases("Type").build("id","typeParameters").field("id",or(def("Identifier"),def("QualifiedTypeIdentifier"))).field("typeParameters",or(def("TypeParameterInstantiation"),null)),def("MemberTypeAnnotation").bases("Type").build("object","property").field("object",def("Identifier")).field("property",or(def("MemberTypeAnnotation"),def("GenericTypeAnnotation"))),def("UnionTypeAnnotation").bases("Type").build("types").field("types",[def("Type")]),def("IntersectionTypeAnnotation").bases("Type").build("types").field("types",[def("Type")]),def("TypeofTypeAnnotation").bases("Type").build("argument").field("argument",def("Type")),def("Identifier").field("typeAnnotation",or(def("TypeAnnotation"),null),defaults["null"]),def("TypeParameterDeclaration").bases("Node").build("params").field("params",[def("Identifier")]),def("TypeParameterInstantiation").bases("Node").build("params").field("params",[def("Type")]),def("Function").field("returnType",or(def("TypeAnnotation"),null),defaults["null"]).field("typeParameters",or(def("TypeParameterDeclaration"),null),defaults["null"]),def("ClassProperty").build("key","value","typeAnnotation","static").field("value",or(def("Expression"),null)).field("typeAnnotation",or(def("TypeAnnotation"),null)).field("static",Boolean,defaults["false"]),def("ClassImplements").field("typeParameters",or(def("TypeParameterInstantiation"),null),defaults["null"]),def("InterfaceDeclaration").bases("Declaration").build("id","body","extends").field("id",def("Identifier")).field("typeParameters",or(def("TypeParameterDeclaration"),null),defaults["null"]).field("body",def("ObjectTypeAnnotation")).field("extends",[def("InterfaceExtends")]),def("DeclareInterface").bases("InterfaceDeclaration").build("id","body","extends"),def("InterfaceExtends").bases("Node").build("id").field("id",def("Identifier")).field("typeParameters",or(def("TypeParameterInstantiation"),null)),def("TypeAlias").bases("Declaration").build("id","typeParameters","right").field("id",def("Identifier")).field("typeParameters",or(def("TypeParameterDeclaration"),null)).field("right",def("Type")),def("DeclareTypeAlias").bases("TypeAlias").build("id","typeParameters","right"),def("TypeCastExpression").bases("Expression").build("expression","typeAnnotation").field("expression",def("Expression")).field("typeAnnotation",def("TypeAnnotation")),def("TupleTypeAnnotation").bases("Type").build("types").field("types",[def("Type")]),def("DeclareVariable").bases("Statement").build("id").field("id",def("Identifier")),def("DeclareFunction").bases("Statement").build("id").field("id",def("Identifier")),def("DeclareClass").bases("InterfaceDeclaration").build("id"),def("DeclareModule").bases("Statement").build("id","body").field("id",or(def("Identifier"),def("Literal"))).field("body",def("BlockStatement")),def("DeclareExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",or(def("DeclareVariable"),def("DeclareFunction"),def("DeclareClass"),def("Type"),null)).field("specifiers",[or(def("ExportSpecifier"),def("ExportBatchSpecifier"))],defaults.emptyArray).field("source",or(def("Literal"),null),defaults["null"])},{"../lib/shared":16,"../lib/types":17,"./es7":6}],9:[function(require,module,exports){require("./es7");var types=require("../lib/types"),def=types.Type.def,or=types.Type.or,defaults=require("../lib/shared").defaults;def("JSXAttribute").bases("Node").build("name","value").field("name",or(def("JSXIdentifier"),def("JSXNamespacedName"))).field("value",or(def("Literal"),def("JSXExpressionContainer"),null),defaults["null"]),def("JSXIdentifier").bases("Identifier").build("name").field("name",String),def("JSXNamespacedName").bases("Node").build("namespace","name").field("namespace",def("JSXIdentifier")).field("name",def("JSXIdentifier")),def("JSXMemberExpression").bases("MemberExpression").build("object","property").field("object",or(def("JSXIdentifier"),def("JSXMemberExpression"))).field("property",def("JSXIdentifier")).field("computed",Boolean,defaults["false"]);var JSXElementName=or(def("JSXIdentifier"),def("JSXNamespacedName"),def("JSXMemberExpression"));def("JSXSpreadAttribute").bases("Node").build("argument").field("argument",def("Expression"));var JSXAttributes=[or(def("JSXAttribute"),def("JSXSpreadAttribute"))];def("JSXExpressionContainer").bases("Expression").build("expression").field("expression",def("Expression")),def("JSXElement").bases("Expression").build("openingElement","closingElement","children").field("openingElement",def("JSXOpeningElement")).field("closingElement",or(def("JSXClosingElement"),null),defaults["null"]).field("children",[or(def("JSXElement"),def("JSXExpressionContainer"),def("JSXText"),def("Literal"))],defaults.emptyArray).field("name",JSXElementName,function(){return this.openingElement.name},!0).field("selfClosing",Boolean,function(){return this.openingElement.selfClosing},!0).field("attributes",JSXAttributes,function(){return this.openingElement.attributes},!0),def("JSXOpeningElement").bases("Node").build("name","attributes","selfClosing").field("name",JSXElementName).field("attributes",JSXAttributes,defaults.emptyArray).field("selfClosing",Boolean,defaults["false"]),def("JSXClosingElement").bases("Node").build("name").field("name",JSXElementName),def("JSXText").bases("Literal").build("value").field("value",String),def("JSXEmptyExpression").bases("Expression").build()},{"../lib/shared":16,"../lib/types":17,"./es7":6}],10:[function(require,module,exports){require("./core");var types=require("../lib/types"),def=types.Type.def,or=types.Type.or,shared=require("../lib/shared"),geq=shared.geq,defaults=shared.defaults;def("Function").field("body",or(def("BlockStatement"),def("Expression"))),def("ForInStatement").build("left","right","body","each").field("each",Boolean,defaults["false"]),def("ForOfStatement").bases("Statement").build("left","right","body").field("left",or(def("VariableDeclaration"),def("Expression"))).field("right",def("Expression")).field("body",def("Statement")),
def("LetStatement").bases("Statement").build("head","body").field("head",[def("VariableDeclarator")]).field("body",def("Statement")),def("LetExpression").bases("Expression").build("head","body").field("head",[def("VariableDeclarator")]).field("body",def("Expression")),def("GraphExpression").bases("Expression").build("index","expression").field("index",geq(0)).field("expression",def("Literal")),def("GraphIndexExpression").bases("Expression").build("index").field("index",geq(0))},{"../lib/shared":16,"../lib/types":17,"./core":3}],11:[function(require,module,exports){function astNodesAreEquivalent(a,b,problemPath){return isArray.check(problemPath)?problemPath.length=0:problemPath=null,areEquivalent(a,b,problemPath)}function subscriptForProperty(property){return/[_$a-z][_$a-z0-9]*/i.test(property)?"."+property:"["+JSON.stringify(property)+"]"}function areEquivalent(a,b,problemPath){return a===b?!0:isArray.check(a)?arraysAreEquivalent(a,b,problemPath):isObject.check(a)?objectsAreEquivalent(a,b,problemPath):isDate.check(a)?isDate.check(b)&&+a===+b:isRegExp.check(a)?isRegExp.check(b)&&a.source===b.source&&a.global===b.global&&a.multiline===b.multiline&&a.ignoreCase===b.ignoreCase:a==b}function arraysAreEquivalent(a,b,problemPath){isArray.assert(a);var aLength=a.length;if(!isArray.check(b)||b.length!==aLength)return problemPath&&problemPath.push("length"),!1;for(var i=0;aLength>i;++i){if(problemPath&&problemPath.push(i),i in a!=i in b)return!1;if(!areEquivalent(a[i],b[i],problemPath))return!1;if(problemPath){var problemPathTail=problemPath.pop();if(problemPathTail!==i)throw new Error(""+problemPathTail)}}return!0}function objectsAreEquivalent(a,b,problemPath){if(isObject.assert(a),!isObject.check(b))return!1;if(a.type!==b.type)return problemPath&&problemPath.push("type"),!1;var aNames=getFieldNames(a),aNameCount=aNames.length,bNames=getFieldNames(b),bNameCount=bNames.length;if(aNameCount===bNameCount){for(var i=0;aNameCount>i;++i){var name=aNames[i],aChild=getFieldValue(a,name),bChild=getFieldValue(b,name);if(problemPath&&problemPath.push(name),!areEquivalent(aChild,bChild,problemPath))return!1;if(problemPath){var problemPathTail=problemPath.pop();if(problemPathTail!==name)throw new Error(""+problemPathTail)}}return!0}if(!problemPath)return!1;var seenNames=Object.create(null);for(i=0;aNameCount>i;++i)seenNames[aNames[i]]=!0;for(i=0;bNameCount>i;++i){if(name=bNames[i],!hasOwn.call(seenNames,name))return problemPath.push(name),!1;delete seenNames[name]}for(name in seenNames){problemPath.push(name);break}return!1}var types=require("../main"),getFieldNames=types.getFieldNames,getFieldValue=types.getFieldValue,isArray=types.builtInTypes.array,isObject=types.builtInTypes.object,isDate=types.builtInTypes.Date,isRegExp=types.builtInTypes.RegExp,hasOwn=Object.prototype.hasOwnProperty;astNodesAreEquivalent.assert=function(a,b){var problemPath=[];if(!astNodesAreEquivalent(a,b,problemPath)){if(0!==problemPath.length)throw new Error("Nodes differ in the following path: "+problemPath.map(subscriptForProperty).join(""));if(a!==b)throw new Error("Nodes must be equal")}},module.exports=astNodesAreEquivalent},{"../main":18}],12:[function(require,module,exports){function NodePath(value,parentPath,name){if(!(this instanceof NodePath))throw new Error("NodePath constructor cannot be invoked without 'new'");Path.call(this,value,parentPath,name)}function isBinary(node){return n.BinaryExpression.check(node)||n.LogicalExpression.check(node)}function containsCallExpression(node){return n.CallExpression.check(node)?!0:isArray.check(node)?node.some(containsCallExpression):n.Node.check(node)?types.someField(node,function(name,child){return containsCallExpression(child)}):!1}function firstInStatement(path){for(var node,parent;path.parent;path=path.parent){if(node=path.node,parent=path.parent.node,n.BlockStatement.check(parent)&&"body"===path.parent.name&&0===path.name){if(parent.body[0]!==node)throw new Error("Nodes must be equal");return!0}if(n.ExpressionStatement.check(parent)&&"expression"===path.name){if(parent.expression!==node)throw new Error("Nodes must be equal");return!0}if(n.SequenceExpression.check(parent)&&"expressions"===path.parent.name&&0===path.name){if(parent.expressions[0]!==node)throw new Error("Nodes must be equal")}else if(n.CallExpression.check(parent)&&"callee"===path.name){if(parent.callee!==node)throw new Error("Nodes must be equal")}else if(n.MemberExpression.check(parent)&&"object"===path.name){if(parent.object!==node)throw new Error("Nodes must be equal")}else if(n.ConditionalExpression.check(parent)&&"test"===path.name){if(parent.test!==node)throw new Error("Nodes must be equal")}else if(isBinary(parent)&&"left"===path.name){if(parent.left!==node)throw new Error("Nodes must be equal")}else{if(!n.UnaryExpression.check(parent)||parent.prefix||"argument"!==path.name)return!1;if(parent.argument!==node)throw new Error("Nodes must be equal")}}return!0}function cleanUpNodesAfterPrune(remainingNodePath){if(n.VariableDeclaration.check(remainingNodePath.node)){var declarations=remainingNodePath.get("declarations").value;if(!declarations||0===declarations.length)return remainingNodePath.prune()}else if(n.ExpressionStatement.check(remainingNodePath.node)){if(!remainingNodePath.get("expression").value)return remainingNodePath.prune()}else n.IfStatement.check(remainingNodePath.node)&&cleanUpIfStatementAfterPrune(remainingNodePath);return remainingNodePath}function cleanUpIfStatementAfterPrune(ifStatement){var testExpression=ifStatement.get("test").value,alternate=ifStatement.get("alternate").value,consequent=ifStatement.get("consequent").value;if(consequent||alternate){if(!consequent&&alternate){var negatedTestExpression=b.unaryExpression("!",testExpression,!0);n.UnaryExpression.check(testExpression)&&"!"===testExpression.operator&&(negatedTestExpression=testExpression.argument),ifStatement.get("test").replace(negatedTestExpression),ifStatement.get("consequent").replace(alternate),ifStatement.get("alternate").replace()}}else{var testExpressionStatement=b.expressionStatement(testExpression);ifStatement.replace(testExpressionStatement)}}var types=require("./types"),n=types.namedTypes,b=types.builders,isNumber=types.builtInTypes.number,isArray=types.builtInTypes.array,Path=require("./path"),Scope=require("./scope"),NPp=NodePath.prototype=Object.create(Path.prototype,{constructor:{value:NodePath,enumerable:!1,writable:!0,configurable:!0}});Object.defineProperties(NPp,{node:{get:function(){return Object.defineProperty(this,"node",{configurable:!0,value:this._computeNode()}),this.node}},parent:{get:function(){return Object.defineProperty(this,"parent",{configurable:!0,value:this._computeParent()}),this.parent}},scope:{get:function(){return Object.defineProperty(this,"scope",{configurable:!0,value:this._computeScope()}),this.scope}}}),NPp.replace=function(){return delete this.node,delete this.parent,delete this.scope,Path.prototype.replace.apply(this,arguments)},NPp.prune=function(){var remainingNodePath=this.parent;return this.replace(),cleanUpNodesAfterPrune(remainingNodePath)},NPp._computeNode=function(){var value=this.value;if(n.Node.check(value))return value;var pp=this.parentPath;return pp&&pp.node||null},NPp._computeParent=function(){var value=this.value,pp=this.parentPath;if(!n.Node.check(value)){for(;pp&&!n.Node.check(pp.value);)pp=pp.parentPath;pp&&(pp=pp.parentPath)}for(;pp&&!n.Node.check(pp.value);)pp=pp.parentPath;return pp||null},NPp._computeScope=function(){var value=this.value,pp=this.parentPath,scope=pp&&pp.scope;return n.Node.check(value)&&Scope.isEstablishedBy(value)&&(scope=new Scope(this,scope)),scope||null},NPp.getValueProperty=function(name){return types.getFieldValue(this.value,name)},NPp.needsParens=function(assumeExpressionContext){var pp=this.parentPath;if(!pp)return!1;var node=this.value;if(!n.Expression.check(node))return!1;if("Identifier"===node.type)return!1;for(;!n.Node.check(pp.value);)if(pp=pp.parentPath,!pp)return!1;var parent=pp.value;switch(node.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":return"MemberExpression"===parent.type&&"object"===this.name&&parent.object===node;case"BinaryExpression":case"LogicalExpression":switch(parent.type){case"CallExpression":return"callee"===this.name&&parent.callee===node;case"UnaryExpression":case"SpreadElement":case"SpreadProperty":return!0;case"MemberExpression":return"object"===this.name&&parent.object===node;case"BinaryExpression":case"LogicalExpression":var po=parent.operator,pp=PRECEDENCE[po],no=node.operator,np=PRECEDENCE[no];if(pp>np)return!0;if(pp===np&&"right"===this.name){if(parent.right!==node)throw new Error("Nodes must be equal");return!0}default:return!1}case"SequenceExpression":switch(parent.type){case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==this.name;default:return!0}case"YieldExpression":switch(parent.type){case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"CallExpression":case"MemberExpression":case"NewExpression":case"ConditionalExpression":case"YieldExpression":return!0;default:return!1}case"Literal":return"MemberExpression"===parent.type&&isNumber.check(node.value)&&"object"===this.name&&parent.object===node;case"AssignmentExpression":case"ConditionalExpression":switch(parent.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":return!0;case"CallExpression":return"callee"===this.name&&parent.callee===node;case"ConditionalExpression":return"test"===this.name&&parent.test===node;case"MemberExpression":return"object"===this.name&&parent.object===node;default:return!1}default:if("NewExpression"===parent.type&&"callee"===this.name&&parent.callee===node)return containsCallExpression(node)}return!(assumeExpressionContext===!0||this.canBeFirstInStatement()||!this.firstInStatement())};var PRECEDENCE={};[["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]].forEach(function(tier,i){tier.forEach(function(op){PRECEDENCE[op]=i})}),NPp.canBeFirstInStatement=function(){var node=this.node;return!n.FunctionExpression.check(node)&&!n.ObjectExpression.check(node)},NPp.firstInStatement=function(){return firstInStatement(this)},module.exports=NodePath},{"./path":14,"./scope":15,"./types":17}],13:[function(require,module,exports){function PathVisitor(){if(!(this instanceof PathVisitor))throw new Error("PathVisitor constructor cannot be invoked without 'new'");this._reusableContextStack=[],this._methodNameTable=computeMethodNameTable(this),this._shouldVisitComments=hasOwn.call(this._methodNameTable,"Block")||hasOwn.call(this._methodNameTable,"Line"),this.Context=makeContextConstructor(this),this._visiting=!1,this._changeReported=!1}function computeMethodNameTable(visitor){var typeNames=Object.create(null);for(var methodName in visitor)/^visit[A-Z]/.test(methodName)&&(typeNames[methodName.slice("visit".length)]=!0);for(var supertypeTable=types.computeSupertypeLookupTable(typeNames),methodNameTable=Object.create(null),typeNames=Object.keys(supertypeTable),typeNameCount=typeNames.length,i=0;typeNameCount>i;++i){var typeName=typeNames[i];methodName="visit"+supertypeTable[typeName],isFunction.check(visitor[methodName])&&(methodNameTable[typeName]=methodName)}return methodNameTable}function extend(target,source){for(var property in source)hasOwn.call(source,property)&&(target[property]=source[property]);return target}function visitChildren(path,visitor){if(!(path instanceof NodePath))throw new Error("");if(!(visitor instanceof PathVisitor))throw new Error("");var value=path.value;if(isArray.check(value))path.each(visitor.visitWithoutReset,visitor);else if(isObject.check(value)){var childNames=types.getFieldNames(value);visitor._shouldVisitComments&&value.comments&&childNames.indexOf("comments")<0&&childNames.push("comments");for(var childCount=childNames.length,childPaths=[],i=0;childCount>i;++i){var childName=childNames[i];hasOwn.call(value,childName)||(value[childName]=types.getFieldValue(value,childName)),childPaths.push(path.get(childName))}for(var i=0;childCount>i;++i)visitor.visitWithoutReset(childPaths[i])}else;return path.value}function makeContextConstructor(visitor){function Context(path){if(!(this instanceof Context))throw new Error("");if(!(this instanceof PathVisitor))throw new Error("");if(!(path instanceof NodePath))throw new Error("");Object.defineProperty(this,"visitor",{value:visitor,writable:!1,enumerable:!0,configurable:!1}),this.currentPath=path,this.needToCallTraverse=!0,Object.seal(this)}if(!(visitor instanceof PathVisitor))throw new Error("");var Cp=Context.prototype=Object.create(visitor);return Cp.constructor=Context,extend(Cp,sharedContextProtoMethods),Context}var undefined,types=require("./types"),NodePath=require("./node-path"),isArray=(types.namedTypes.Printable,types.builtInTypes.array),isObject=types.builtInTypes.object,isFunction=types.builtInTypes["function"],hasOwn=Object.prototype.hasOwnProperty;PathVisitor.fromMethodsObject=function(methods){function Visitor(){if(!(this instanceof Visitor))throw new Error("Visitor constructor cannot be invoked without 'new'");PathVisitor.call(this)}if(methods instanceof PathVisitor)return methods;if(!isObject.check(methods))return new PathVisitor;var Vp=Visitor.prototype=Object.create(PVp);return Vp.constructor=Visitor,extend(Vp,methods),extend(Visitor,PathVisitor),isFunction.assert(Visitor.fromMethodsObject),isFunction.assert(Visitor.visit),new Visitor},PathVisitor.visit=function(node,methods){return PathVisitor.fromMethodsObject(methods).visit(node)};var PVp=PathVisitor.prototype;PVp.visit=function(){if(this._visiting)throw new Error("Recursively calling visitor.visit(path) resets visitor state. Try this.visit(path) or this.traverse(path) instead.");this._visiting=!0,this._changeReported=!1,this._abortRequested=!1;for(var argc=arguments.length,args=new Array(argc),i=0;argc>i;++i)args[i]=arguments[i];args[0]instanceof NodePath||(args[0]=new NodePath({root:args[0]}).get("root")),this.reset.apply(this,args);try{var root=this.visitWithoutReset(args[0]),didNotThrow=!0}finally{if(this._visiting=!1,!didNotThrow&&this._abortRequested)return args[0].value}return root},PVp.AbortRequest=function(){},PVp.abort=function(){var visitor=this;visitor._abortRequested=!0;var request=new visitor.AbortRequest;throw request.cancel=function(){visitor._abortRequested=!1},request},PVp.reset=function(path){},PVp.visitWithoutReset=function(path){if(this instanceof this.Context)return this.visitor.visitWithoutReset(path);if(!(path instanceof NodePath))throw new Error("");var value=path.value,methodName=value&&"object"==typeof value&&"string"==typeof value.type&&this._methodNameTable[value.type];if(!methodName)return visitChildren(path,this);var context=this.acquireContext(path);try{return context.invokeVisitorMethod(methodName)}finally{this.releaseContext(context)}},PVp.acquireContext=function(path){return 0===this._reusableContextStack.length?new this.Context(path):this._reusableContextStack.pop().reset(path)},PVp.releaseContext=function(context){if(!(context instanceof this.Context))throw new Error("");this._reusableContextStack.push(context),context.currentPath=null},PVp.reportChanged=function(){this._changeReported=!0},PVp.wasChangeReported=function(){return this._changeReported};var sharedContextProtoMethods=Object.create(null);sharedContextProtoMethods.reset=function(path){if(!(this instanceof this.Context))throw new Error("");if(!(path instanceof NodePath))throw new Error("");return this.currentPath=path,this.needToCallTraverse=!0,this},sharedContextProtoMethods.invokeVisitorMethod=function(methodName){if(!(this instanceof this.Context))throw new Error("");if(!(this.currentPath instanceof NodePath))throw new Error("");var result=this.visitor[methodName].call(this,this.currentPath);if(result===!1?this.needToCallTraverse=!1:result!==undefined&&(this.currentPath=this.currentPath.replace(result)[0],this.needToCallTraverse&&this.traverse(this.currentPath)),this.needToCallTraverse!==!1)throw new Error("Must either call this.traverse or return false in "+methodName);var path=this.currentPath;return path&&path.value},sharedContextProtoMethods.traverse=function(path,newVisitor){if(!(this instanceof this.Context))throw new Error("");if(!(path instanceof NodePath))throw new Error("");if(!(this.currentPath instanceof NodePath))throw new Error("");return this.needToCallTraverse=!1,visitChildren(path,PathVisitor.fromMethodsObject(newVisitor||this.visitor))},sharedContextProtoMethods.visit=function(path,newVisitor){if(!(this instanceof this.Context))throw new Error("");if(!(path instanceof NodePath))throw new Error("");if(!(this.currentPath instanceof NodePath))throw new Error("");return this.needToCallTraverse=!1,PathVisitor.fromMethodsObject(newVisitor||this.visitor).visitWithoutReset(path)},sharedContextProtoMethods.reportChanged=function(){this.visitor.reportChanged()},sharedContextProtoMethods.abort=function(){this.needToCallTraverse=!1,this.visitor.abort()},module.exports=PathVisitor},{"./node-path":12,"./types":17}],14:[function(require,module,exports){function Path(value,parentPath,name){if(!(this instanceof Path))throw new Error("Path constructor cannot be invoked without 'new'");if(parentPath){if(!(parentPath instanceof Path))throw new Error("")}else parentPath=null,name=null;this.value=value,this.parentPath=parentPath,this.name=name,this.__childCache=null}function getChildCache(path){return path.__childCache||(path.__childCache=Object.create(null))}function getChildPath(path,name){var cache=getChildCache(path),actualChildValue=path.getValueProperty(name),childPath=cache[name];return hasOwn.call(cache,name)&&childPath.value===actualChildValue||(childPath=cache[name]=new path.constructor(actualChildValue,path,name)),childPath}function emptyMoves(){}function getMoves(path,offset,start,end){if(isArray.assert(path.value),0===offset)return emptyMoves;var length=path.value.length;if(1>length)return emptyMoves;var argc=arguments.length;2===argc?(start=0,end=length):3===argc?(start=Math.max(start,0),end=length):(start=Math.max(start,0),end=Math.min(end,length)),isNumber.assert(start),isNumber.assert(end);for(var moves=Object.create(null),cache=getChildCache(path),i=start;end>i;++i)if(hasOwn.call(path.value,i)){var childPath=path.get(i);if(childPath.name!==i)throw new Error("");var newIndex=i+offset;childPath.name=newIndex,moves[newIndex]=childPath,delete cache[i]}return delete cache.length,function(){for(var newIndex in moves){var childPath=moves[newIndex];if(childPath.name!==+newIndex)throw new Error("");cache[newIndex]=childPath,path.value[newIndex]=childPath.value}}}function repairRelationshipWithParent(path){if(!(path instanceof Path))throw new Error("");var pp=path.parentPath;if(!pp)return path;var parentValue=pp.value,parentCache=getChildCache(pp);if(parentValue[path.name]===path.value)parentCache[path.name]=path;else if(isArray.check(parentValue)){var i=parentValue.indexOf(path.value);i>=0&&(parentCache[path.name=i]=path)}else parentValue[path.name]=path.value,parentCache[path.name]=path;if(parentValue[path.name]!==path.value)throw new Error("");if(path.parentPath.get(path.name)!==path)throw new Error("");return path}var Op=Object.prototype,hasOwn=Op.hasOwnProperty,types=require("./types"),isArray=types.builtInTypes.array,isNumber=types.builtInTypes.number,Ap=Array.prototype,Pp=(Ap.slice,Ap.map,Path.prototype);Pp.getValueProperty=function(name){return this.value[name]},Pp.get=function(name){for(var path=this,names=arguments,count=names.length,i=0;count>i;++i)path=getChildPath(path,names[i]);return path},Pp.each=function(callback,context){for(var childPaths=[],len=this.value.length,i=0,i=0;len>i;++i)hasOwn.call(this.value,i)&&(childPaths[i]=this.get(i));for(context=context||this,i=0;len>i;++i)hasOwn.call(childPaths,i)&&callback.call(context,childPaths[i])},Pp.map=function(callback,context){var result=[];return this.each(function(childPath){result.push(callback.call(this,childPath))},context),result},Pp.filter=function(callback,context){var result=[];return this.each(function(childPath){callback.call(this,childPath)&&result.push(childPath)},context),result},Pp.shift=function(){var move=getMoves(this,-1),result=this.value.shift();return move(),result},Pp.unshift=function(node){var move=getMoves(this,arguments.length),result=this.value.unshift.apply(this.value,arguments);return move(),result},Pp.push=function(node){return isArray.assert(this.value),delete getChildCache(this).length,this.value.push.apply(this.value,arguments)},Pp.pop=function(){isArray.assert(this.value);var cache=getChildCache(this);return delete cache[this.value.length-1],delete cache.length,this.value.pop()},Pp.insertAt=function(index,node){var argc=arguments.length,move=getMoves(this,argc-1,index);if(move===emptyMoves)return this;index=Math.max(index,0);for(var i=1;argc>i;++i)this.value[index+i-1]=arguments[i];return move(),this},Pp.insertBefore=function(node){for(var pp=this.parentPath,argc=arguments.length,insertAtArgs=[this.name],i=0;argc>i;++i)insertAtArgs.push(arguments[i]);return pp.insertAt.apply(pp,insertAtArgs)},Pp.insertAfter=function(node){for(var pp=this.parentPath,argc=arguments.length,insertAtArgs=[this.name+1],i=0;argc>i;++i)insertAtArgs.push(arguments[i]);return pp.insertAt.apply(pp,insertAtArgs)},Pp.replace=function(replacement){var results=[],parentValue=this.parentPath.value,parentCache=getChildCache(this.parentPath),count=arguments.length;if(repairRelationshipWithParent(this),isArray.check(parentValue)){for(var originalLength=parentValue.length,move=getMoves(this.parentPath,count-1,this.name+1),spliceArgs=[this.name,1],i=0;count>i;++i)spliceArgs.push(arguments[i]);var splicedOut=parentValue.splice.apply(parentValue,spliceArgs);if(splicedOut[0]!==this.value)throw new Error("");if(parentValue.length!==originalLength-1+count)throw new Error("");if(move(),0===count)delete this.value,delete parentCache[this.name],this.__childCache=null;else{if(parentValue[this.name]!==replacement)throw new Error("");for(this.value!==replacement&&(this.value=replacement,this.__childCache=null),i=0;count>i;++i)results.push(this.parentPath.get(this.name+i));if(results[0]!==this)throw new Error("")}}else if(1===count)this.value!==replacement&&(this.__childCache=null),this.value=parentValue[this.name]=replacement,results.push(this);else{if(0!==count)throw new Error("Could not replace path");delete parentValue[this.name],delete this.value,this.__childCache=null}return results},module.exports=Path},{"./types":17}],15:[function(require,module,exports){function Scope(path,parentScope){if(!(this instanceof Scope))throw new Error("Scope constructor cannot be invoked without 'new'");if(!(path instanceof require("./node-path")))throw new Error("");ScopeType.assert(path.value);var depth;if(parentScope){if(!(parentScope instanceof Scope))throw new Error("");depth=parentScope.depth+1}else parentScope=null,depth=0;Object.defineProperties(this,{path:{value:path},node:{value:path.value},isGlobal:{value:!parentScope,enumerable:!0},depth:{value:depth},parent:{value:parentScope},bindings:{value:{}},types:{value:{}}})}function scanScope(path,bindings,scopeTypes){var node=path.value;ScopeType.assert(node),namedTypes.CatchClause.check(node)?addPattern(path.get("param"),bindings):recursiveScanScope(path,bindings,scopeTypes)}function recursiveScanScope(path,bindings,scopeTypes){var node=path.value;path.parent&&namedTypes.FunctionExpression.check(path.parent.node)&&path.parent.node.id&&addPattern(path.parent.get("id"),bindings),node&&(isArray.check(node)?path.each(function(childPath){recursiveScanChild(childPath,bindings,scopeTypes)}):namedTypes.Function.check(node)?(path.get("params").each(function(paramPath){addPattern(paramPath,bindings)}),recursiveScanChild(path.get("body"),bindings,scopeTypes)):namedTypes.TypeAlias&&namedTypes.TypeAlias.check(node)?addTypePattern(path.get("id"),scopeTypes):namedTypes.VariableDeclarator.check(node)?(addPattern(path.get("id"),bindings),recursiveScanChild(path.get("init"),bindings,scopeTypes)):"ImportSpecifier"===node.type||"ImportNamespaceSpecifier"===node.type||"ImportDefaultSpecifier"===node.type?addPattern(path.get(node.local?"local":node.name?"name":"id"),bindings):Node.check(node)&&!Expression.check(node)&&types.eachField(node,function(name,child){var childPath=path.get(name);if(childPath.value!==child)throw new Error("");recursiveScanChild(childPath,bindings,scopeTypes)}))}function recursiveScanChild(path,bindings,scopeTypes){var node=path.value;if(!node||Expression.check(node));else if(namedTypes.FunctionDeclaration.check(node))addPattern(path.get("id"),bindings);else if(namedTypes.ClassDeclaration&&namedTypes.ClassDeclaration.check(node))addPattern(path.get("id"),bindings);else if(ScopeType.check(node)){if(namedTypes.CatchClause.check(node)){var catchParamName=node.param.name,hadBinding=hasOwn.call(bindings,catchParamName);recursiveScanScope(path.get("body"),bindings,scopeTypes),hadBinding||delete bindings[catchParamName]}}else recursiveScanScope(path,bindings,scopeTypes)}function addPattern(patternPath,bindings){var pattern=patternPath.value;namedTypes.Pattern.assert(pattern),namedTypes.Identifier.check(pattern)?hasOwn.call(bindings,pattern.name)?bindings[pattern.name].push(patternPath):bindings[pattern.name]=[patternPath]:namedTypes.ObjectPattern&&namedTypes.ObjectPattern.check(pattern)?patternPath.get("properties").each(function(propertyPath){var property=propertyPath.value;namedTypes.Pattern.check(property)?addPattern(propertyPath,bindings):namedTypes.Property.check(property)?addPattern(propertyPath.get("value"),bindings):namedTypes.SpreadProperty&&namedTypes.SpreadProperty.check(property)&&addPattern(propertyPath.get("argument"),bindings)}):namedTypes.ArrayPattern&&namedTypes.ArrayPattern.check(pattern)?patternPath.get("elements").each(function(elementPath){var element=elementPath.value;namedTypes.Pattern.check(element)?addPattern(elementPath,bindings):namedTypes.SpreadElement&&namedTypes.SpreadElement.check(element)&&addPattern(elementPath.get("argument"),bindings)}):namedTypes.PropertyPattern&&namedTypes.PropertyPattern.check(pattern)?addPattern(patternPath.get("pattern"),bindings):(namedTypes.SpreadElementPattern&&namedTypes.SpreadElementPattern.check(pattern)||namedTypes.SpreadPropertyPattern&&namedTypes.SpreadPropertyPattern.check(pattern))&&addPattern(patternPath.get("argument"),bindings)}function addTypePattern(patternPath,types){var pattern=patternPath.value;namedTypes.Pattern.assert(pattern),namedTypes.Identifier.check(pattern)&&(hasOwn.call(types,pattern.name)?types[pattern.name].push(patternPath):types[pattern.name]=[patternPath])}var types=require("./types"),Type=types.Type,namedTypes=types.namedTypes,Node=namedTypes.Node,Expression=namedTypes.Expression,isArray=types.builtInTypes.array,hasOwn=Object.prototype.hasOwnProperty,b=types.builders,scopeTypes=[namedTypes.Program,namedTypes.Function,namedTypes.CatchClause],ScopeType=Type.or.apply(Type,scopeTypes);Scope.isEstablishedBy=function(node){return ScopeType.check(node)};var Sp=Scope.prototype;Sp.didScan=!1,Sp.declares=function(name){return this.scan(),hasOwn.call(this.bindings,name)},Sp.declaresType=function(name){return this.scan(),hasOwn.call(this.types,name)},Sp.declareTemporary=function(prefix){if(prefix){if(!/^[a-z$_]/i.test(prefix))throw new Error("")}else prefix="t$";prefix+=this.depth.toString(36)+"$",this.scan();for(var index=0;this.declares(prefix+index);)++index;var name=prefix+index;return this.bindings[name]=types.builders.identifier(name)},Sp.injectTemporary=function(identifier,init){identifier||(identifier=this.declareTemporary());var bodyPath=this.path.get("body");return namedTypes.BlockStatement.check(bodyPath.value)&&(bodyPath=bodyPath.get("body")),bodyPath.unshift(b.variableDeclaration("var",[b.variableDeclarator(identifier,init||null)])),identifier},Sp.scan=function(force){if(force||!this.didScan){for(var name in this.bindings)delete this.bindings[name];scanScope(this.path,this.bindings,this.types),this.didScan=!0}},Sp.getBindings=function(){return this.scan(),this.bindings},Sp.getTypes=function(){return this.scan(),this.types},Sp.lookup=function(name){for(var scope=this;scope&&!scope.declares(name);scope=scope.parent);return scope},Sp.lookupType=function(name){for(var scope=this;scope&&!scope.declaresType(name);scope=scope.parent);return scope},Sp.getGlobalScope=function(){for(var scope=this;!scope.isGlobal;)scope=scope.parent;return scope},module.exports=Scope},{"./node-path":12,"./types":17}],16:[function(require,module,exports){var types=require("../lib/types"),Type=types.Type,builtin=types.builtInTypes,isNumber=builtin.number;exports.geq=function(than){return new Type(function(value){return isNumber.check(value)&&value>=than},isNumber+" >= "+than)},exports.defaults={"null":function(){return null},emptyArray:function(){return[]},"false":function(){return!1},"true":function(){return!0},undefined:function(){}};var naiveIsPrimitive=Type.or(builtin.string,builtin.number,builtin["boolean"],builtin["null"],builtin.undefined);exports.isPrimitive=new Type(function(value){if(null===value)return!0;var type=typeof value;return!("object"===type||"function"===type)},naiveIsPrimitive.toString())},{"../lib/types":17}],17:[function(require,module,exports){function Type(check,name){var self=this;if(!(self instanceof Type))throw new Error("Type constructor cannot be invoked without 'new'");if(objToStr.call(check)!==funObjStr)throw new Error(check+" is not a function");var nameObjStr=objToStr.call(name);if(nameObjStr!==funObjStr&&nameObjStr!==strObjStr)throw new Error(name+" is neither a function nor a string");Object.defineProperties(self,{name:{value:name},check:{value:function(value,deep){var result=check.call(self,value,deep);return!result&&deep&&objToStr.call(deep)===funObjStr&&deep(self,value),result}}})}function shallowStringify(value){return isObject.check(value)?"{"+Object.keys(value).map(function(key){return key+": "+value[key]}).join(", ")+"}":isArray.check(value)?"["+value.map(shallowStringify).join(", ")+"]":JSON.stringify(value)}function defBuiltInType(example,name){var objStr=objToStr.call(example),type=new Type(function(value){return objToStr.call(value)===objStr},name);return builtInTypes[name]=type,example&&"function"==typeof example.constructor&&(builtInCtorFns.push(example.constructor),builtInCtorTypes.push(type)),type}function toType(from,name){if(from instanceof Type)return from;if(from instanceof Def)return from.type;if(isArray.check(from))return Type.fromArray(from);if(isObject.check(from))return Type.fromObject(from);if(isFunction.check(from)){var bicfIndex=builtInCtorFns.indexOf(from);return bicfIndex>=0?builtInCtorTypes[bicfIndex]:new Type(from,name)}return new Type(function(value){return value===from},isUndefined.check(name)?function(){return from+""}:name)}function Field(name,type,defaultFn,hidden){var self=this;if(!(self instanceof Field))throw new Error("Field constructor cannot be invoked without 'new'");isString.assert(name),type=toType(type);var properties={name:{value:name},type:{value:type},hidden:{value:!!hidden}};isFunction.check(defaultFn)&&(properties.defaultFn={value:defaultFn}),Object.defineProperties(self,properties)}function Def(typeName){var self=this;if(!(self instanceof Def))throw new Error("Def constructor cannot be invoked without 'new'");Object.defineProperties(self,{typeName:{value:typeName},baseNames:{value:[]},ownFields:{value:Object.create(null)},allSupertypes:{value:Object.create(null)},supertypeList:{value:[]},allFields:{value:Object.create(null)},fieldNames:{value:[]},type:{value:new Type(function(value,deep){return self.check(value,deep)},typeName)}})}function getBuilderName(typeName){return typeName.replace(/^[A-Z]+/,function(upperCasePrefix){var len=upperCasePrefix.length;switch(len){case 0:return"";case 1:return upperCasePrefix.toLowerCase();
default:return upperCasePrefix.slice(0,len-1).toLowerCase()+upperCasePrefix.charAt(len-1)}})}function getStatementBuilderName(typeName){return typeName=getBuilderName(typeName),typeName.replace(/(Expression)?$/,"Statement")}function getFieldNames(object){var d=Def.fromValue(object);if(d)return d.fieldNames.slice(0);if("type"in object)throw new Error("did not recognize object of type "+JSON.stringify(object.type));return Object.keys(object)}function getFieldValue(object,fieldName){var d=Def.fromValue(object);if(d){var field=d.allFields[fieldName];if(field)return field.getValue(object)}return object[fieldName]}function wrapExpressionBuilderWithStatement(typeName){var wrapperName=getStatementBuilderName(typeName);if(!builders[wrapperName]){var wrapped=builders[getBuilderName(typeName)];wrapped&&(builders[wrapperName]=function(){return builders.expressionStatement(wrapped.apply(builders,arguments))})}}function populateSupertypeList(typeName,list){list.length=0,list.push(typeName);for(var lastSeen=Object.create(null),pos=0;pos<list.length;++pos){typeName=list[pos];var d=defCache[typeName];if(d.finalized!==!0)throw new Error("");hasOwn.call(lastSeen,typeName)&&delete list[lastSeen[typeName]],lastSeen[typeName]=pos,list.push.apply(list,d.baseNames)}for(var to=0,from=to,len=list.length;len>from;++from)hasOwn.call(list,from)&&(list[to++]=list[from]);list.length=to}function extend(into,from){return Object.keys(from).forEach(function(name){into[name]=from[name]}),into}var Ap=Array.prototype,slice=Ap.slice,Op=(Ap.map,Ap.forEach,Object.prototype),objToStr=Op.toString,funObjStr=objToStr.call(function(){}),strObjStr=objToStr.call(""),hasOwn=Op.hasOwnProperty,Tp=Type.prototype;exports.Type=Type,Tp.assert=function(value,deep){if(!this.check(value,deep)){var str=shallowStringify(value);throw new Error(str+" does not match type "+this)}return!0},Tp.toString=function(){var name=this.name;return isString.check(name)?name:isFunction.check(name)?name.call(this)+"":name+" type"};var builtInCtorFns=[],builtInCtorTypes=[],builtInTypes={};exports.builtInTypes=builtInTypes;var isString=defBuiltInType("truthy","string"),isFunction=defBuiltInType(function(){},"function"),isArray=defBuiltInType([],"array"),isObject=defBuiltInType({},"object"),isNumber=(defBuiltInType(/./,"RegExp"),defBuiltInType(new Date,"Date"),defBuiltInType(3,"number")),isUndefined=(defBuiltInType(!0,"boolean"),defBuiltInType(null,"null"),defBuiltInType(void 0,"undefined"));Type.or=function(){for(var types=[],len=arguments.length,i=0;len>i;++i)types.push(toType(arguments[i]));return new Type(function(value,deep){for(var i=0;len>i;++i)if(types[i].check(value,deep))return!0;return!1},function(){return types.join(" | ")})},Type.fromArray=function(arr){if(!isArray.check(arr))throw new Error("");if(1!==arr.length)throw new Error("only one element type is permitted for typed arrays");return toType(arr[0]).arrayOf()},Tp.arrayOf=function(){var elemType=this;return new Type(function(value,deep){return isArray.check(value)&&value.every(function(elem){return elemType.check(elem,deep)})},function(){return"["+elemType+"]"})},Type.fromObject=function(obj){var fields=Object.keys(obj).map(function(name){return new Field(name,obj[name])});return new Type(function(value,deep){return isObject.check(value)&&fields.every(function(field){return field.type.check(value[field.name],deep)})},function(){return"{ "+fields.join(", ")+" }"})};var Fp=Field.prototype;Fp.toString=function(){return JSON.stringify(this.name)+": "+this.type},Fp.getValue=function(obj){var value=obj[this.name];return isUndefined.check(value)?(this.defaultFn&&(value=this.defaultFn.call(obj)),value):value},Type.def=function(typeName){return isString.assert(typeName),hasOwn.call(defCache,typeName)?defCache[typeName]:defCache[typeName]=new Def(typeName)};var defCache=Object.create(null);Def.fromValue=function(value){if(value&&"object"==typeof value){var type=value.type;if("string"==typeof type&&hasOwn.call(defCache,type)){var d=defCache[type];if(d.finalized)return d}}return null};var Dp=Def.prototype;Dp.isSupertypeOf=function(that){if(that instanceof Def){if(this.finalized!==!0||that.finalized!==!0)throw new Error("");return hasOwn.call(that.allSupertypes,this.typeName)}throw new Error(that+" is not a Def")},exports.getSupertypeNames=function(typeName){if(!hasOwn.call(defCache,typeName))throw new Error("");var d=defCache[typeName];if(d.finalized!==!0)throw new Error("");return d.supertypeList.slice(1)},exports.computeSupertypeLookupTable=function(candidates){for(var table={},typeNames=Object.keys(defCache),typeNameCount=typeNames.length,i=0;typeNameCount>i;++i){var typeName=typeNames[i],d=defCache[typeName];if(d.finalized!==!0)throw new Error(""+typeName);for(var j=0;j<d.supertypeList.length;++j){var superTypeName=d.supertypeList[j];if(hasOwn.call(candidates,superTypeName)){table[typeName]=superTypeName;break}}}return table},Dp.checkAllFields=function(value,deep){function checkFieldByName(name){var field=allFields[name],type=field.type,child=field.getValue(value);return type.check(child,deep)}var allFields=this.allFields;if(this.finalized!==!0)throw new Error(""+this.typeName);return isObject.check(value)&&Object.keys(allFields).every(checkFieldByName)},Dp.check=function(value,deep){if(this.finalized!==!0)throw new Error("prematurely checking unfinalized type "+this.typeName);if(!isObject.check(value))return!1;var vDef=Def.fromValue(value);return vDef?deep&&vDef===this?this.checkAllFields(value,deep):this.isSupertypeOf(vDef)?deep?vDef.checkAllFields(value,deep)&&this.checkAllFields(value,!1):!0:!1:"SourceLocation"===this.typeName||"Position"===this.typeName?this.checkAllFields(value,deep):!1},Dp.bases=function(){var args=slice.call(arguments),bases=this.baseNames;if(this.finalized){if(args.length!==bases.length)throw new Error("");for(var i=0;i<args.length;i++)if(args[i]!==bases[i])throw new Error("");return this}return args.forEach(function(baseName){isString.assert(baseName),bases.indexOf(baseName)<0&&bases.push(baseName)}),this},Object.defineProperty(Dp,"buildable",{value:!1});var builders={};exports.builders=builders;var nodePrototype={};exports.defineMethod=function(name,func){var old=nodePrototype[name];return isUndefined.check(func)?delete nodePrototype[name]:(isFunction.assert(func),Object.defineProperty(nodePrototype,name,{enumerable:!0,configurable:!0,value:func})),old};var isArrayOfString=isString.arrayOf();Dp.build=function(){var self=this,newBuildParams=slice.call(arguments);return isArrayOfString.assert(newBuildParams),Object.defineProperty(self,"buildParams",{value:newBuildParams,writable:!1,enumerable:!1,configurable:!0}),self.buildable?self:(self.field("type",String,function(){return self.typeName}),Object.defineProperty(self,"buildable",{value:!0}),Object.defineProperty(builders,getBuilderName(self.typeName),{enumerable:!0,value:function(){function add(param,i){if(!hasOwn.call(built,param)){var all=self.allFields;if(!hasOwn.call(all,param))throw new Error(""+param);var value,field=all[param],type=field.type;if(isNumber.check(i)&&argc>i)value=args[i];else{if(!field.defaultFn){var message="no value or default function given for field "+JSON.stringify(param)+" of "+self.typeName+"("+self.buildParams.map(function(name){return all[name]}).join(", ")+")";throw new Error(message)}value=field.defaultFn.call(built)}if(!type.check(value))throw new Error(shallowStringify(value)+" does not match field "+field+" of type "+self.typeName);built[param]=value}}var args=arguments,argc=args.length,built=Object.create(nodePrototype);if(!self.finalized)throw new Error("attempting to instantiate unfinalized type "+self.typeName);if(self.buildParams.forEach(function(param,i){add(param,i)}),Object.keys(self.allFields).forEach(function(param){add(param)}),built.type!==self.typeName)throw new Error("");return built}}),self)},exports.getBuilderName=getBuilderName,exports.getStatementBuilderName=getStatementBuilderName,Dp.field=function(name,type,defaultFn,hidden){return this.finalized?(console.error("Ignoring attempt to redefine field "+JSON.stringify(name)+" of finalized type "+JSON.stringify(this.typeName)),this):(this.ownFields[name]=new Field(name,type,defaultFn,hidden),this)};var namedTypes={};exports.namedTypes=namedTypes,exports.getFieldNames=getFieldNames,exports.getFieldValue=getFieldValue,exports.eachField=function(object,callback,context){getFieldNames(object).forEach(function(name){callback.call(this,name,getFieldValue(object,name))},context)},exports.someField=function(object,callback,context){return getFieldNames(object).some(function(name){return callback.call(this,name,getFieldValue(object,name))},context)},Object.defineProperty(Dp,"finalized",{value:!1}),Dp.finalize=function(){var self=this;if(!self.finalized){var allFields=self.allFields,allSupertypes=self.allSupertypes;self.baseNames.forEach(function(name){var def=defCache[name];if(!(def instanceof Def)){var message="unknown supertype name "+JSON.stringify(name)+" for subtype "+JSON.stringify(self.typeName);throw new Error(message)}def.finalize(),extend(allFields,def.allFields),extend(allSupertypes,def.allSupertypes)}),extend(allFields,self.ownFields),allSupertypes[self.typeName]=self,self.fieldNames.length=0;for(var fieldName in allFields)hasOwn.call(allFields,fieldName)&&!allFields[fieldName].hidden&&self.fieldNames.push(fieldName);Object.defineProperty(namedTypes,self.typeName,{enumerable:!0,value:self.type}),Object.defineProperty(self,"finalized",{value:!0}),populateSupertypeList(self.typeName,self.supertypeList),self.buildable&&self.supertypeList.lastIndexOf("Expression")>=0&&wrapExpressionBuilderWithStatement(self.typeName)}},exports.finalize=function(){Object.keys(defCache).forEach(function(name){defCache[name].finalize()})}},{}],18:[function(require,module,exports){var types=require("./lib/types");require("./def/core"),require("./def/es6"),require("./def/es7"),require("./def/mozilla"),require("./def/e4x"),require("./def/jsx"),require("./def/flow"),require("./def/esprima"),require("./def/babel"),types.finalize(),exports.Type=types.Type,exports.builtInTypes=types.builtInTypes,exports.namedTypes=types.namedTypes,exports.builders=types.builders,exports.defineMethod=types.defineMethod,exports.getFieldNames=types.getFieldNames,exports.getFieldValue=types.getFieldValue,exports.eachField=types.eachField,exports.someField=types.someField,exports.getSupertypeNames=types.getSupertypeNames,exports.astNodesAreEquivalent=require("./lib/equiv"),exports.finalize=types.finalize,exports.NodePath=require("./lib/node-path"),exports.PathVisitor=require("./lib/path-visitor"),exports.visit=exports.PathVisitor.visit},{"./def/babel":2,"./def/core":3,"./def/e4x":4,"./def/es6":5,"./def/es7":6,"./def/esprima":7,"./def/flow":8,"./def/jsx":9,"./def/mozilla":10,"./lib/equiv":11,"./lib/node-path":12,"./lib/path-visitor":13,"./lib/types":17}],19:[function(require,module,exports){(function(global){!function(){"use strict";function isExpression(node){return CodeGenerator.Expression.hasOwnProperty(node.type)}function isStatement(node){return CodeGenerator.Statement.hasOwnProperty(node.type)}function getDefaultOptions(){return{indent:null,base:null,parse:null,comment:!1,format:{indent:{style:" ",base:0,adjustMultilineComment:!1},newline:"\n",space:" ",json:!1,renumber:!1,hexadecimal:!1,quotes:"single",escapeless:!1,compact:!1,parentheses:!0,semicolons:!0,safeConcatenation:!1,preserveBlankLines:!1},moz:{comprehensionExpressionStartsWithAssignment:!1,starlessGenerator:!1},sourceMap:null,sourceMapRoot:null,sourceMapWithCode:!1,directive:!1,raw:!0,verbatim:null,sourceCode:null}}function stringRepeat(str,num){var result="";for(num|=0;num>0;num>>>=1,str+=str)1&num&&(result+=str);return result}function hasLineTerminator(str){return/[\r\n]/g.test(str)}function endsWithLineTerminator(str){var len=str.length;return len&&esutils.code.isLineTerminator(str.charCodeAt(len-1))}function merge(target,override){var key;for(key in override)override.hasOwnProperty(key)&&(target[key]=override[key]);return target}function updateDeeply(target,override){function isHashObject(target){return"object"==typeof target&&target instanceof Object&&!(target instanceof RegExp)}var key,val;for(key in override)override.hasOwnProperty(key)&&(val=override[key],isHashObject(val)?isHashObject(target[key])?updateDeeply(target[key],val):target[key]=updateDeeply({},val):target[key]=val);return target}function generateNumber(value){var result,point,temp,exponent,pos;if(value!==value)throw new Error("Numeric literal whose value is NaN");if(0>value||0===value&&0>1/value)throw new Error("Numeric literal whose value is negative");if(value===1/0)return json?"null":renumber?"1e400":"1e+400";if(result=""+value,!renumber||result.length<3)return result;for(point=result.indexOf("."),json||48!==result.charCodeAt(0)||1!==point||(point=0,result=result.slice(1)),temp=result,result=result.replace("e+","e"),exponent=0,(pos=temp.indexOf("e"))>0&&(exponent=+temp.slice(pos+1),temp=temp.slice(0,pos)),point>=0&&(exponent-=temp.length-point-1,temp=+(temp.slice(0,point)+temp.slice(point+1))+""),pos=0;48===temp.charCodeAt(temp.length+pos-1);)--pos;return 0!==pos&&(exponent-=pos,temp=temp.slice(0,pos)),0!==exponent&&(temp+="e"+exponent),(temp.length<result.length||hexadecimal&&value>1e12&&Math.floor(value)===value&&(temp="0x"+value.toString(16)).length<result.length)&&+temp===value&&(result=temp),result}function escapeRegExpCharacter(ch,previousIsBackslash){return 8232===(-2&ch)?(previousIsBackslash?"u":"\\u")+(8232===ch?"2028":"2029"):10===ch||13===ch?(previousIsBackslash?"":"\\")+(10===ch?"n":"r"):String.fromCharCode(ch)}function generateRegExp(reg){var match,result,flags,i,iz,ch,characterInBrack,previousIsBackslash;if(result=reg.toString(),reg.source){if(match=result.match(/\/([^\/]*)$/),!match)return result;for(flags=match[1],result="",characterInBrack=!1,previousIsBackslash=!1,i=0,iz=reg.source.length;iz>i;++i)ch=reg.source.charCodeAt(i),previousIsBackslash?(result+=escapeRegExpCharacter(ch,previousIsBackslash),previousIsBackslash=!1):(characterInBrack?93===ch&&(characterInBrack=!1):47===ch?result+="\\":91===ch&&(characterInBrack=!0),result+=escapeRegExpCharacter(ch,previousIsBackslash),previousIsBackslash=92===ch);return"/"+result+"/"+flags}return result}function escapeAllowedCharacter(code,next){var hex;return 8===code?"\\b":12===code?"\\f":9===code?"\\t":(hex=code.toString(16).toUpperCase(),json||code>255?"\\u"+"0000".slice(hex.length)+hex:0!==code||esutils.code.isDecimalDigit(next)?11===code?"\\x0B":"\\x"+"00".slice(hex.length)+hex:"\\0")}function escapeDisallowedCharacter(code){if(92===code)return"\\\\";if(10===code)return"\\n";if(13===code)return"\\r";if(8232===code)return"\\u2028";if(8233===code)return"\\u2029";throw new Error("Incorrectly classified character")}function escapeDirective(str){var i,iz,code,quote;for(quote="double"===quotes?'"':"'",i=0,iz=str.length;iz>i;++i){if(code=str.charCodeAt(i),39===code){quote='"';break}if(34===code){quote="'";break}92===code&&++i}return quote+str+quote}function escapeString(str){var i,len,code,single,quote,result="",singleQuotes=0,doubleQuotes=0;for(i=0,len=str.length;len>i;++i){if(code=str.charCodeAt(i),39===code)++singleQuotes;else if(34===code)++doubleQuotes;else if(47===code&&json)result+="\\";else{if(esutils.code.isLineTerminator(code)||92===code){result+=escapeDisallowedCharacter(code);continue}if(!esutils.code.isIdentifierPartES5(code)&&(json&&32>code||!json&&!escapeless&&(32>code||code>126))){result+=escapeAllowedCharacter(code,str.charCodeAt(i+1));continue}}result+=String.fromCharCode(code)}if(single=!("double"===quotes||"auto"===quotes&&singleQuotes>doubleQuotes),quote=single?"'":'"',!(single?singleQuotes:doubleQuotes))return quote+result+quote;for(str=result,result=quote,i=0,len=str.length;len>i;++i)code=str.charCodeAt(i),(39===code&&single||34===code&&!single)&&(result+="\\"),result+=String.fromCharCode(code);return result+quote}function flattenToString(arr){var i,iz,elem,result="";for(i=0,iz=arr.length;iz>i;++i)elem=arr[i],result+=isArray(elem)?flattenToString(elem):elem;return result}function toSourceNodeWhenNeeded(generated,node){if(!sourceMap)return isArray(generated)?flattenToString(generated):generated;if(null==node){if(generated instanceof SourceNode)return generated;node={}}return null==node.loc?new SourceNode(null,null,sourceMap,generated,node.name||null):new SourceNode(node.loc.start.line,node.loc.start.column,sourceMap===!0?node.loc.source||null:sourceMap,generated,node.name||null)}function noEmptySpace(){return space?space:" "}function join(left,right){var leftSource,rightSource,leftCharCode,rightCharCode;return leftSource=toSourceNodeWhenNeeded(left).toString(),0===leftSource.length?[right]:(rightSource=toSourceNodeWhenNeeded(right).toString(),0===rightSource.length?[left]:(leftCharCode=leftSource.charCodeAt(leftSource.length-1),rightCharCode=rightSource.charCodeAt(0),(43===leftCharCode||45===leftCharCode)&&leftCharCode===rightCharCode||esutils.code.isIdentifierPartES5(leftCharCode)&&esutils.code.isIdentifierPartES5(rightCharCode)||47===leftCharCode&&105===rightCharCode?[left,noEmptySpace(),right]:esutils.code.isWhiteSpace(leftCharCode)||esutils.code.isLineTerminator(leftCharCode)||esutils.code.isWhiteSpace(rightCharCode)||esutils.code.isLineTerminator(rightCharCode)?[left,right]:[left,space,right]))}function addIndent(stmt){return[base,stmt]}function withIndent(fn){var previousBase;previousBase=base,base+=indent,fn(base),base=previousBase}function calculateSpaces(str){var i;for(i=str.length-1;i>=0&&!esutils.code.isLineTerminator(str.charCodeAt(i));--i);return str.length-1-i}function adjustMultilineComment(value,specialBase){var array,i,len,line,j,spaces,previousBase,sn;for(array=value.split(/\r\n|[\r\n]/),spaces=Number.MAX_VALUE,i=1,len=array.length;len>i;++i){for(line=array[i],j=0;j<line.length&&esutils.code.isWhiteSpace(line.charCodeAt(j));)++j;spaces>j&&(spaces=j)}for("undefined"!=typeof specialBase?(previousBase=base,"*"===array[1][spaces]&&(specialBase+=" "),base=specialBase):(1&spaces&&--spaces,previousBase=base),i=1,len=array.length;len>i;++i)sn=toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces))),array[i]=sourceMap?sn.join(""):sn;return base=previousBase,array.join("\n")}function generateComment(comment,specialBase){if("Line"===comment.type){if(endsWithLineTerminator(comment.value))return"//"+comment.value;var result="//"+comment.value;return preserveBlankLines||(result+="\n"),result}return extra.format.indent.adjustMultilineComment&&/[\n\r]/.test(comment.value)?adjustMultilineComment("/*"+comment.value+"*/",specialBase):"/*"+comment.value+"*/"}function addComments(stmt,result){var i,len,comment,save,tailingToStatement,specialBase,fragment,extRange,range,prevRange,prefix,infix,suffix,count;if(stmt.leadingComments&&stmt.leadingComments.length>0){if(save=result,preserveBlankLines){for(comment=stmt.leadingComments[0],result=[],extRange=comment.extendedRange,range=comment.range,prefix=sourceCode.substring(extRange[0],range[0]),count=(prefix.match(/\n/g)||[]).length,count>0?(result.push(stringRepeat("\n",count)),result.push(addIndent(generateComment(comment)))):(result.push(prefix),result.push(generateComment(comment))),prevRange=range,i=1,len=stmt.leadingComments.length;len>i;i++)comment=stmt.leadingComments[i],range=comment.range,infix=sourceCode.substring(prevRange[1],range[0]),count=(infix.match(/\n/g)||[]).length,result.push(stringRepeat("\n",count)),result.push(addIndent(generateComment(comment))),prevRange=range;suffix=sourceCode.substring(range[1],extRange[1]),count=(suffix.match(/\n/g)||[]).length,result.push(stringRepeat("\n",count))}else for(comment=stmt.leadingComments[0],result=[],safeConcatenation&&stmt.type===Syntax.Program&&0===stmt.body.length&&result.push("\n"),result.push(generateComment(comment)),endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())||result.push("\n"),i=1,len=stmt.leadingComments.length;len>i;++i)comment=stmt.leadingComments[i],fragment=[generateComment(comment)],endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())||fragment.push("\n"),result.push(addIndent(fragment));result.push(addIndent(save))}if(stmt.trailingComments)if(preserveBlankLines)comment=stmt.trailingComments[0],extRange=comment.extendedRange,range=comment.range,prefix=sourceCode.substring(extRange[0],range[0]),count=(prefix.match(/\n/g)||[]).length,count>0?(result.push(stringRepeat("\n",count)),result.push(addIndent(generateComment(comment)))):(result.push(prefix),result.push(generateComment(comment)));else for(tailingToStatement=!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString()),specialBase=stringRepeat(" ",calculateSpaces(toSourceNodeWhenNeeded([base,result,indent]).toString())),i=0,len=stmt.trailingComments.length;len>i;++i)comment=stmt.trailingComments[i],tailingToStatement?(result=0===i?[result,indent]:[result,specialBase],result.push(generateComment(comment,specialBase))):result=[result,addIndent(generateComment(comment))],i===len-1||endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())||(result=[result,"\n"]);return result}function generateBlankLines(start,end,result){var j,newlineCount=0;for(j=start;end>j;j++)"\n"===sourceCode[j]&&newlineCount++;for(j=1;newlineCount>j;j++)result.push(newline)}function parenthesize(text,current,should){return should>current?["(",text,")"]:text}function generateVerbatimString(string){var i,iz,result;for(result=string.split(/\r\n|\n/),i=1,iz=result.length;iz>i;i++)result[i]=newline+base+result[i];return result}function generateVerbatim(expr,precedence){var verbatim,result,prec;return verbatim=expr[extra.verbatim],"string"==typeof verbatim?result=parenthesize(generateVerbatimString(verbatim),Precedence.Sequence,precedence):(result=generateVerbatimString(verbatim.content),prec=null!=verbatim.precedence?verbatim.precedence:Precedence.Sequence,result=parenthesize(result,prec,precedence)),toSourceNodeWhenNeeded(result,expr)}function CodeGenerator(){}function generateIdentifier(node){return toSourceNodeWhenNeeded(node.name,node)}function generateAsyncPrefix(node,spaceRequired){return node.async?"async"+(spaceRequired?noEmptySpace():space):""}function generateStarSuffix(node){var isGenerator=node.generator&&!extra.moz.starlessGenerator;return isGenerator?"*"+space:""}function generateMethodPrefix(prop){var func=prop.value;return func.async?generateAsyncPrefix(func,!prop.computed):generateStarSuffix(func)?"*":""}function generateInternal(node){var codegen;if(codegen=new CodeGenerator,isStatement(node))return codegen.generateStatement(node,S_TFFF);if(isExpression(node))return codegen.generateExpression(node,Precedence.Sequence,E_TTT);throw new Error("Unknown node type: "+node.type)}function generate(node,options){var result,pair,defaultOptions=getDefaultOptions();return null!=options?("string"==typeof options.indent&&(defaultOptions.format.indent.style=options.indent),"number"==typeof options.base&&(defaultOptions.format.indent.base=options.base),options=updateDeeply(defaultOptions,options),indent=options.format.indent.style,base="string"==typeof options.base?options.base:stringRepeat(indent,options.format.indent.base)):(options=defaultOptions,indent=options.format.indent.style,base=stringRepeat(indent,options.format.indent.base)),json=options.format.json,renumber=options.format.renumber,hexadecimal=json?!1:options.format.hexadecimal,quotes=json?"double":options.format.quotes,escapeless=options.format.escapeless,newline=options.format.newline,space=options.format.space,options.format.compact&&(newline=space=indent=base=""),parentheses=options.format.parentheses,semicolons=options.format.semicolons,safeConcatenation=options.format.safeConcatenation,directive=options.directive,parse=json?null:options.parse,sourceMap=options.sourceMap,sourceCode=options.sourceCode,preserveBlankLines=options.format.preserveBlankLines&&null!==sourceCode,extra=options,sourceMap&&(SourceNode=exports.browser?global.sourceMap.SourceNode:require("source-map").SourceNode),result=generateInternal(node),sourceMap?(pair=result.toStringWithSourceMap({file:options.file,sourceRoot:options.sourceMapRoot}),options.sourceContent&&pair.map.setSourceContent(options.sourceMap,options.sourceContent),options.sourceMapWithCode?pair:pair.map.toString()):(pair={code:result.toString(),map:null},options.sourceMapWithCode?pair:pair.code)}var Syntax,Precedence,BinaryPrecedence,SourceNode,estraverse,esutils,isArray,base,indent,json,renumber,hexadecimal,quotes,escapeless,newline,space,parentheses,semicolons,safeConcatenation,directive,extra,parse,sourceMap,sourceCode,preserveBlankLines,FORMAT_MINIFY,FORMAT_DEFAULTS;estraverse=require("estraverse"),esutils=require("esutils"),Syntax=estraverse.Syntax,Precedence={Sequence:0,Yield:1,Await:1,Assignment:1,Conditional:2,ArrowFunction:2,LogicalOR:3,LogicalAND:4,BitwiseOR:5,BitwiseXOR:6,BitwiseAND:7,Equality:8,Relational:9,BitwiseSHIFT:10,Additive:11,Multiplicative:12,Unary:13,Postfix:14,Call:15,New:16,TaggedTemplate:17,Member:18,Primary:19},BinaryPrecedence={"||":Precedence.LogicalOR,"&&":Precedence.LogicalAND,"|":Precedence.BitwiseOR,"^":Precedence.BitwiseXOR,"&":Precedence.BitwiseAND,"==":Precedence.Equality,"!=":Precedence.Equality,"===":Precedence.Equality,"!==":Precedence.Equality,is:Precedence.Equality,isnt:Precedence.Equality,"<":Precedence.Relational,">":Precedence.Relational,"<=":Precedence.Relational,">=":Precedence.Relational,"in":Precedence.Relational,"instanceof":Precedence.Relational,"<<":Precedence.BitwiseSHIFT,">>":Precedence.BitwiseSHIFT,">>>":Precedence.BitwiseSHIFT,"+":Precedence.Additive,"-":Precedence.Additive,"*":Precedence.Multiplicative,"%":Precedence.Multiplicative,"/":Precedence.Multiplicative};var F_ALLOW_IN=1,F_ALLOW_CALL=2,F_ALLOW_UNPARATH_NEW=4,F_FUNC_BODY=8,F_DIRECTIVE_CTX=16,F_SEMICOLON_OPT=32,E_FTT=F_ALLOW_CALL|F_ALLOW_UNPARATH_NEW,E_TTF=F_ALLOW_IN|F_ALLOW_CALL,E_TTT=F_ALLOW_IN|F_ALLOW_CALL|F_ALLOW_UNPARATH_NEW,E_TFF=F_ALLOW_IN,E_FFT=F_ALLOW_UNPARATH_NEW,E_TFT=F_ALLOW_IN|F_ALLOW_UNPARATH_NEW,S_TFFF=F_ALLOW_IN,S_TFFT=F_ALLOW_IN|F_SEMICOLON_OPT,S_FFFF=0,S_TFTF=F_ALLOW_IN|F_DIRECTIVE_CTX,S_TTFF=F_ALLOW_IN|F_FUNC_BODY;isArray=Array.isArray,isArray||(isArray=function(array){return"[object Array]"===Object.prototype.toString.call(array)}),CodeGenerator.prototype.maybeBlock=function(stmt,flags){var result,noLeadingComment,that=this;return noLeadingComment=!extra.comment||!stmt.leadingComments,stmt.type===Syntax.BlockStatement&&noLeadingComment?[space,this.generateStatement(stmt,flags)]:stmt.type===Syntax.EmptyStatement&&noLeadingComment?";":(withIndent(function(){result=[newline,addIndent(that.generateStatement(stmt,flags))]}),result)},CodeGenerator.prototype.maybeBlockSuffix=function(stmt,result){var ends=endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString());return stmt.type!==Syntax.BlockStatement||extra.comment&&stmt.leadingComments||ends?ends?[result,base]:[result,newline,base]:[result,space]},CodeGenerator.prototype.generatePattern=function(node,precedence,flags){return node.type===Syntax.Identifier?generateIdentifier(node):this.generateExpression(node,precedence,flags)},CodeGenerator.prototype.generateFunctionParams=function(node){var i,iz,result,hasDefault;if(hasDefault=!1,node.type!==Syntax.ArrowFunctionExpression||node.rest||node.defaults&&0!==node.defaults.length||1!==node.params.length||node.params[0].type!==Syntax.Identifier){for(result=node.type===Syntax.ArrowFunctionExpression?[generateAsyncPrefix(node,!1)]:[],result.push("("),node.defaults&&(hasDefault=!0),i=0,iz=node.params.length;iz>i;++i)hasDefault&&node.defaults[i]?result.push(this.generateAssignment(node.params[i],node.defaults[i],"=",Precedence.Assignment,E_TTT)):result.push(this.generatePattern(node.params[i],Precedence.Assignment,E_TTT)),iz>i+1&&result.push(","+space);node.rest&&(node.params.length&&result.push(","+space),result.push("..."),result.push(generateIdentifier(node.rest))),result.push(")")}else result=[generateAsyncPrefix(node,!0),generateIdentifier(node.params[0])];return result},CodeGenerator.prototype.generateFunctionBody=function(node){var result,expr;return result=this.generateFunctionParams(node),node.type===Syntax.ArrowFunctionExpression&&(result.push(space),result.push("=>")),node.expression?(result.push(space),expr=this.generateExpression(node.body,Precedence.Assignment,E_TTT),"{"===expr.toString().charAt(0)&&(expr=["(",expr,")"]),result.push(expr)):result.push(this.maybeBlock(node.body,S_TTFF)),result},CodeGenerator.prototype.generateIterationForStatement=function(operator,stmt,flags){var result=["for"+space+"("],that=this;return withIndent(function(){stmt.left.type===Syntax.VariableDeclaration?withIndent(function(){result.push(stmt.left.kind+noEmptySpace()),result.push(that.generateStatement(stmt.left.declarations[0],S_FFFF))}):result.push(that.generateExpression(stmt.left,Precedence.Call,E_TTT)),result=join(result,operator),result=[join(result,that.generateExpression(stmt.right,Precedence.Sequence,E_TTT)),")"]}),result.push(this.maybeBlock(stmt.body,flags)),result},CodeGenerator.prototype.generatePropertyKey=function(expr,computed){var result=[];return computed&&result.push("["),result.push(this.generateExpression(expr,Precedence.Sequence,E_TTT)),computed&&result.push("]"),result},CodeGenerator.prototype.generateAssignment=function(left,right,operator,precedence,flags){return Precedence.Assignment<precedence&&(flags|=F_ALLOW_IN),parenthesize([this.generateExpression(left,Precedence.Call,flags),space+operator+space,this.generateExpression(right,Precedence.Assignment,flags)],Precedence.Assignment,precedence)},CodeGenerator.prototype.semicolon=function(flags){return!semicolons&&flags&F_SEMICOLON_OPT?"":";"},CodeGenerator.Statement={BlockStatement:function(stmt,flags){var range,content,result=["{",newline],that=this;return withIndent(function(){0===stmt.body.length&&preserveBlankLines&&(range=stmt.range,range[1]-range[0]>2&&(content=sourceCode.substring(range[0]+1,range[1]-1),"\n"===content[0]&&(result=["{"]),result.push(content)));var i,iz,fragment,bodyFlags;for(bodyFlags=S_TFFF,flags&F_FUNC_BODY&&(bodyFlags|=F_DIRECTIVE_CTX),i=0,iz=stmt.body.length;iz>i;++i)preserveBlankLines&&(0===i&&(stmt.body[0].leadingComments&&(range=stmt.body[0].leadingComments[0].extendedRange,content=sourceCode.substring(range[0],range[1]),"\n"===content[0]&&(result=["{"])),stmt.body[0].leadingComments||generateBlankLines(stmt.range[0],stmt.body[0].range[0],result)),i>0&&(stmt.body[i-1].trailingComments||stmt.body[i].leadingComments||generateBlankLines(stmt.body[i-1].range[1],stmt.body[i].range[0],result))),i===iz-1&&(bodyFlags|=F_SEMICOLON_OPT),fragment=stmt.body[i].leadingComments&&preserveBlankLines?that.generateStatement(stmt.body[i],bodyFlags):addIndent(that.generateStatement(stmt.body[i],bodyFlags)),result.push(fragment),endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())||(preserveBlankLines&&iz-1>i?stmt.body[i+1].leadingComments||result.push(newline):result.push(newline)),preserveBlankLines&&i===iz-1&&(stmt.body[i].trailingComments||generateBlankLines(stmt.body[i].range[1],stmt.range[1],result))}),result.push(addIndent("}")),result},BreakStatement:function(stmt,flags){return stmt.label?"break "+stmt.label.name+this.semicolon(flags):"break"+this.semicolon(flags)},ContinueStatement:function(stmt,flags){return stmt.label?"continue "+stmt.label.name+this.semicolon(flags):"continue"+this.semicolon(flags)},ClassBody:function(stmt,flags){var result=["{",newline],that=this;return withIndent(function(indent){var i,iz;for(i=0,iz=stmt.body.length;iz>i;++i)result.push(indent),result.push(that.generateExpression(stmt.body[i],Precedence.Sequence,E_TTT)),iz>i+1&&result.push(newline)}),endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())||result.push(newline),result.push(base),result.push("}"),result},ClassDeclaration:function(stmt,flags){var result,fragment;return result=["class "+stmt.id.name],stmt.superClass&&(fragment=join("extends",this.generateExpression(stmt.superClass,Precedence.Assignment,E_TTT)),
result=join(result,fragment)),result.push(space),result.push(this.generateStatement(stmt.body,S_TFFT)),result},DirectiveStatement:function(stmt,flags){return extra.raw&&stmt.raw?stmt.raw+this.semicolon(flags):escapeDirective(stmt.directive)+this.semicolon(flags)},DoWhileStatement:function(stmt,flags){var result=join("do",this.maybeBlock(stmt.body,S_TFFF));return result=this.maybeBlockSuffix(stmt.body,result),join(result,["while"+space+"(",this.generateExpression(stmt.test,Precedence.Sequence,E_TTT),")"+this.semicolon(flags)])},CatchClause:function(stmt,flags){var result,that=this;return withIndent(function(){var guard;result=["catch"+space+"(",that.generateExpression(stmt.param,Precedence.Sequence,E_TTT),")"],stmt.guard&&(guard=that.generateExpression(stmt.guard,Precedence.Sequence,E_TTT),result.splice(2,0," if ",guard))}),result.push(this.maybeBlock(stmt.body,S_TFFF)),result},DebuggerStatement:function(stmt,flags){return"debugger"+this.semicolon(flags)},EmptyStatement:function(stmt,flags){return";"},ExportDefaultDeclaration:function(stmt,flags){var bodyFlags,result=["export"];return bodyFlags=flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF,result=join(result,"default"),result=isStatement(stmt.declaration)?join(result,this.generateStatement(stmt.declaration,bodyFlags)):join(result,this.generateExpression(stmt.declaration,Precedence.Assignment,E_TTT)+this.semicolon(flags))},ExportNamedDeclaration:function(stmt,flags){var bodyFlags,result=["export"],that=this;return bodyFlags=flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF,stmt.declaration?join(result,this.generateStatement(stmt.declaration,bodyFlags)):(stmt.specifiers&&(0===stmt.specifiers.length?result=join(result,"{"+space+"}"):stmt.specifiers[0].type===Syntax.ExportBatchSpecifier?result=join(result,this.generateExpression(stmt.specifiers[0],Precedence.Sequence,E_TTT)):(result=join(result,"{"),withIndent(function(indent){var i,iz;for(result.push(newline),i=0,iz=stmt.specifiers.length;iz>i;++i)result.push(indent),result.push(that.generateExpression(stmt.specifiers[i],Precedence.Sequence,E_TTT)),iz>i+1&&result.push(","+newline)}),endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())||result.push(newline),result.push(base+"}")),stmt.source?result=join(result,["from"+space,this.generateExpression(stmt.source,Precedence.Sequence,E_TTT),this.semicolon(flags)]):result.push(this.semicolon(flags))),result)},ExportAllDeclaration:function(stmt,flags){return["export"+space,"*"+space,"from"+space,this.generateExpression(stmt.source,Precedence.Sequence,E_TTT),this.semicolon(flags)]},ExpressionStatement:function(stmt,flags){function isClassPrefixed(fragment){var code;return"class"!==fragment.slice(0,5)?!1:(code=fragment.charCodeAt(5),123===code||esutils.code.isWhiteSpace(code)||esutils.code.isLineTerminator(code))}function isFunctionPrefixed(fragment){var code;return"function"!==fragment.slice(0,8)?!1:(code=fragment.charCodeAt(8),40===code||esutils.code.isWhiteSpace(code)||42===code||esutils.code.isLineTerminator(code))}function isAsyncPrefixed(fragment){var code,i,iz;if("async"!==fragment.slice(0,5))return!1;if(!esutils.code.isWhiteSpace(fragment.charCodeAt(5)))return!1;for(i=6,iz=fragment.length;iz>i&&esutils.code.isWhiteSpace(fragment.charCodeAt(i));++i);return i===iz?!1:"function"!==fragment.slice(i,i+8)?!1:(code=fragment.charCodeAt(i+8),40===code||esutils.code.isWhiteSpace(code)||42===code||esutils.code.isLineTerminator(code))}var result,fragment;return result=[this.generateExpression(stmt.expression,Precedence.Sequence,E_TTT)],fragment=toSourceNodeWhenNeeded(result).toString(),123===fragment.charCodeAt(0)||isClassPrefixed(fragment)||isFunctionPrefixed(fragment)||isAsyncPrefixed(fragment)||directive&&flags&F_DIRECTIVE_CTX&&stmt.expression.type===Syntax.Literal&&"string"==typeof stmt.expression.value?result=["(",result,")"+this.semicolon(flags)]:result.push(this.semicolon(flags)),result},ImportDeclaration:function(stmt,flags){var result,cursor,that=this;return 0===stmt.specifiers.length?["import",space,this.generateExpression(stmt.source,Precedence.Sequence,E_TTT),this.semicolon(flags)]:(result=["import"],cursor=0,stmt.specifiers[cursor].type===Syntax.ImportDefaultSpecifier&&(result=join(result,[this.generateExpression(stmt.specifiers[cursor],Precedence.Sequence,E_TTT)]),++cursor),stmt.specifiers[cursor]&&(0!==cursor&&result.push(","),stmt.specifiers[cursor].type===Syntax.ImportNamespaceSpecifier?result=join(result,[space,this.generateExpression(stmt.specifiers[cursor],Precedence.Sequence,E_TTT)]):(result.push(space+"{"),stmt.specifiers.length-cursor===1?(result.push(space),result.push(this.generateExpression(stmt.specifiers[cursor],Precedence.Sequence,E_TTT)),result.push(space+"}"+space)):(withIndent(function(indent){var i,iz;for(result.push(newline),i=cursor,iz=stmt.specifiers.length;iz>i;++i)result.push(indent),result.push(that.generateExpression(stmt.specifiers[i],Precedence.Sequence,E_TTT)),iz>i+1&&result.push(","+newline)}),endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())||result.push(newline),result.push(base+"}"+space)))),result=join(result,["from"+space,this.generateExpression(stmt.source,Precedence.Sequence,E_TTT),this.semicolon(flags)]))},VariableDeclarator:function(stmt,flags){var itemFlags=flags&F_ALLOW_IN?E_TTT:E_FTT;return stmt.init?[this.generateExpression(stmt.id,Precedence.Assignment,itemFlags),space,"=",space,this.generateExpression(stmt.init,Precedence.Assignment,itemFlags)]:this.generatePattern(stmt.id,Precedence.Assignment,itemFlags)},VariableDeclaration:function(stmt,flags){function block(){for(node=stmt.declarations[0],extra.comment&&node.leadingComments?(result.push("\n"),result.push(addIndent(that.generateStatement(node,bodyFlags)))):(result.push(noEmptySpace()),result.push(that.generateStatement(node,bodyFlags))),i=1,iz=stmt.declarations.length;iz>i;++i)node=stmt.declarations[i],extra.comment&&node.leadingComments?(result.push(","+newline),result.push(addIndent(that.generateStatement(node,bodyFlags)))):(result.push(","+space),result.push(that.generateStatement(node,bodyFlags)))}var result,i,iz,node,bodyFlags,that=this;return result=[stmt.kind],bodyFlags=flags&F_ALLOW_IN?S_TFFF:S_FFFF,stmt.declarations.length>1?withIndent(block):block(),result.push(this.semicolon(flags)),result},ThrowStatement:function(stmt,flags){return[join("throw",this.generateExpression(stmt.argument,Precedence.Sequence,E_TTT)),this.semicolon(flags)]},TryStatement:function(stmt,flags){var result,i,iz,guardedHandlers;if(result=["try",this.maybeBlock(stmt.block,S_TFFF)],result=this.maybeBlockSuffix(stmt.block,result),stmt.handlers)for(i=0,iz=stmt.handlers.length;iz>i;++i)result=join(result,this.generateStatement(stmt.handlers[i],S_TFFF)),(stmt.finalizer||i+1!==iz)&&(result=this.maybeBlockSuffix(stmt.handlers[i].body,result));else{for(guardedHandlers=stmt.guardedHandlers||[],i=0,iz=guardedHandlers.length;iz>i;++i)result=join(result,this.generateStatement(guardedHandlers[i],S_TFFF)),(stmt.finalizer||i+1!==iz)&&(result=this.maybeBlockSuffix(guardedHandlers[i].body,result));if(stmt.handler)if(isArray(stmt.handler))for(i=0,iz=stmt.handler.length;iz>i;++i)result=join(result,this.generateStatement(stmt.handler[i],S_TFFF)),(stmt.finalizer||i+1!==iz)&&(result=this.maybeBlockSuffix(stmt.handler[i].body,result));else result=join(result,this.generateStatement(stmt.handler,S_TFFF)),stmt.finalizer&&(result=this.maybeBlockSuffix(stmt.handler.body,result))}return stmt.finalizer&&(result=join(result,["finally",this.maybeBlock(stmt.finalizer,S_TFFF)])),result},SwitchStatement:function(stmt,flags){var result,fragment,i,iz,bodyFlags,that=this;if(withIndent(function(){result=["switch"+space+"(",that.generateExpression(stmt.discriminant,Precedence.Sequence,E_TTT),")"+space+"{"+newline]}),stmt.cases)for(bodyFlags=S_TFFF,i=0,iz=stmt.cases.length;iz>i;++i)i===iz-1&&(bodyFlags|=F_SEMICOLON_OPT),fragment=addIndent(this.generateStatement(stmt.cases[i],bodyFlags)),result.push(fragment),endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())||result.push(newline);return result.push(addIndent("}")),result},SwitchCase:function(stmt,flags){var result,fragment,i,iz,bodyFlags,that=this;return withIndent(function(){for(result=stmt.test?[join("case",that.generateExpression(stmt.test,Precedence.Sequence,E_TTT)),":"]:["default:"],i=0,iz=stmt.consequent.length,iz&&stmt.consequent[0].type===Syntax.BlockStatement&&(fragment=that.maybeBlock(stmt.consequent[0],S_TFFF),result.push(fragment),i=1),i===iz||endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())||result.push(newline),bodyFlags=S_TFFF;iz>i;++i)i===iz-1&&flags&F_SEMICOLON_OPT&&(bodyFlags|=F_SEMICOLON_OPT),fragment=addIndent(that.generateStatement(stmt.consequent[i],bodyFlags)),result.push(fragment),i+1===iz||endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())||result.push(newline)}),result},IfStatement:function(stmt,flags){var result,bodyFlags,semicolonOptional,that=this;return withIndent(function(){result=["if"+space+"(",that.generateExpression(stmt.test,Precedence.Sequence,E_TTT),")"]}),semicolonOptional=flags&F_SEMICOLON_OPT,bodyFlags=S_TFFF,semicolonOptional&&(bodyFlags|=F_SEMICOLON_OPT),stmt.alternate?(result.push(this.maybeBlock(stmt.consequent,S_TFFF)),result=this.maybeBlockSuffix(stmt.consequent,result),result=stmt.alternate.type===Syntax.IfStatement?join(result,["else ",this.generateStatement(stmt.alternate,bodyFlags)]):join(result,join("else",this.maybeBlock(stmt.alternate,bodyFlags)))):result.push(this.maybeBlock(stmt.consequent,bodyFlags)),result},ForStatement:function(stmt,flags){var result,that=this;return withIndent(function(){result=["for"+space+"("],stmt.init?stmt.init.type===Syntax.VariableDeclaration?result.push(that.generateStatement(stmt.init,S_FFFF)):(result.push(that.generateExpression(stmt.init,Precedence.Sequence,E_FTT)),result.push(";")):result.push(";"),stmt.test?(result.push(space),result.push(that.generateExpression(stmt.test,Precedence.Sequence,E_TTT)),result.push(";")):result.push(";"),stmt.update?(result.push(space),result.push(that.generateExpression(stmt.update,Precedence.Sequence,E_TTT)),result.push(")")):result.push(")")}),result.push(this.maybeBlock(stmt.body,flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF)),result},ForInStatement:function(stmt,flags){return this.generateIterationForStatement("in",stmt,flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF)},ForOfStatement:function(stmt,flags){return this.generateIterationForStatement("of",stmt,flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF)},LabeledStatement:function(stmt,flags){return[stmt.label.name+":",this.maybeBlock(stmt.body,flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF)]},Program:function(stmt,flags){var result,fragment,i,iz,bodyFlags;for(iz=stmt.body.length,result=[safeConcatenation&&iz>0?"\n":""],bodyFlags=S_TFTF,i=0;iz>i;++i)safeConcatenation||i!==iz-1||(bodyFlags|=F_SEMICOLON_OPT),preserveBlankLines&&(0===i&&(stmt.body[0].leadingComments||generateBlankLines(stmt.range[0],stmt.body[i].range[0],result)),i>0&&(stmt.body[i-1].trailingComments||stmt.body[i].leadingComments||generateBlankLines(stmt.body[i-1].range[1],stmt.body[i].range[0],result))),fragment=addIndent(this.generateStatement(stmt.body[i],bodyFlags)),result.push(fragment),iz>i+1&&!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())&&(preserveBlankLines?stmt.body[i+1].leadingComments||result.push(newline):result.push(newline)),preserveBlankLines&&i===iz-1&&(stmt.body[i].trailingComments||generateBlankLines(stmt.body[i].range[1],stmt.range[1],result));return result},FunctionDeclaration:function(stmt,flags){return[generateAsyncPrefix(stmt,!0),"function",generateStarSuffix(stmt)||noEmptySpace(),stmt.id?generateIdentifier(stmt.id):"",this.generateFunctionBody(stmt)]},ReturnStatement:function(stmt,flags){return stmt.argument?[join("return",this.generateExpression(stmt.argument,Precedence.Sequence,E_TTT)),this.semicolon(flags)]:["return"+this.semicolon(flags)]},WhileStatement:function(stmt,flags){var result,that=this;return withIndent(function(){result=["while"+space+"(",that.generateExpression(stmt.test,Precedence.Sequence,E_TTT),")"]}),result.push(this.maybeBlock(stmt.body,flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF)),result},WithStatement:function(stmt,flags){var result,that=this;return withIndent(function(){result=["with"+space+"(",that.generateExpression(stmt.object,Precedence.Sequence,E_TTT),")"]}),result.push(this.maybeBlock(stmt.body,flags&F_SEMICOLON_OPT?S_TFFT:S_TFFF)),result}},merge(CodeGenerator.prototype,CodeGenerator.Statement),CodeGenerator.Expression={SequenceExpression:function(expr,precedence,flags){var result,i,iz;for(Precedence.Sequence<precedence&&(flags|=F_ALLOW_IN),result=[],i=0,iz=expr.expressions.length;iz>i;++i)result.push(this.generateExpression(expr.expressions[i],Precedence.Assignment,flags)),iz>i+1&&result.push(","+space);return parenthesize(result,Precedence.Sequence,precedence)},AssignmentExpression:function(expr,precedence,flags){return this.generateAssignment(expr.left,expr.right,expr.operator,precedence,flags)},ArrowFunctionExpression:function(expr,precedence,flags){return parenthesize(this.generateFunctionBody(expr),Precedence.ArrowFunction,precedence)},ConditionalExpression:function(expr,precedence,flags){return Precedence.Conditional<precedence&&(flags|=F_ALLOW_IN),parenthesize([this.generateExpression(expr.test,Precedence.LogicalOR,flags),space+"?"+space,this.generateExpression(expr.consequent,Precedence.Assignment,flags),space+":"+space,this.generateExpression(expr.alternate,Precedence.Assignment,flags)],Precedence.Conditional,precedence)},LogicalExpression:function(expr,precedence,flags){return this.BinaryExpression(expr,precedence,flags)},BinaryExpression:function(expr,precedence,flags){var result,currentPrecedence,fragment,leftSource;return currentPrecedence=BinaryPrecedence[expr.operator],precedence>currentPrecedence&&(flags|=F_ALLOW_IN),fragment=this.generateExpression(expr.left,currentPrecedence,flags),leftSource=fragment.toString(),result=47===leftSource.charCodeAt(leftSource.length-1)&&esutils.code.isIdentifierPartES5(expr.operator.charCodeAt(0))?[fragment,noEmptySpace(),expr.operator]:join(fragment,expr.operator),fragment=this.generateExpression(expr.right,currentPrecedence+1,flags),"/"===expr.operator&&"/"===fragment.toString().charAt(0)||"<"===expr.operator.slice(-1)&&"!--"===fragment.toString().slice(0,3)?(result.push(noEmptySpace()),result.push(fragment)):result=join(result,fragment),"in"!==expr.operator||flags&F_ALLOW_IN?parenthesize(result,currentPrecedence,precedence):["(",result,")"]},CallExpression:function(expr,precedence,flags){var result,i,iz;for(result=[this.generateExpression(expr.callee,Precedence.Call,E_TTF)],result.push("("),i=0,iz=expr.arguments.length;iz>i;++i)result.push(this.generateExpression(expr.arguments[i],Precedence.Assignment,E_TTT)),iz>i+1&&result.push(","+space);return result.push(")"),flags&F_ALLOW_CALL?parenthesize(result,Precedence.Call,precedence):["(",result,")"]},NewExpression:function(expr,precedence,flags){var result,length,i,iz,itemFlags;if(length=expr.arguments.length,itemFlags=flags&F_ALLOW_UNPARATH_NEW&&!parentheses&&0===length?E_TFT:E_TFF,result=join("new",this.generateExpression(expr.callee,Precedence.New,itemFlags)),!(flags&F_ALLOW_UNPARATH_NEW)||parentheses||length>0){for(result.push("("),i=0,iz=length;iz>i;++i)result.push(this.generateExpression(expr.arguments[i],Precedence.Assignment,E_TTT)),iz>i+1&&result.push(","+space);result.push(")")}return parenthesize(result,Precedence.New,precedence)},MemberExpression:function(expr,precedence,flags){var result,fragment;return result=[this.generateExpression(expr.object,Precedence.Call,flags&F_ALLOW_CALL?E_TTF:E_TFF)],expr.computed?(result.push("["),result.push(this.generateExpression(expr.property,Precedence.Sequence,flags&F_ALLOW_CALL?E_TTT:E_TFT)),result.push("]")):(expr.object.type===Syntax.Literal&&"number"==typeof expr.object.value&&(fragment=toSourceNodeWhenNeeded(result).toString(),fragment.indexOf(".")<0&&!/[eExX]/.test(fragment)&&esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length-1))&&!(fragment.length>=2&&48===fragment.charCodeAt(0))&&result.push(".")),result.push("."),result.push(generateIdentifier(expr.property))),parenthesize(result,Precedence.Member,precedence)},MetaProperty:function(expr,precedence,flags){var result;return result=[],result.push(expr.meta),result.push("."),result.push(expr.property),parenthesize(result,Precedence.Member,precedence)},UnaryExpression:function(expr,precedence,flags){var result,fragment,rightCharCode,leftSource,leftCharCode;return fragment=this.generateExpression(expr.argument,Precedence.Unary,E_TTT),""===space?result=join(expr.operator,fragment):(result=[expr.operator],expr.operator.length>2?result=join(result,fragment):(leftSource=toSourceNodeWhenNeeded(result).toString(),leftCharCode=leftSource.charCodeAt(leftSource.length-1),rightCharCode=fragment.toString().charCodeAt(0),(43===leftCharCode||45===leftCharCode)&&leftCharCode===rightCharCode||esutils.code.isIdentifierPartES5(leftCharCode)&&esutils.code.isIdentifierPartES5(rightCharCode)?(result.push(noEmptySpace()),result.push(fragment)):result.push(fragment))),parenthesize(result,Precedence.Unary,precedence)},YieldExpression:function(expr,precedence,flags){var result;return result=expr.delegate?"yield*":"yield",expr.argument&&(result=join(result,this.generateExpression(expr.argument,Precedence.Yield,E_TTT))),parenthesize(result,Precedence.Yield,precedence)},AwaitExpression:function(expr,precedence,flags){var result=join(expr.all?"await*":"await",this.generateExpression(expr.argument,Precedence.Await,E_TTT));return parenthesize(result,Precedence.Await,precedence)},UpdateExpression:function(expr,precedence,flags){return expr.prefix?parenthesize([expr.operator,this.generateExpression(expr.argument,Precedence.Unary,E_TTT)],Precedence.Unary,precedence):parenthesize([this.generateExpression(expr.argument,Precedence.Postfix,E_TTT),expr.operator],Precedence.Postfix,precedence)},FunctionExpression:function(expr,precedence,flags){var result=[generateAsyncPrefix(expr,!0),"function"];return expr.id?(result.push(generateStarSuffix(expr)||noEmptySpace()),result.push(generateIdentifier(expr.id))):result.push(generateStarSuffix(expr)||space),result.push(this.generateFunctionBody(expr)),result},ArrayPattern:function(expr,precedence,flags){return this.ArrayExpression(expr,precedence,flags,!0)},ArrayExpression:function(expr,precedence,flags,isPattern){var result,multiline,that=this;return expr.elements.length?(multiline=isPattern?!1:expr.elements.length>1,result=["[",multiline?newline:""],withIndent(function(indent){var i,iz;for(i=0,iz=expr.elements.length;iz>i;++i)expr.elements[i]?(result.push(multiline?indent:""),result.push(that.generateExpression(expr.elements[i],Precedence.Assignment,E_TTT))):(multiline&&result.push(indent),i+1===iz&&result.push(",")),iz>i+1&&result.push(","+(multiline?newline:space))}),multiline&&!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())&&result.push(newline),result.push(multiline?base:""),result.push("]"),result):"[]"},RestElement:function(expr,precedence,flags){return"..."+this.generatePattern(expr.argument)},ClassExpression:function(expr,precedence,flags){var result,fragment;return result=["class"],expr.id&&(result=join(result,this.generateExpression(expr.id,Precedence.Sequence,E_TTT))),expr.superClass&&(fragment=join("extends",this.generateExpression(expr.superClass,Precedence.Assignment,E_TTT)),result=join(result,fragment)),result.push(space),result.push(this.generateStatement(expr.body,S_TFFT)),result},MethodDefinition:function(expr,precedence,flags){var result,fragment;return result=expr["static"]?["static"+space]:[],fragment="get"===expr.kind||"set"===expr.kind?[join(expr.kind,this.generatePropertyKey(expr.key,expr.computed)),this.generateFunctionBody(expr.value)]:[generateMethodPrefix(expr),this.generatePropertyKey(expr.key,expr.computed),this.generateFunctionBody(expr.value)],join(result,fragment)},Property:function(expr,precedence,flags){return"get"===expr.kind||"set"===expr.kind?[expr.kind,noEmptySpace(),this.generatePropertyKey(expr.key,expr.computed),this.generateFunctionBody(expr.value)]:expr.shorthand?this.generatePropertyKey(expr.key,expr.computed):expr.method?[generateMethodPrefix(expr),this.generatePropertyKey(expr.key,expr.computed),this.generateFunctionBody(expr.value)]:[this.generatePropertyKey(expr.key,expr.computed),":"+space,this.generateExpression(expr.value,Precedence.Assignment,E_TTT)]},ObjectExpression:function(expr,precedence,flags){var multiline,result,fragment,that=this;return expr.properties.length?(multiline=expr.properties.length>1,withIndent(function(){fragment=that.generateExpression(expr.properties[0],Precedence.Sequence,E_TTT)}),multiline||hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())?(withIndent(function(indent){var i,iz;if(result=["{",newline,indent,fragment],multiline)for(result.push(","+newline),i=1,iz=expr.properties.length;iz>i;++i)result.push(indent),result.push(that.generateExpression(expr.properties[i],Precedence.Sequence,E_TTT)),iz>i+1&&result.push(","+newline)}),endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())||result.push(newline),result.push(base),result.push("}"),result):["{",space,fragment,space,"}"]):"{}"},AssignmentPattern:function(expr,precedence,flags){return this.generateAssignment(expr.left,expr.right,expr.operator,precedence,flags)},ObjectPattern:function(expr,precedence,flags){var result,i,iz,multiline,property,that=this;if(!expr.properties.length)return"{}";if(multiline=!1,1===expr.properties.length)property=expr.properties[0],property.value.type!==Syntax.Identifier&&(multiline=!0);else for(i=0,iz=expr.properties.length;iz>i;++i)if(property=expr.properties[i],!property.shorthand){multiline=!0;break}return result=["{",multiline?newline:""],withIndent(function(indent){var i,iz;for(i=0,iz=expr.properties.length;iz>i;++i)result.push(multiline?indent:""),result.push(that.generateExpression(expr.properties[i],Precedence.Sequence,E_TTT)),iz>i+1&&result.push(","+(multiline?newline:space))}),multiline&&!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())&&result.push(newline),result.push(multiline?base:""),result.push("}"),result},ThisExpression:function(expr,precedence,flags){return"this"},Super:function(expr,precedence,flags){return"super"},Identifier:function(expr,precedence,flags){return generateIdentifier(expr)},ImportDefaultSpecifier:function(expr,precedence,flags){return generateIdentifier(expr.id||expr.local)},ImportNamespaceSpecifier:function(expr,precedence,flags){var result=["*"],id=expr.id||expr.local;return id&&result.push(space+"as"+noEmptySpace()+generateIdentifier(id)),result},ImportSpecifier:function(expr,precedence,flags){var imported=expr.imported,result=[imported.name],local=expr.local;return local&&local.name!==imported.name&&result.push(noEmptySpace()+"as"+noEmptySpace()+generateIdentifier(local)),result},ExportSpecifier:function(expr,precedence,flags){var local=expr.local,result=[local.name],exported=expr.exported;return exported&&exported.name!==local.name&&result.push(noEmptySpace()+"as"+noEmptySpace()+generateIdentifier(exported)),result},Literal:function(expr,precedence,flags){var raw;if(expr.hasOwnProperty("raw")&&parse&&extra.raw)try{if(raw=parse(expr.raw).body[0].expression,raw.type===Syntax.Literal&&raw.value===expr.value)return expr.raw}catch(e){}return null===expr.value?"null":"string"==typeof expr.value?escapeString(expr.value):"number"==typeof expr.value?generateNumber(expr.value):"boolean"==typeof expr.value?expr.value?"true":"false":generateRegExp(expr.value)},GeneratorExpression:function(expr,precedence,flags){return this.ComprehensionExpression(expr,precedence,flags)},ComprehensionExpression:function(expr,precedence,flags){var result,i,iz,fragment,that=this;return result=expr.type===Syntax.GeneratorExpression?["("]:["["],extra.moz.comprehensionExpressionStartsWithAssignment&&(fragment=this.generateExpression(expr.body,Precedence.Assignment,E_TTT),result.push(fragment)),expr.blocks&&withIndent(function(){for(i=0,iz=expr.blocks.length;iz>i;++i)fragment=that.generateExpression(expr.blocks[i],Precedence.Sequence,E_TTT),i>0||extra.moz.comprehensionExpressionStartsWithAssignment?result=join(result,fragment):result.push(fragment)}),expr.filter&&(result=join(result,"if"+space),fragment=this.generateExpression(expr.filter,Precedence.Sequence,E_TTT),result=join(result,["(",fragment,")"])),extra.moz.comprehensionExpressionStartsWithAssignment||(fragment=this.generateExpression(expr.body,Precedence.Assignment,E_TTT),result=join(result,fragment)),result.push(expr.type===Syntax.GeneratorExpression?")":"]"),result},ComprehensionBlock:function(expr,precedence,flags){var fragment;return fragment=expr.left.type===Syntax.VariableDeclaration?[expr.left.kind,noEmptySpace(),this.generateStatement(expr.left.declarations[0],S_FFFF)]:this.generateExpression(expr.left,Precedence.Call,E_TTT),fragment=join(fragment,expr.of?"of":"in"),fragment=join(fragment,this.generateExpression(expr.right,Precedence.Sequence,E_TTT)),["for"+space+"(",fragment,")"]},SpreadElement:function(expr,precedence,flags){return["...",this.generateExpression(expr.argument,Precedence.Assignment,E_TTT)]},TaggedTemplateExpression:function(expr,precedence,flags){var itemFlags=E_TTF;flags&F_ALLOW_CALL||(itemFlags=E_TFF);var result=[this.generateExpression(expr.tag,Precedence.Call,itemFlags),this.generateExpression(expr.quasi,Precedence.Primary,E_FFT)];return parenthesize(result,Precedence.TaggedTemplate,precedence)},TemplateElement:function(expr,precedence,flags){return expr.value.raw},TemplateLiteral:function(expr,precedence,flags){var result,i,iz;for(result=["`"],i=0,iz=expr.quasis.length;iz>i;++i)result.push(this.generateExpression(expr.quasis[i],Precedence.Primary,E_TTT)),iz>i+1&&(result.push("${"+space),result.push(this.generateExpression(expr.expressions[i],Precedence.Sequence,E_TTT)),result.push(space+"}"));return result.push("`"),result},ModuleSpecifier:function(expr,precedence,flags){return this.Literal(expr,precedence,flags)}},merge(CodeGenerator.prototype,CodeGenerator.Expression),CodeGenerator.prototype.generateExpression=function(expr,precedence,flags){var result,type;return type=expr.type||Syntax.Property,extra.verbatim&&expr.hasOwnProperty(extra.verbatim)?generateVerbatim(expr,precedence):(result=this[type](expr,precedence,flags),extra.comment&&(result=addComments(expr,result)),toSourceNodeWhenNeeded(result,expr))},CodeGenerator.prototype.generateStatement=function(stmt,flags){var result,fragment;return result=this[stmt.type](stmt,flags),extra.comment&&(result=addComments(stmt,result)),fragment=toSourceNodeWhenNeeded(result).toString(),stmt.type!==Syntax.Program||safeConcatenation||""!==newline||"\n"!==fragment.charAt(fragment.length-1)||(result=sourceMap?toSourceNodeWhenNeeded(result).replaceRight(/\s+$/,""):fragment.replace(/\s+$/,"")),toSourceNodeWhenNeeded(result,stmt)},FORMAT_MINIFY={indent:{style:"",base:0},renumber:!0,hexadecimal:!0,quotes:"auto",escapeless:!0,compact:!0,parentheses:!1,semicolons:!1},FORMAT_DEFAULTS=getDefaultOptions().format,exports.version=require("./package.json").version,exports.generate=generate,exports.attachComments=estraverse.attachComments,exports.Precedence=updateDeeply({},Precedence),exports.browser=!1,exports.FORMAT_MINIFY=FORMAT_MINIFY,exports.FORMAT_DEFAULTS=FORMAT_DEFAULTS}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./package.json":20,estraverse:21,esutils:25,"source-map":29}],20:[function(require,module,exports){module.exports={_args:[["escodegen@^1.8.0","/home/oleg/ESJava"]],_from:"escodegen@>=1.8.0 <2.0.0",_id:"escodegen@1.8.0",_inCache:!0,_installable:!0,_location:"/escodegen",_nodeVersion:"4.1.1",_npmUser:{email:"utatane.tea@gmail.com",name:"constellation"},_npmVersion:"2.14.4",_phantomChildren:{},_requested:{name:"escodegen",raw:"escodegen@^1.8.0",rawSpec:"^1.8.0",scope:null,spec:">=1.8.0 <2.0.0",type:"range"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/escodegen/-/escodegen-1.8.0.tgz",_shasum:"b246aae829ce73d59e2c55727359edd1c130a81b",_shrinkwrap:null,_spec:"escodegen@^1.8.0",_where:"/home/oleg/ESJava",bin:{escodegen:"./bin/escodegen.js",esgenerate:"./bin/esgenerate.js"},bugs:{url:"https://github.com/estools/escodegen/issues"},dependencies:{esprima:"^2.7.1",estraverse:"^1.9.1",esutils:"^2.0.2",optionator:"^0.8.1","source-map":"~0.2.0"},description:"ECMAScript code generator",devDependencies:{"acorn-6to5":"^0.11.1-25",bluebird:"^2.3.11","bower-registry-client":"^0.2.1",chai:"^1.10.0","commonjs-everywhere":"^0.9.7",gulp:"^3.8.10","gulp-eslint":"^0.2.0","gulp-mocha":"^2.0.0",semver:"^5.1.0"},directories:{},dist:{shasum:"b246aae829ce73d59e2c55727359edd1c130a81b",tarball:"https://registry.npmjs.org/escodegen/-/escodegen-1.8.0.tgz"},engines:{node:">=0.12.0"},files:["LICENSE.BSD","LICENSE.source-map","README.md","bin","escodegen.js","package.json"],gitHead:"0e8280aa061a0dbefb32d277a05015baa7f3e7f2",homepage:"http://github.com/estools/escodegen",license:"BSD-2-Clause",main:"escodegen.js",maintainers:[{name:"constellation",email:"utatane.tea@gmail.com"},{name:"michaelficarra",email:"npm@michael.ficarra.me"}],name:"escodegen",optionalDependencies:{"source-map":"~0.2.0"},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+ssh://git@github.com/estools/escodegen.git"},scripts:{build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",lint:"gulp lint",release:"node tools/release.js",test:"gulp travis","unit-test":"gulp test"},version:"1.8.0"}},{}],21:[function(require,module,exports){!function(root,factory){"use strict";"function"==typeof define&&define.amd?define(["exports"],factory):factory("undefined"!=typeof exports?exports:root.estraverse={})}(this,function clone(exports){"use strict";function ignoreJSHintError(){}function deepCopy(obj){var key,val,ret={};for(key in obj)obj.hasOwnProperty(key)&&(val=obj[key],"object"==typeof val&&null!==val?ret[key]=deepCopy(val):ret[key]=val);return ret}function shallowCopy(obj){var key,ret={};for(key in obj)obj.hasOwnProperty(key)&&(ret[key]=obj[key]);return ret}function upperBound(array,func){var diff,len,i,current;for(len=array.length,i=0;len;)diff=len>>>1,current=i+diff,func(array[current])?len=diff:(i=current+1,len-=diff+1);return i}function lowerBound(array,func){var diff,len,i,current;for(len=array.length,i=0;len;)diff=len>>>1,current=i+diff,func(array[current])?(i=current+1,len-=diff+1):len=diff;return i}function extend(to,from){var key,i,len,keys=objectKeys(from);for(i=0,len=keys.length;len>i;i+=1)key=keys[i],to[key]=from[key];return to}function Reference(parent,key){this.parent=parent,this.key=key}function Element(node,path,wrap,ref){this.node=node,this.path=path,this.wrap=wrap,this.ref=ref}function Controller(){}function isNode(node){return null==node?!1:"object"==typeof node&&"string"==typeof node.type}function isProperty(nodeType,key){return(nodeType===Syntax.ObjectExpression||nodeType===Syntax.ObjectPattern)&&"properties"===key}function traverse(root,visitor){var controller=new Controller;return controller.traverse(root,visitor)}function replace(root,visitor){var controller=new Controller;return controller.replace(root,visitor)}function extendCommentRange(comment,tokens){var target;return target=upperBound(tokens,function(token){return token.range[0]>comment.range[0]}),comment.extendedRange=[comment.range[0],comment.range[1]],target!==tokens.length&&(comment.extendedRange[1]=tokens[target].range[0]),target-=1,target>=0&&(comment.extendedRange[0]=tokens[target].range[1]),comment}function attachComments(tree,providedComments,tokens){var comment,len,i,cursor,comments=[];if(!tree.range)throw new Error("attachComments needs range information");if(!tokens.length){if(providedComments.length){for(i=0,len=providedComments.length;len>i;i+=1)comment=deepCopy(providedComments[i]),
comment.extendedRange=[0,tree.range[0]],comments.push(comment);tree.leadingComments=comments}return tree}for(i=0,len=providedComments.length;len>i;i+=1)comments.push(extendCommentRange(deepCopy(providedComments[i]),tokens));return cursor=0,traverse(tree,{enter:function(node){for(var comment;cursor<comments.length&&(comment=comments[cursor],!(comment.extendedRange[1]>node.range[0]));)comment.extendedRange[1]===node.range[0]?(node.leadingComments||(node.leadingComments=[]),node.leadingComments.push(comment),comments.splice(cursor,1)):cursor+=1;return cursor===comments.length?VisitorOption.Break:comments[cursor].extendedRange[0]>node.range[1]?VisitorOption.Skip:void 0}}),cursor=0,traverse(tree,{leave:function(node){for(var comment;cursor<comments.length&&(comment=comments[cursor],!(node.range[1]<comment.extendedRange[0]));)node.range[1]===comment.extendedRange[0]?(node.trailingComments||(node.trailingComments=[]),node.trailingComments.push(comment),comments.splice(cursor,1)):cursor+=1;return cursor===comments.length?VisitorOption.Break:comments[cursor].extendedRange[0]>node.range[1]?VisitorOption.Skip:void 0}}),tree}var Syntax,isArray,VisitorOption,VisitorKeys,objectCreate,objectKeys,BREAK,SKIP,REMOVE;return isArray=Array.isArray,isArray||(isArray=function(array){return"[object Array]"===Object.prototype.toString.call(array)}),ignoreJSHintError(shallowCopy),ignoreJSHintError(lowerBound),objectCreate=Object.create||function(){function F(){}return function(o){return F.prototype=o,new F}}(),objectKeys=Object.keys||function(o){var key,keys=[];for(key in o)keys.push(key);return keys},Syntax={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportBatchSpecifier:"ExportBatchSpecifier",ExportDeclaration:"ExportDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},VisitorKeys={AssignmentExpression:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","defaults","rest","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","body","superClass"],ClassExpression:["id","body","superClass"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportBatchSpecifier:[],ExportDeclaration:["declaration","specifiers","source"],ExportSpecifier:["id","name"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","defaults","rest","body"],FunctionExpression:["id","params","defaults","rest","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["id"],ImportNamespaceSpecifier:["id"],ImportSpecifier:["id","name"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handlers","handler","guardedHandlers","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},BREAK={},SKIP={},REMOVE={},VisitorOption={Break:BREAK,Skip:SKIP,Remove:REMOVE},Reference.prototype.replace=function(node){this.parent[this.key]=node},Reference.prototype.remove=function(){return isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},Controller.prototype.path=function(){function addToPath(result,path){if(isArray(path))for(j=0,jz=path.length;jz>j;++j)result.push(path[j]);else result.push(path)}var i,iz,j,jz,result,element;if(!this.__current.path)return null;for(result=[],i=2,iz=this.__leavelist.length;iz>i;++i)element=this.__leavelist[i],addToPath(result,element.path);return addToPath(result,this.__current.path),result},Controller.prototype.type=function(){var node=this.current();return node.type||this.__current.wrap},Controller.prototype.parents=function(){var i,iz,result;for(result=[],i=1,iz=this.__leavelist.length;iz>i;++i)result.push(this.__leavelist[i].node);return result},Controller.prototype.current=function(){return this.__current.node},Controller.prototype.__execute=function(callback,element){var previous,result;return result=void 0,previous=this.__current,this.__current=element,this.__state=null,callback&&(result=callback.call(this,element.node,this.__leavelist[this.__leavelist.length-1].node)),this.__current=previous,result},Controller.prototype.notify=function(flag){this.__state=flag},Controller.prototype.skip=function(){this.notify(SKIP)},Controller.prototype["break"]=function(){this.notify(BREAK)},Controller.prototype.remove=function(){this.notify(REMOVE)},Controller.prototype.__initialize=function(root,visitor){this.visitor=visitor,this.root=root,this.__worklist=[],this.__leavelist=[],this.__current=null,this.__state=null,this.__fallback="iteration"===visitor.fallback,this.__keys=VisitorKeys,visitor.keys&&(this.__keys=extend(objectCreate(this.__keys),visitor.keys))},Controller.prototype.traverse=function(root,visitor){var worklist,leavelist,element,node,nodeType,ret,key,current,current2,candidates,candidate,sentinel;for(this.__initialize(root,visitor),sentinel={},worklist=this.__worklist,leavelist=this.__leavelist,worklist.push(new Element(root,null,null,null)),leavelist.push(new Element(null,null,null,null));worklist.length;)if(element=worklist.pop(),element!==sentinel){if(element.node){if(ret=this.__execute(visitor.enter,element),this.__state===BREAK||ret===BREAK)return;if(worklist.push(sentinel),leavelist.push(element),this.__state===SKIP||ret===SKIP)continue;if(node=element.node,nodeType=element.wrap||node.type,candidates=this.__keys[nodeType],!candidates){if(!this.__fallback)throw new Error("Unknown node type "+nodeType+".");candidates=objectKeys(node)}for(current=candidates.length;(current-=1)>=0;)if(key=candidates[current],candidate=node[key])if(isArray(candidate)){for(current2=candidate.length;(current2-=1)>=0;)if(candidate[current2]){if(isProperty(nodeType,candidates[current]))element=new Element(candidate[current2],[key,current2],"Property",null);else{if(!isNode(candidate[current2]))continue;element=new Element(candidate[current2],[key,current2],null,null)}worklist.push(element)}}else isNode(candidate)&&worklist.push(new Element(candidate,key,null,null))}}else if(element=leavelist.pop(),ret=this.__execute(visitor.leave,element),this.__state===BREAK||ret===BREAK)return},Controller.prototype.replace=function(root,visitor){function removeElem(element){var i,key,nextElem,parent;if(element.ref.remove())for(key=element.ref.key,parent=element.ref.parent,i=worklist.length;i--;)if(nextElem=worklist[i],nextElem.ref&&nextElem.ref.parent===parent){if(nextElem.ref.key<key)break;--nextElem.ref.key}}var worklist,leavelist,node,nodeType,target,element,current,current2,candidates,candidate,sentinel,outer,key;for(this.__initialize(root,visitor),sentinel={},worklist=this.__worklist,leavelist=this.__leavelist,outer={root:root},element=new Element(root,null,null,new Reference(outer,"root")),worklist.push(element),leavelist.push(element);worklist.length;)if(element=worklist.pop(),element!==sentinel){if(target=this.__execute(visitor.enter,element),void 0!==target&&target!==BREAK&&target!==SKIP&&target!==REMOVE&&(element.ref.replace(target),element.node=target),this.__state!==REMOVE&&target!==REMOVE||(removeElem(element),element.node=null),this.__state===BREAK||target===BREAK)return outer.root;if(node=element.node,node&&(worklist.push(sentinel),leavelist.push(element),this.__state!==SKIP&&target!==SKIP)){if(nodeType=element.wrap||node.type,candidates=this.__keys[nodeType],!candidates){if(!this.__fallback)throw new Error("Unknown node type "+nodeType+".");candidates=objectKeys(node)}for(current=candidates.length;(current-=1)>=0;)if(key=candidates[current],candidate=node[key])if(isArray(candidate)){for(current2=candidate.length;(current2-=1)>=0;)if(candidate[current2]){if(isProperty(nodeType,candidates[current]))element=new Element(candidate[current2],[key,current2],"Property",new Reference(candidate,current2));else{if(!isNode(candidate[current2]))continue;element=new Element(candidate[current2],[key,current2],null,new Reference(candidate,current2))}worklist.push(element)}}else isNode(candidate)&&worklist.push(new Element(candidate,key,null,new Reference(node,key)))}}else if(element=leavelist.pop(),target=this.__execute(visitor.leave,element),void 0!==target&&target!==BREAK&&target!==SKIP&&target!==REMOVE&&element.ref.replace(target),this.__state!==REMOVE&&target!==REMOVE||removeElem(element),this.__state===BREAK||target===BREAK)return outer.root;return outer.root},exports.version="1.8.1-dev",exports.Syntax=Syntax,exports.traverse=traverse,exports.replace=replace,exports.attachComments=attachComments,exports.VisitorKeys=VisitorKeys,exports.VisitorOption=VisitorOption,exports.Controller=Controller,exports.cloneEnvironment=function(){return clone({})},exports})},{}],22:[function(require,module,exports){!function(){"use strict";function isExpression(node){if(null==node)return!1;switch(node.type){case"ArrayExpression":case"AssignmentExpression":case"BinaryExpression":case"CallExpression":case"ConditionalExpression":case"FunctionExpression":case"Identifier":case"Literal":case"LogicalExpression":case"MemberExpression":case"NewExpression":case"ObjectExpression":case"SequenceExpression":case"ThisExpression":case"UnaryExpression":case"UpdateExpression":return!0}return!1}function isIterationStatement(node){if(null==node)return!1;switch(node.type){case"DoWhileStatement":case"ForInStatement":case"ForStatement":case"WhileStatement":return!0}return!1}function isStatement(node){if(null==node)return!1;switch(node.type){case"BlockStatement":case"BreakStatement":case"ContinueStatement":case"DebuggerStatement":case"DoWhileStatement":case"EmptyStatement":case"ExpressionStatement":case"ForInStatement":case"ForStatement":case"IfStatement":case"LabeledStatement":case"ReturnStatement":case"SwitchStatement":case"ThrowStatement":case"TryStatement":case"VariableDeclaration":case"WhileStatement":case"WithStatement":return!0}return!1}function isSourceElement(node){return isStatement(node)||null!=node&&"FunctionDeclaration"===node.type}function trailingStatement(node){switch(node.type){case"IfStatement":return null!=node.alternate?node.alternate:node.consequent;case"LabeledStatement":case"ForStatement":case"ForInStatement":case"WhileStatement":case"WithStatement":return node.body}return null}function isProblematicIfStatement(node){var current;if("IfStatement"!==node.type)return!1;if(null==node.alternate)return!1;current=node.consequent;do{if("IfStatement"===current.type&&null==current.alternate)return!0;current=trailingStatement(current)}while(current);return!1}module.exports={isExpression:isExpression,isStatement:isStatement,isIterationStatement:isIterationStatement,isSourceElement:isSourceElement,isProblematicIfStatement:isProblematicIfStatement,trailingStatement:trailingStatement}}()},{}],23:[function(require,module,exports){!function(){"use strict";function isDecimalDigit(ch){return ch>=48&&57>=ch}function isHexDigit(ch){return ch>=48&&57>=ch||ch>=97&&102>=ch||ch>=65&&70>=ch}function isOctalDigit(ch){return ch>=48&&55>=ch}function isWhiteSpace(ch){return 32===ch||9===ch||11===ch||12===ch||160===ch||ch>=5760&&NON_ASCII_WHITESPACES.indexOf(ch)>=0}function isLineTerminator(ch){return 10===ch||13===ch||8232===ch||8233===ch}function fromCodePoint(cp){if(65535>=cp)return String.fromCharCode(cp);var cu1=String.fromCharCode(Math.floor((cp-65536)/1024)+55296),cu2=String.fromCharCode((cp-65536)%1024+56320);return cu1+cu2}function isIdentifierStartES5(ch){return 128>ch?IDENTIFIER_START[ch]:ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch))}function isIdentifierPartES5(ch){return 128>ch?IDENTIFIER_PART[ch]:ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch))}function isIdentifierStartES6(ch){return 128>ch?IDENTIFIER_START[ch]:ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch))}function isIdentifierPartES6(ch){return 128>ch?IDENTIFIER_PART[ch]:ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch))}var ES6Regex,ES5Regex,NON_ASCII_WHITESPACES,IDENTIFIER_START,IDENTIFIER_PART,ch;for(ES5Regex={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},ES6Regex={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
},NON_ASCII_WHITESPACES=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],IDENTIFIER_START=new Array(128),ch=0;128>ch;++ch)IDENTIFIER_START[ch]=ch>=97&&122>=ch||ch>=65&&90>=ch||36===ch||95===ch;for(IDENTIFIER_PART=new Array(128),ch=0;128>ch;++ch)IDENTIFIER_PART[ch]=ch>=97&&122>=ch||ch>=65&&90>=ch||ch>=48&&57>=ch||36===ch||95===ch;module.exports={isDecimalDigit:isDecimalDigit,isHexDigit:isHexDigit,isOctalDigit:isOctalDigit,isWhiteSpace:isWhiteSpace,isLineTerminator:isLineTerminator,isIdentifierStartES5:isIdentifierStartES5,isIdentifierPartES5:isIdentifierPartES5,isIdentifierStartES6:isIdentifierStartES6,isIdentifierPartES6:isIdentifierPartES6}}()},{}],24:[function(require,module,exports){!function(){"use strict";function isStrictModeReservedWordES6(id){switch(id){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function isKeywordES5(id,strict){return strict||"yield"!==id?isKeywordES6(id,strict):!1}function isKeywordES6(id,strict){if(strict&&isStrictModeReservedWordES6(id))return!0;switch(id.length){case 2:return"if"===id||"in"===id||"do"===id;case 3:return"var"===id||"for"===id||"new"===id||"try"===id;case 4:return"this"===id||"else"===id||"case"===id||"void"===id||"with"===id||"enum"===id;case 5:return"while"===id||"break"===id||"catch"===id||"throw"===id||"const"===id||"yield"===id||"class"===id||"super"===id;case 6:return"return"===id||"typeof"===id||"delete"===id||"switch"===id||"export"===id||"import"===id;case 7:return"default"===id||"finally"===id||"extends"===id;case 8:return"function"===id||"continue"===id||"debugger"===id;case 10:return"instanceof"===id;default:return!1}}function isReservedWordES5(id,strict){return"null"===id||"true"===id||"false"===id||isKeywordES5(id,strict)}function isReservedWordES6(id,strict){return"null"===id||"true"===id||"false"===id||isKeywordES6(id,strict)}function isRestrictedWord(id){return"eval"===id||"arguments"===id}function isIdentifierNameES5(id){var i,iz,ch;if(0===id.length)return!1;if(ch=id.charCodeAt(0),!code.isIdentifierStartES5(ch))return!1;for(i=1,iz=id.length;iz>i;++i)if(ch=id.charCodeAt(i),!code.isIdentifierPartES5(ch))return!1;return!0}function decodeUtf16(lead,trail){return 1024*(lead-55296)+(trail-56320)+65536}function isIdentifierNameES6(id){var i,iz,ch,lowCh,check;if(0===id.length)return!1;for(check=code.isIdentifierStartES6,i=0,iz=id.length;iz>i;++i){if(ch=id.charCodeAt(i),ch>=55296&&56319>=ch){if(++i,i>=iz)return!1;if(lowCh=id.charCodeAt(i),!(lowCh>=56320&&57343>=lowCh))return!1;ch=decodeUtf16(ch,lowCh)}if(!check(ch))return!1;check=code.isIdentifierPartES6}return!0}function isIdentifierES5(id,strict){return isIdentifierNameES5(id)&&!isReservedWordES5(id,strict)}function isIdentifierES6(id,strict){return isIdentifierNameES6(id)&&!isReservedWordES6(id,strict)}var code=require("./code");module.exports={isKeywordES5:isKeywordES5,isKeywordES6:isKeywordES6,isReservedWordES5:isReservedWordES5,isReservedWordES6:isReservedWordES6,isRestrictedWord:isRestrictedWord,isIdentifierNameES5:isIdentifierNameES5,isIdentifierNameES6:isIdentifierNameES6,isIdentifierES5:isIdentifierES5,isIdentifierES6:isIdentifierES6}}()},{"./code":23}],25:[function(require,module,exports){!function(){"use strict";exports.ast=require("./ast"),exports.code=require("./code"),exports.keyword=require("./keyword")}()},{"./ast":22,"./code":23,"./keyword":24}],26:[function(require,module,exports){(function(global){!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,g.JavaParser=f()}}(function(){var module,exports;return module={exports:exports={}},module.exports=function(){"use strict";function peg$subclass(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype,child.prototype=new ctor}function peg$SyntaxError(message,expected,found,location){this.message=message,this.expected=expected,this.found=found,this.location=location,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}function peg$parse(input){function text(){return input.substring(peg$savedPos,peg$currPos)}function peg$computePosDetails(pos){var p,ch,details=peg$posDetailsCache[pos];if(details)return details;for(p=pos-1;!peg$posDetailsCache[p];)p--;for(details=peg$posDetailsCache[p],details={line:details.line,column:details.column,seenCR:details.seenCR};pos>p;)ch=input.charAt(p),"\n"===ch?(details.seenCR||details.line++,details.column=1,details.seenCR=!1):"\r"===ch||"\u2028"===ch||"\u2029"===ch?(details.line++,details.column=1,details.seenCR=!0):(details.column++,details.seenCR=!1),p++;return peg$posDetailsCache[pos]=details,details}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return{start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}}}function peg$fail(expected){peg$maxFailPos>peg$currPos||(peg$currPos>peg$maxFailPos&&(peg$maxFailPos=peg$currPos,peg$maxFailExpected=[]),peg$maxFailExpected.push(expected))}function peg$buildException(message,expected,found,location){function cleanupExpected(expected){var i=1;for(expected.sort(function(a,b){return a.description<b.description?-1:a.description>b.description?1:0});i<expected.length;)expected[i-1]===expected[i]?expected.splice(i,1):i++}function buildMessage(expected,found){function stringEscape(s){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return"\\x"+hex(ch)}).replace(/[\u0100-\u0FFF]/g,function(ch){return"\\u0"+hex(ch)}).replace(/[\u1000-\uFFFF]/g,function(ch){return"\\u"+hex(ch)})}var expectedDesc,foundDesc,i,expectedDescs=new Array(expected.length);for(i=0;i<expected.length;i++)expectedDescs[i]=expected[i].description;return expectedDesc=expected.length>1?expectedDescs.slice(0,-1).join(", ")+" or "+expectedDescs[expected.length-1]:expectedDescs[0],foundDesc=found?'"'+stringEscape(found)+'"':"end of input","Expected "+expectedDesc+" but "+foundDesc+" found."}return null!==expected&&cleanupExpected(expected),new peg$SyntaxError(null!==message?message:buildMessage(expected,found),expected,found,location)}function peg$parseCompilationUnit(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseSpacing(),s1!==peg$FAILED)if(s2=peg$parsePackageDeclaration(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED){for(s3=[],s4=peg$parseImportDeclaration();s4!==peg$FAILED;)s3.push(s4),s4=peg$parseImportDeclaration();if(s3!==peg$FAILED){for(s4=[],s5=peg$parseTypeDeclaration();s5!==peg$FAILED;)s4.push(s5),s5=peg$parseTypeDeclaration();s4!==peg$FAILED?(s5=peg$parseEOT(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c0(s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parsePackageDeclaration(){var s0,s1,s2,s3,s4;for(s0=peg$currPos,s1=[],s2=peg$parseAnnotation();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseAnnotation();return s1!==peg$FAILED?(s2=peg$parsePACKAGE(),s2!==peg$FAILED?(s3=peg$parseQualifiedIdentifier(),s3!==peg$FAILED?(s4=peg$parseSEMI(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c1(s1,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseImportDeclaration(){var s0,s1,s2,s3,s4,s5,s6;return s0=peg$currPos,s1=peg$parseIMPORT(),s1!==peg$FAILED?(s2=peg$parseSTATIC(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseQualifiedIdentifier(),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$parseDOT(),s5!==peg$FAILED?(s6=peg$parseSTAR(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(s5=peg$parseSEMI(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c2(s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSEMI(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c3()),s0=s1),s0}function peg$parseTypeDeclaration(){var s0,s1,s2;for(s0=peg$currPos,s1=[],s2=peg$parseModifier();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseModifier();return s1!==peg$FAILED?(s2=peg$parseClassDeclaration(),s2===peg$FAILED&&(s2=peg$parseEnumDeclaration(),s2===peg$FAILED&&(s2=peg$parseInterfaceDeclaration(),s2===peg$FAILED&&(s2=peg$parseAnnotationTypeDeclaration()))),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c4(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSEMI(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c3()),s0=s1),s0}function peg$parseClassDeclaration(){var s0,s1,s2,s3,s4,s5,s6,s7;return s0=peg$currPos,s1=peg$parseCLASS(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseTypeParameters(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$parseEXTENDS(),s5!==peg$FAILED?(s6=peg$parseClassType(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(s5=peg$currPos,s6=peg$parseIMPLEMENTS(),s6!==peg$FAILED?(s7=peg$parseClassTypeList(),s7!==peg$FAILED?(s6=[s6,s7],s5=s6):(peg$currPos=s5,s5=peg$FAILED)):(peg$currPos=s5,s5=peg$FAILED),s5===peg$FAILED&&(s5=null),s5!==peg$FAILED?(s6=peg$parseClassBody(),s6!==peg$FAILED?(peg$savedPos=s0,s1=peg$c5(s2,s3,s4,s5,s6),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseClassBody(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=peg$parseLWING(),s1!==peg$FAILED){for(s2=[],s3=peg$parseClassBodyDeclaration();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseClassBodyDeclaration();s2!==peg$FAILED?(s3=peg$parseRWING(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c6(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseClassBodyDeclaration(){var s0,s1,s2;if(s0=peg$currPos,s1=peg$parseSEMI(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c3()),s0=s1,s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSTATIC(),s1===peg$FAILED&&(s1=null),s1!==peg$FAILED?(s2=peg$parseBlock(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c7(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED)){for(s0=peg$currPos,s1=[],s2=peg$parseModifier();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseModifier();s1!==peg$FAILED?(s2=peg$parseMemberDecl(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c8(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}return s0}function peg$parseMemberDecl(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseTypeParameters(),s1!==peg$FAILED?(s2=peg$parseGenericMethodOrConstructorRest(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c9(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseType(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseMethodDeclaratorRest(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c10(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseType(),s1!==peg$FAILED?(s2=peg$parseVariableDeclarators(),s2!==peg$FAILED?(s3=peg$parseSEMI(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c11(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseVOID(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseVoidMethodDeclaratorRest(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c12(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseConstructorDeclaratorRest(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c13(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseInterfaceDeclaration(),s0===peg$FAILED&&(s0=peg$parseClassDeclaration(),s0===peg$FAILED&&(s0=peg$parseEnumDeclaration(),s0===peg$FAILED&&(s0=peg$parseAnnotationTypeDeclaration())))))))),s0}function peg$parseGenericMethodOrConstructorRest(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseType(),s1===peg$FAILED&&(s1=peg$currPos,s2=peg$parseVOID(),s2!==peg$FAILED&&(peg$savedPos=s1,s2=peg$c14()),s1=s2),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseMethodDeclaratorRest(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c15(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseConstructorDeclaratorRest(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c16(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseMethodDeclaratorRest(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseFormalParameters(),s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(s3=peg$currPos,s4=peg$parseTHROWS(),s4!==peg$FAILED?(s5=peg$parseClassTypeList(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseBlock(),s4===peg$FAILED&&(s4=peg$currPos,s5=peg$parseSEMI(),s5!==peg$FAILED&&(peg$savedPos=s4,s5=peg$c17(s1,s2,s3)),s4=s5),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c18(s1,s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseVoidMethodDeclaratorRest(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseFormalParameters(),s1!==peg$FAILED?(s2=peg$currPos,s3=peg$parseTHROWS(),s3!==peg$FAILED?(s4=peg$parseClassTypeList(),s4!==peg$FAILED?(s3=[s3,s4],s2=s3):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseBlock(),s3===peg$FAILED&&(s3=peg$currPos,s4=peg$parseSEMI(),s4!==peg$FAILED&&(peg$savedPos=s3,s4=peg$c19(s1,s2)),s3=s4),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c20(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseConstructorDeclaratorRest(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseFormalParameters(),s1!==peg$FAILED?(s2=peg$currPos,s3=peg$parseTHROWS(),s3!==peg$FAILED?(s4=peg$parseClassTypeList(),s4!==peg$FAILED?(s3=[s3,s4],s2=s3):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseBlock(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c21(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseInterfaceDeclaration(){var s0,s1,s2,s3,s4,s5,s6;return s0=peg$currPos,s1=peg$parseINTERFACE(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseTypeParameters(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$parseEXTENDS(),s5!==peg$FAILED?(s6=peg$parseClassTypeList(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(s5=peg$parseInterfaceBody(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c22(s2,s3,s4,s5),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseInterfaceBody(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=peg$parseLWING(),s1!==peg$FAILED){for(s2=[],s3=peg$parseInterfaceBodyDeclaration();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseInterfaceBodyDeclaration();s2!==peg$FAILED?(s3=peg$parseRWING(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c6(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseInterfaceBodyDeclaration(){var s0,s1,s2;for(s0=peg$currPos,s1=[],s2=peg$parseModifier();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseModifier();return s1!==peg$FAILED?(s2=peg$parseInterfaceMemberDecl(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c8(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSEMI(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c3()),s0=s1),s0}function peg$parseInterfaceMemberDecl(){var s0,s1,s2,s3;return s0=peg$parseInterfaceMethodOrFieldDecl(),s0===peg$FAILED&&(s0=peg$parseInterfaceGenericMethodDecl(),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseVOID(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseVoidInterfaceMethodDeclaratorRest(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c16(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseInterfaceDeclaration(),s0===peg$FAILED&&(s0=peg$parseAnnotationTypeDeclaration(),s0===peg$FAILED&&(s0=peg$parseClassDeclaration(),s0===peg$FAILED&&(s0=peg$parseEnumDeclaration())))))),s0}function peg$parseInterfaceMethodOrFieldDecl(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseType(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseInterfaceMethodOrFieldRest(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c23(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseInterfaceMethodOrFieldRest(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseConstantDeclaratorsRest(),s1!==peg$FAILED?(s2=peg$parseSEMI(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c24(s1),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseInterfaceMethodDeclaratorRest()),s0}function peg$parseInterfaceMethodDeclaratorRest(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseFormalParameters(),s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(s3=peg$currPos,s4=peg$parseTHROWS(),s4!==peg$FAILED?(s5=peg$parseClassTypeList(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseSEMI(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c25(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseInterfaceGenericMethodDecl(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseTypeParameters(),s1!==peg$FAILED?(s2=peg$parseType(),s2===peg$FAILED&&(s2=peg$currPos,s3=peg$parseVOID(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c26(s1)),s2=s3),s2!==peg$FAILED?(s3=peg$parseIdentifier(),s3!==peg$FAILED?(s4=peg$parseInterfaceMethodDeclaratorRest(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c27(s1,s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseVoidInterfaceMethodDeclaratorRest(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseFormalParameters(),s1!==peg$FAILED?(s2=peg$currPos,s3=peg$parseTHROWS(),s3!==peg$FAILED?(s4=peg$parseClassTypeList(),s4!==peg$FAILED?(s3=[s3,s4],s2=s3):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseSEMI(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c28(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseConstantDeclaratorsRest(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseConstantDeclaratorRest(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseConstantDeclarator(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseConstantDeclarator(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseConstantDeclarator(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseConstantDeclaratorRest(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c16(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseConstantDeclaratorRest(){var s0,s1,s2,s3;for(s0=peg$currPos,s1=[],s2=peg$parseDim();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseDim();return s1!==peg$FAILED?(s2=peg$parseEQU(),s2!==peg$FAILED?(s3=peg$parseVariableInitializer(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c30(s1,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEnumDeclaration(){var s0,s1,s2,s3,s4,s5;return s0=peg$currPos,s1=peg$parseENUM(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$currPos,s4=peg$parseIMPLEMENTS(),s4!==peg$FAILED?(s5=peg$parseClassTypeList(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseEnumBody(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c31(s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEnumBody(){var s0,s1,s2,s3,s4,s5;return s0=peg$currPos,s1=peg$parseLWING(),s1!==peg$FAILED?(s2=peg$parseEnumConstants(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseCOMMA(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseEnumBodyDeclarations(),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(s5=peg$parseRWING(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c32(s2,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEnumConstants(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseEnumConstant(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseEnumConstant(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseEnumConstant(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseEnumConstant(){var s0,s1,s2,s3,s4;for(s0=peg$currPos,s1=[],s2=peg$parseAnnotation();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseAnnotation();return s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseArguments(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseClassBody(),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c33(s1,s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEnumBodyDeclarations(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=peg$parseSEMI(),s1!==peg$FAILED){for(s2=[],s3=peg$parseClassBodyDeclaration();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseClassBodyDeclaration();s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c34(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseLocalVariableDeclarationStatement(){var s0,s1,s2,s3,s4;for(s0=peg$currPos,s1=[],s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());s2!==peg$FAILED;)s1.push(s2),s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());return s1!==peg$FAILED?(s2=peg$parseType(),s2!==peg$FAILED?(s3=peg$parseVariableDeclarators(),s3!==peg$FAILED?(s4=peg$parseSEMI(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c36(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseVariableDeclarators(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseVariableDeclarator(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseVariableDeclarator(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseVariableDeclarator(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseVariableDeclarator(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(s3=peg$currPos,s4=peg$parseEQU(),s4!==peg$FAILED?(s5=peg$parseVariableInitializer(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c37(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseFormalParameters(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseLPAR(),s1!==peg$FAILED?(s2=peg$parseFormalParameterList(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseRPAR(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c38(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseFormalParameter(){var s0,s1,s2,s3;for(s0=peg$currPos,s1=[],s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());s2!==peg$FAILED;)s1.push(s2),s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());return s1!==peg$FAILED?(s2=peg$parseType(),s2!==peg$FAILED?(s3=peg$parseVariableDeclaratorId(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c39(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLastFormalParameter(){var s0,s1,s2,s3,s4;for(s0=peg$currPos,s1=[],s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());s2!==peg$FAILED;)s1.push(s2),s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());return s1!==peg$FAILED?(s2=peg$parseType(),s2!==peg$FAILED?(s3=peg$parseELLIPSIS(),s3!==peg$FAILED?(s4=peg$parseVariableDeclaratorId(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c40(s1,s2,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseFormalParameterList(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseFormalParameter(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseFormalParameter(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseFormalParameter(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseLastFormalParameter(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c41(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseLastFormalParameter(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c42(s1)),s0=s1),s0}function peg$parseVariableDeclaratorId(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c43(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseBlock(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseLWING(),s1!==peg$FAILED?(s2=peg$parseBlockStatements(),s2!==peg$FAILED?(s3=peg$parseRWING(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c44(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseBlockStatements(){var s0,s1;for(s0=[],s1=peg$parseBlockStatement();s1!==peg$FAILED;)s0.push(s1),s1=peg$parseBlockStatement();return s0}function peg$parseBlockStatement(){var s0,s1,s2;if(s0=peg$parseLocalVariableDeclarationStatement(),s0===peg$FAILED){for(s0=peg$currPos,s1=[],s2=peg$parseModifier();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseModifier();s1!==peg$FAILED?(s2=peg$parseClassDeclaration(),s2===peg$FAILED&&(s2=peg$parseEnumDeclaration()),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c45(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseStatement())}return s0}function peg$parseStatement(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;if(s0=peg$parseBlock(),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseASSERT(),s1!==peg$FAILED?(s2=peg$parseExpression(),s2!==peg$FAILED?(s3=peg$currPos,s4=peg$parseCOLON(),s4!==peg$FAILED?(s5=peg$parseExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseSEMI(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c46(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseIF(),s1!==peg$FAILED?(s2=peg$parseParExpression(),s2!==peg$FAILED?(s3=peg$parseStatement(),s3!==peg$FAILED?(s4=peg$currPos,s5=peg$parseELSE(),s5!==peg$FAILED?(s6=peg$parseStatement(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c47(s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseFOR(),s1!==peg$FAILED?(s2=peg$parseLPAR(),s2!==peg$FAILED?(s3=peg$parseForInit(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseSEMI(),s4!==peg$FAILED?(s5=peg$parseExpression(),s5===peg$FAILED&&(s5=null),s5!==peg$FAILED?(s6=peg$parseSEMI(),s6!==peg$FAILED?(s7=peg$parseForUpdate(),s7===peg$FAILED&&(s7=null),s7!==peg$FAILED?(s8=peg$parseRPAR(),
s8!==peg$FAILED?(s9=peg$parseStatement(),s9!==peg$FAILED?(peg$savedPos=s0,s1=peg$c48(s3,s5,s7,s9),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseFOR(),s1!==peg$FAILED?(s2=peg$parseLPAR(),s2!==peg$FAILED?(s3=peg$parseFormalParameter(),s3!==peg$FAILED?(s4=peg$parseCOLON(),s4!==peg$FAILED?(s5=peg$parseExpression(),s5!==peg$FAILED?(s6=peg$parseRPAR(),s6!==peg$FAILED?(s7=peg$parseStatement(),s7!==peg$FAILED?(peg$savedPos=s0,s1=peg$c49(s3,s5,s7),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseWHILE(),s1!==peg$FAILED?(s2=peg$parseParExpression(),s2!==peg$FAILED?(s3=peg$parseStatement(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c50(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDO(),s1!==peg$FAILED?(s2=peg$parseStatement(),s2!==peg$FAILED?(s3=peg$parseWHILE(),s3!==peg$FAILED?(s4=peg$parseParExpression(),s4!==peg$FAILED?(s5=peg$parseSEMI(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c51(s2,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED))))))){if(s0=peg$currPos,s1=peg$parseTRY(),s1!==peg$FAILED)if(s2=peg$parseLPAR(),s2!==peg$FAILED)if(s3=peg$parseResource(),s3!==peg$FAILED){for(s4=[],s5=peg$currPos,s6=peg$parseSEMI(),s6!==peg$FAILED?(s7=peg$parseResource(),s7!==peg$FAILED?(s6=[s6,s7],s5=s6):(peg$currPos=s5,s5=peg$FAILED)):(peg$currPos=s5,s5=peg$FAILED);s5!==peg$FAILED;)s4.push(s5),s5=peg$currPos,s6=peg$parseSEMI(),s6!==peg$FAILED?(s7=peg$parseResource(),s7!==peg$FAILED?(s6=[s6,s7],s5=s6):(peg$currPos=s5,s5=peg$FAILED)):(peg$currPos=s5,s5=peg$FAILED);if(s4!==peg$FAILED)if(s5=peg$parseSEMI(),s5===peg$FAILED&&(s5=null),s5!==peg$FAILED)if(s6=peg$parseRPAR(),s6!==peg$FAILED)if(s7=peg$parseBlock(),s7!==peg$FAILED){for(s8=[],s9=peg$parseCatch();s9!==peg$FAILED;)s8.push(s9),s9=peg$parseCatch();s8!==peg$FAILED?(s9=peg$parseFinally(),s9===peg$FAILED&&(s9=null),s9!==peg$FAILED?(peg$savedPos=s0,s1=peg$c52(s3,s4,s7,s8,s9),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;if(s0===peg$FAILED){if(s0=peg$currPos,s1=peg$parseTRY(),s1!==peg$FAILED)if(s2=peg$parseBlock(),s2!==peg$FAILED){if(s3=peg$currPos,s4=[],s5=peg$parseCatch(),s5!==peg$FAILED)for(;s5!==peg$FAILED;)s4.push(s5),s5=peg$parseCatch();else s4=peg$FAILED;s4!==peg$FAILED?(s5=peg$parseFinally(),s5===peg$FAILED&&(s5=null),s5!==peg$FAILED?(peg$savedPos=s3,s4=peg$c53(s2,s4,s5),s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=peg$currPos,s4=peg$parseFinally(),s4!==peg$FAILED&&(peg$savedPos=s3,s4=peg$c54(s2,s4)),s3=s4),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c55(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSWITCH(),s1!==peg$FAILED?(s2=peg$parseParExpression(),s2!==peg$FAILED?(s3=peg$parseLWING(),s3!==peg$FAILED?(s4=peg$parseSwitchBlockStatementGroups(),s4!==peg$FAILED?(s5=peg$parseRWING(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c56(s2,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSYNCHRONIZED(),s1!==peg$FAILED?(s2=peg$parseParExpression(),s2!==peg$FAILED?(s3=peg$parseBlock(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c57(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseRETURN(),s1!==peg$FAILED?(s2=peg$parseExpression(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseSEMI(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c58(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseTHROW(),s1!==peg$FAILED?(s2=peg$parseExpression(),s2!==peg$FAILED?(s3=peg$parseSEMI(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c59(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseBREAK(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseSEMI(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c60(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseCONTINUE(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseSEMI(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c61(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSEMI(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c62()),s0=s1,s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseStatementExpression(),s1!==peg$FAILED?(s2=peg$parseSEMI(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c63(s1),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseCOLON(),s2!==peg$FAILED?(s3=peg$parseStatement(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c64(s1,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED))))))))))}}return s0}function peg$parseResource(){var s0,s1,s2,s3,s4,s5;for(s0=peg$currPos,s1=[],s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());s2!==peg$FAILED;)s1.push(s2),s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());return s1!==peg$FAILED?(s2=peg$parseType(),s2!==peg$FAILED?(s3=peg$parseVariableDeclaratorId(),s3!==peg$FAILED?(s4=peg$parseEQU(),s4!==peg$FAILED?(s5=peg$parseExpression(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c65(s1,s2,s3,s5),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseCatch(){var s0,s1,s2,s3,s4,s5,s6,s7,s8;if(s0=peg$currPos,s1=peg$parseCATCH(),s1!==peg$FAILED)if(s2=peg$parseLPAR(),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$parseFINAL(),s5!==peg$FAILED&&(peg$savedPos=s4,s5=peg$c35()),s4=s5,s4===peg$FAILED&&(s4=peg$parseAnnotation());s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$parseFINAL(),s5!==peg$FAILED&&(peg$savedPos=s4,s5=peg$c35()),s4=s5,s4===peg$FAILED&&(s4=peg$parseAnnotation());if(s3!==peg$FAILED)if(s4=peg$parseType(),s4!==peg$FAILED){for(s5=[],s6=peg$currPos,s7=peg$parseOR(),s7!==peg$FAILED?(s8=peg$parseType(),s8!==peg$FAILED?(s7=[s7,s8],s6=s7):(peg$currPos=s6,s6=peg$FAILED)):(peg$currPos=s6,s6=peg$FAILED);s6!==peg$FAILED;)s5.push(s6),s6=peg$currPos,s7=peg$parseOR(),s7!==peg$FAILED?(s8=peg$parseType(),s8!==peg$FAILED?(s7=[s7,s8],s6=s7):(peg$currPos=s6,s6=peg$FAILED)):(peg$currPos=s6,s6=peg$FAILED);s5!==peg$FAILED?(s6=peg$parseVariableDeclaratorId(),s6!==peg$FAILED?(s7=peg$parseRPAR(),s7!==peg$FAILED?(s8=peg$parseBlock(),s8!==peg$FAILED?(peg$savedPos=s0,s1=peg$c66(s3,s4,s5,s6,s8),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseFinally(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseFINALLY(),s1!==peg$FAILED?(s2=peg$parseBlock(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c67(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSwitchBlockStatementGroups(){var s0,s1,s2;for(s0=peg$currPos,s1=[],s2=peg$parseSwitchBlockStatementGroup();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseSwitchBlockStatementGroup();return s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c68(s1)),s0=s1}function peg$parseSwitchBlockStatementGroup(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseSwitchLabel(),s1!==peg$FAILED?(s2=peg$parseBlockStatements(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c69(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSwitchLabel(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseCASE(),s1!==peg$FAILED?(s2=peg$parseExpression(),s2!==peg$FAILED?(s3=peg$parseCOLON(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c70(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseCASE(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseCOLON(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c70(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDEFAULT(),s1!==peg$FAILED?(s2=peg$parseCOLON(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c3(),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED))),s0}function peg$parseForInit(){var s0,s1,s2,s3,s4,s5;for(s0=peg$currPos,s1=[],s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());s2!==peg$FAILED;)s1.push(s2),s2=peg$currPos,s3=peg$parseFINAL(),s3!==peg$FAILED&&(peg$savedPos=s2,s3=peg$c35()),s2=s3,s2===peg$FAILED&&(s2=peg$parseAnnotation());if(s1!==peg$FAILED?(s2=peg$parseType(),s2!==peg$FAILED?(s3=peg$parseVariableDeclarators(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c71(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED)if(s0=peg$currPos,s1=peg$parseStatementExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseStatementExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseStatementExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c72(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseForUpdate(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseStatementExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseStatementExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseStatementExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c72(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseStatementExpression(){var s0,s1;return s0=peg$currPos,s1=peg$parseExpression(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c73(s1)),s0=s1}function peg$parseExpression(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseConditionalExpression(),s1!==peg$FAILED?(s2=peg$parseAssignmentOperator(),s2!==peg$FAILED?(s3=peg$parseExpression(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c74(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseConditionalExpression()),s0}function peg$parseAssignmentOperator(){var s0;return s0=peg$parseEQU(),s0===peg$FAILED&&(s0=peg$parsePLUSEQU(),s0===peg$FAILED&&(s0=peg$parseMINUSEQU(),s0===peg$FAILED&&(s0=peg$parseSTAREQU(),s0===peg$FAILED&&(s0=peg$parseDIVEQU(),s0===peg$FAILED&&(s0=peg$parseANDEQU(),s0===peg$FAILED&&(s0=peg$parseOREQU(),s0===peg$FAILED&&(s0=peg$parseHATEQU(),s0===peg$FAILED&&(s0=peg$parseMODEQU(),s0===peg$FAILED&&(s0=peg$parseSLEQU(),s0===peg$FAILED&&(s0=peg$parseSREQU(),s0===peg$FAILED&&(s0=peg$parseBSREQU()))))))))))),s0}function peg$parseConditionalExpression(){var s0,s1,s2,s3,s4,s5;return s0=peg$currPos,s1=peg$parseConditionalOrExpression(),s1!==peg$FAILED?(s2=peg$parseQUERY(),s2!==peg$FAILED?(s3=peg$parseExpression(),s3!==peg$FAILED?(s4=peg$parseCOLON(),s4!==peg$FAILED?(s5=peg$parseConditionalExpression(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c75(s1,s3,s5),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseConditionalOrExpression()),s0}function peg$parseConditionalOrExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseConditionalAndExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseOROR(),s4!==peg$FAILED?(s5=peg$parseConditionalAndExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseOROR(),s4!==peg$FAILED?(s5=peg$parseConditionalAndExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseConditionalAndExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseInclusiveOrExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseANDAND(),s4!==peg$FAILED?(s5=peg$parseInclusiveOrExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseANDAND(),s4!==peg$FAILED?(s5=peg$parseInclusiveOrExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseInclusiveOrExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseExclusiveOrExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseOR(),s4!==peg$FAILED?(s5=peg$parseExclusiveOrExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseOR(),s4!==peg$FAILED?(s5=peg$parseExclusiveOrExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseExclusiveOrExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseAndExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseHAT(),s4!==peg$FAILED?(s5=peg$parseAndExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseHAT(),s4!==peg$FAILED?(s5=peg$parseAndExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseAndExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseEqualityExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseAND(),s4!==peg$FAILED?(s5=peg$parseEqualityExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseAND(),s4!==peg$FAILED?(s5=peg$parseEqualityExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseEqualityExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseRelationalExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseEQUAL(),s4===peg$FAILED&&(s4=peg$parseNOTEQUAL()),s4!==peg$FAILED?(s5=peg$parseRelationalExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseEQUAL(),s4===peg$FAILED&&(s4=peg$parseNOTEQUAL()),s4!==peg$FAILED?(s5=peg$parseRelationalExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseRelationalExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseShiftExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseLE(),s4===peg$FAILED&&(s4=peg$parseGE(),s4===peg$FAILED&&(s4=peg$parseLT(),s4===peg$FAILED&&(s4=peg$parseGT()))),s4!==peg$FAILED?(s5=peg$parseShiftExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=peg$currPos,s4=peg$parseINSTANCEOF(),s4!==peg$FAILED?(s5=peg$parseReferenceType(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED));s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseLE(),s4===peg$FAILED&&(s4=peg$parseGE(),s4===peg$FAILED&&(s4=peg$parseLT(),s4===peg$FAILED&&(s4=peg$parseGT()))),s4!==peg$FAILED?(s5=peg$parseShiftExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3===peg$FAILED&&(s3=peg$currPos,s4=peg$parseINSTANCEOF(),s4!==peg$FAILED?(s5=peg$parseReferenceType(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED));s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c77(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseShiftExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseAdditiveExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseSL(),s4===peg$FAILED&&(s4=peg$parseSR(),s4===peg$FAILED&&(s4=peg$parseBSR())),s4!==peg$FAILED?(s5=peg$parseAdditiveExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseSL(),s4===peg$FAILED&&(s4=peg$parseSR(),s4===peg$FAILED&&(s4=peg$parseBSR())),s4!==peg$FAILED?(s5=peg$parseAdditiveExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseAdditiveExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseMultiplicativeExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parsePLUS(),s4===peg$FAILED&&(s4=peg$parseMINUS()),s4!==peg$FAILED?(s5=peg$parseMultiplicativeExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parsePLUS(),s4===peg$FAILED&&(s4=peg$parseMINUS()),s4!==peg$FAILED?(s5=peg$parseMultiplicativeExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseMultiplicativeExpression(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseUnaryExpression(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseSTAR(),s4===peg$FAILED&&(s4=peg$parseDIV(),s4===peg$FAILED&&(s4=peg$parseMOD())),s4!==peg$FAILED?(s5=peg$parseUnaryExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseSTAR(),s4===peg$FAILED&&(s4=peg$parseDIV(),s4===peg$FAILED&&(s4=peg$parseMOD())),s4!==peg$FAILED?(s5=peg$parseUnaryExpression(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c76(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseUnaryExpression(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parsePrefixOp(),s1!==peg$FAILED?(s2=peg$parseUnaryExpression(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c78(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseUnaryExpressionNotPlusMinus()),s0}function peg$parseUnaryExpressionNotPlusMinus(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseCastExpression(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c79(s1)),s0=s1,s0===peg$FAILED){if(s0=peg$currPos,s1=peg$parsePrimary(),s1!==peg$FAILED)if(s2=peg$parseSelector(),s2!==peg$FAILED){for(s3=[],s4=peg$parseSelector();s4!==peg$FAILED;)s3.push(s4),s4=peg$parseSelector();if(s3!==peg$FAILED){if(s4=[],s5=peg$parsePostfixOp(),s5!==peg$FAILED)for(;s5!==peg$FAILED;)s4.push(s5),s5=peg$parsePostfixOp();else s4=peg$FAILED;s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c80(s1,s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;if(s0===peg$FAILED){if(s0=peg$currPos,s1=peg$parsePrimary(),s1!==peg$FAILED)if(s2=peg$parseSelector(),s2!==peg$FAILED){for(s3=[],s4=peg$parseSelector();s4!==peg$FAILED;)s3.push(s4),s4=peg$parseSelector();s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c81(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;if(s0===peg$FAILED){if(s0=peg$currPos,s1=peg$parsePrimary(),s1!==peg$FAILED){if(s2=[],s3=peg$parsePostfixOp(),s3!==peg$FAILED)for(;s3!==peg$FAILED;)s2.push(s3),s3=peg$parsePostfixOp();else s2=peg$FAILED;s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c82(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;s0===peg$FAILED&&(s0=peg$parsePrimary())}}}return s0}function peg$parseCastExpression(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseLPAR(),s1!==peg$FAILED?(s2=peg$parseBasicType(),s2!==peg$FAILED?(s3=peg$parseRPAR(),s3!==peg$FAILED?(s4=peg$parseUnaryExpression(),s4!==peg$FAILED?(s1=[s1,s2,s3,s4],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseLPAR(),s1!==peg$FAILED?(s2=peg$parseReferenceType(),s2!==peg$FAILED?(s3=peg$parseRPAR(),s3!==peg$FAILED?(s4=peg$parseUnaryExpressionNotPlusMinus(),s4!==peg$FAILED?(s1=[s1,s2,s3,s4],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parsePrimary(){var s0,s1,s2,s3,s4;if(s0=peg$parseParExpression(),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseNonWildcardTypeArguments(),s1!==peg$FAILED?(s2=peg$parseExplicitGenericInvocationSuffix(),s2===peg$FAILED&&(s2=peg$currPos,s3=peg$parseTHIS(),s3!==peg$FAILED?(s4=peg$parseArguments(),s4!==peg$FAILED?(peg$savedPos=s2,s3=peg$c83(s4),s2=s3):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c84(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseTHIS(),s1!==peg$FAILED?(s2=peg$parseArguments(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c85(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSUPER(),s1!==peg$FAILED?(s2=peg$parseSuperSuffix(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c86(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseLiteral(),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseNEW(),s1!==peg$FAILED?(s2=peg$parseCreator(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c87(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseQualifiedIdentifierSuffix(),s0===peg$FAILED&&(s0=peg$parseQualifiedIdentifier(),s0===peg$FAILED)))))))){if(s0=peg$currPos,s1=peg$parseBasicType(),s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(s3=peg$parseDOT(),s3!==peg$FAILED?(s4=peg$parseCLASS(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c88(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseVOID(),s1!==peg$FAILED?(s2=peg$parseDOT(),s2!==peg$FAILED?(s3=peg$parseCLASS(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c89(),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED))}return s0}function peg$parseQualifiedIdentifierSuffix(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED){if(s2=[],s3=peg$parseDim(),s3!==peg$FAILED)for(;s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();else s2=peg$FAILED;s2!==peg$FAILED?(s3=peg$parseDOT(),s3!==peg$FAILED?(s4=peg$parseCLASS(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c90(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED?(s2=peg$parseLBRK(),s2!==peg$FAILED?(s3=peg$parseExpression(),s3!==peg$FAILED?(s4=peg$parseRBRK(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c91(s1,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED?(s2=peg$parseArguments(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c92(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED?(s2=peg$parseDOT(),s2!==peg$FAILED?(s3=peg$parseCLASS(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c93(s1),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED?(s2=peg$parseDOT(),s2!==peg$FAILED?(s3=peg$parseExplicitGenericInvocation(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c94(s1,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED?(s2=peg$parseDOT(),s2!==peg$FAILED?(s3=peg$parseTHIS(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c95(s1),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED?(s2=peg$parseDOT(),s2!==peg$FAILED?(s3=peg$parseSUPER(),s3!==peg$FAILED?(s4=peg$parseArguments(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c96(s1,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED?(s2=peg$parseDOT(),s2!==peg$FAILED?(s3=peg$parseNEW(),s3!==peg$FAILED?(s4=peg$parseNonWildcardTypeArguments(),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(s5=peg$parseInnerCreator(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c97(s1,s4,s5),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)))))))),s0}function peg$parseExplicitGenericInvocation(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseNonWildcardTypeArguments(),s1!==peg$FAILED?(s2=peg$parseExplicitGenericInvocationSuffix(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c84(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseNonWildcardTypeArguments(){var s0,s1,s2,s3,s4,s5,s6;if(s0=peg$currPos,s1=peg$parseLPOINT(),s1!==peg$FAILED)if(s2=peg$parseReferenceType(),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$parseCOMMA(),s5!==peg$FAILED?(s6=peg$parseReferenceType(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$parseCOMMA(),s5!==peg$FAILED?(s6=peg$parseReferenceType(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(s4=peg$parseRPOINT(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseTypeArgumentsOrDiamond(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseLPOINT(),s1!==peg$FAILED?(s2=peg$parseRPOINT(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c98(),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseTypeArguments()),s0}function peg$parseNonWildcardTypeArgumentsOrDiamond(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseLPOINT(),s1!==peg$FAILED?(s2=peg$parseRPOINT(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseNonWildcardTypeArguments()),s0}function peg$parseExplicitGenericInvocationSuffix(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseSUPER(),s1!==peg$FAILED?(s2=peg$parseSuperSuffix(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c99(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseArguments(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c100(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parsePrefixOp(){var s0,s1;return s0=peg$currPos,s1=peg$parseINC(),s1===peg$FAILED&&(s1=peg$parseDEC(),s1===peg$FAILED&&(s1=peg$parseBANG(),s1===peg$FAILED&&(s1=peg$parseTILDA(),s1===peg$FAILED&&(s1=peg$parsePLUS(),s1===peg$FAILED&&(s1=peg$parseMINUS()))))),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c101(s1)),s0=s1}function peg$parsePostfixOp(){var s0,s1;return s0=peg$currPos,s1=peg$parseINC(),s1===peg$FAILED&&(s1=peg$parseDEC()),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c101(s1)),s0=s1}function peg$parseSelector(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseDOT(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(s3=peg$parseArguments(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c100(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDOT(),s1!==peg$FAILED?(s2=peg$parseIdentifier(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c102(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDOT(),s1!==peg$FAILED?(s2=peg$parseExplicitGenericInvocation(),
s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c103(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDOT(),s1!==peg$FAILED?(s2=peg$parseTHIS(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c104(),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDOT(),s1!==peg$FAILED?(s2=peg$parseSUPER(),s2!==peg$FAILED?(s3=peg$parseSuperSuffix(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c99(s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDOT(),s1!==peg$FAILED?(s2=peg$parseNEW(),s2!==peg$FAILED?(s3=peg$parseNonWildcardTypeArguments(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseInnerCreator(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c105(s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDimExpr(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c106(s1)),s0=s1)))))),s0}function peg$parseSuperSuffix(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseArguments(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c107(s1)),s0=s1,s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDOT(),s1!==peg$FAILED?(s2=peg$parseNonWildcardTypeArguments(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseIdentifier(),s3!==peg$FAILED?(s4=peg$parseArguments(),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c108(s2,s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseBasicType(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,4)===peg$c109?(s1=peg$c109,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c110)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c111?(s1=peg$c111,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c112)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c113?(s1=peg$c113,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c114)),s1===peg$FAILED&&(input.substr(peg$currPos,3)===peg$c115?(s1=peg$c115,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c116)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c117?(s1=peg$c117,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c118)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c119?(s1=peg$c119,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c120)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c121?(s1=peg$c121,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c122)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c123?(s1=peg$c123,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c124))))))))),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c125(s1),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseArguments(){var s0,s1,s2,s3,s4,s5,s6,s7;if(s0=peg$currPos,s1=peg$parseLPAR(),s1!==peg$FAILED){if(s2=peg$currPos,s3=peg$parseExpression(),s3!==peg$FAILED){for(s4=[],s5=peg$currPos,s6=peg$parseCOMMA(),s6!==peg$FAILED?(s7=peg$parseExpression(),s7!==peg$FAILED?(s6=[s6,s7],s5=s6):(peg$currPos=s5,s5=peg$FAILED)):(peg$currPos=s5,s5=peg$FAILED);s5!==peg$FAILED;)s4.push(s5),s5=peg$currPos,s6=peg$parseCOMMA(),s6!==peg$FAILED?(s7=peg$parseExpression(),s7!==peg$FAILED?(s6=[s6,s7],s5=s6):(peg$currPos=s5,s5=peg$FAILED)):(peg$currPos=s5,s5=peg$FAILED);s4!==peg$FAILED?(peg$savedPos=s2,s3=peg$c29(s3,s4),s2=s3):(peg$currPos=s2,s2=peg$FAILED)}else peg$currPos=s2,s2=peg$FAILED;s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseRPAR(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c126(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseCreator(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseBasicType(),s1===peg$FAILED&&(s1=peg$parseCreatedName()),s1!==peg$FAILED?(s2=peg$parseArrayCreatorRest(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c127(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseNonWildcardTypeArguments(),s1===peg$FAILED&&(s1=null),s1!==peg$FAILED?(s2=peg$parseCreatedName(),s2!==peg$FAILED?(s3=peg$parseClassCreatorRest(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c128(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseCreatedName(){var s0,s1,s2,s3,s4,s5,s6,s7;if(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED)if(s2=peg$parseTypeArgumentsOrDiamond(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$parseDOT(),s5!==peg$FAILED?(s6=peg$parseIdentifier(),s6!==peg$FAILED?(s7=peg$parseTypeArgumentsOrDiamond(),s7===peg$FAILED&&(s7=null),s7!==peg$FAILED?(s5=[s5,s6,s7],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$parseDOT(),s5!==peg$FAILED?(s6=peg$parseIdentifier(),s6!==peg$FAILED?(s7=peg$parseTypeArgumentsOrDiamond(),s7===peg$FAILED&&(s7=null),s7!==peg$FAILED?(s5=[s5,s6,s7],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c129(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseInnerCreator(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseNonWildcardTypeArgumentsOrDiamond(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseClassCreatorRest(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c130(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseClassCreatorRest(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseArguments(),s1!==peg$FAILED?(s2=peg$parseClassBody(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c131(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseArrayCreatorRest(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=[],s2=peg$parseDim(),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),s2=peg$parseDim();else s1=peg$FAILED;if(s1!==peg$FAILED?(s2=peg$parseArrayInitializer(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c132(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED){if(s0=peg$currPos,s1=[],s2=peg$parseDimExpr(),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),s2=peg$parseDimExpr();else s1=peg$FAILED;if(s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c133(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDim(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c134(s1)),s0=s1)}return s0}function peg$parseArrayInitializer(){var s0,s1,s2,s3,s4,s5,s6,s7;if(s0=peg$currPos,s1=peg$parseLWING(),s1!==peg$FAILED){if(s2=peg$currPos,s3=peg$parseVariableInitializer(),s3!==peg$FAILED){for(s4=[],s5=peg$currPos,s6=peg$parseCOMMA(),s6!==peg$FAILED?(s7=peg$parseVariableInitializer(),s7!==peg$FAILED?(s6=[s6,s7],s5=s6):(peg$currPos=s5,s5=peg$FAILED)):(peg$currPos=s5,s5=peg$FAILED);s5!==peg$FAILED;)s4.push(s5),s5=peg$currPos,s6=peg$parseCOMMA(),s6!==peg$FAILED?(s7=peg$parseVariableInitializer(),s7!==peg$FAILED?(s6=[s6,s7],s5=s6):(peg$currPos=s5,s5=peg$FAILED)):(peg$currPos=s5,s5=peg$FAILED);s4!==peg$FAILED?(peg$savedPos=s2,s3=peg$c29(s3,s4),s2=s3):(peg$currPos=s2,s2=peg$FAILED)}else peg$currPos=s2,s2=peg$FAILED;s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseCOMMA(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseRWING(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c135(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseVariableInitializer(){var s0;return s0=peg$parseArrayInitializer(),s0===peg$FAILED&&(s0=peg$parseExpression()),s0}function peg$parseParExpression(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseLPAR(),s1!==peg$FAILED?(s2=peg$parseExpression(),s2!==peg$FAILED?(s3=peg$parseRPAR(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c136(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseQualifiedIdentifier(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseDOT(),s4!==peg$FAILED?(s5=peg$parseIdentifier(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseDOT(),s4!==peg$FAILED?(s5=peg$parseIdentifier(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c137(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseDim(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseLBRK(),s1!==peg$FAILED?(s2=peg$parseRBRK(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDimExpr(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseLBRK(),s1!==peg$FAILED?(s2=peg$parseExpression(),s2!==peg$FAILED?(s3=peg$parseRBRK(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c138(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseType(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=peg$parseBasicType(),s1===peg$FAILED&&(s1=peg$parseClassType()),s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c139(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseReferenceType(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=peg$parseBasicType(),s1!==peg$FAILED){if(s2=[],s3=peg$parseDim(),s3!==peg$FAILED)for(;s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();else s2=peg$FAILED;s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c140(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;if(s0===peg$FAILED)if(s0=peg$currPos,s1=peg$parseClassType(),s1!==peg$FAILED){for(s2=[],s3=peg$parseDim();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseDim();s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c141(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseClassType(){var s0,s1,s2,s3,s4,s5,s6,s7;if(s0=peg$currPos,s1=peg$parseQualifiedIdentifier(),s1!==peg$FAILED)if(s2=peg$parseTypeArguments(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$parseDOT(),s5!==peg$FAILED?(s6=peg$parseIdentifier(),s6!==peg$FAILED?(s7=peg$parseTypeArguments(),s7===peg$FAILED&&(s7=null),s7!==peg$FAILED?(s5=[s5,s6,s7],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$parseDOT(),s5!==peg$FAILED?(s6=peg$parseIdentifier(),s6!==peg$FAILED?(s7=peg$parseTypeArguments(),s7===peg$FAILED&&(s7=null),s7!==peg$FAILED?(s5=[s5,s6,s7],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c129(s1,s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseClassTypeList(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseClassType(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseClassType(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseClassType(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseTypeArguments(){var s0,s1,s2,s3,s4,s5,s6;if(s0=peg$currPos,s1=peg$parseLPOINT(),s1!==peg$FAILED)if(s2=peg$parseTypeArgument(),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$parseCOMMA(),s5!==peg$FAILED?(s6=peg$parseTypeArgument(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$parseCOMMA(),s5!==peg$FAILED?(s6=peg$parseTypeArgument(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(s4=peg$parseRPOINT(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseTypeArgument(){var s0,s1,s2,s3,s4;return s0=peg$parseReferenceType(),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseQUERY(),s1!==peg$FAILED?(s2=peg$currPos,s3=peg$currPos,s4=peg$parseEXTENDS(),s4!==peg$FAILED&&(peg$savedPos=s3,s4=peg$c142()),s3=s4,s3===peg$FAILED&&(s3=peg$currPos,s4=peg$parseSUPER(),s4!==peg$FAILED&&(peg$savedPos=s3,s4=peg$c143()),s3=s4),s3!==peg$FAILED?(s4=peg$parseReferenceType(),s4!==peg$FAILED?(s3=[s3,s4],s2=s3):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c144(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseTypeParameters(){var s0,s1,s2,s3,s4,s5,s6;if(s0=peg$currPos,s1=peg$parseLPOINT(),s1!==peg$FAILED)if(s2=peg$parseTypeParameter(),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$parseCOMMA(),s5!==peg$FAILED?(s6=peg$parseTypeParameter(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$parseCOMMA(),s5!==peg$FAILED?(s6=peg$parseTypeParameter(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(s4=peg$parseRPOINT(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseTypeParameter(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$currPos,s3=peg$parseEXTENDS(),s3!==peg$FAILED?(s4=peg$parseBound(),s4!==peg$FAILED?(s3=[s3,s4],s2=s3):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c145(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseBound(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseClassType(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseAND(),s4!==peg$FAILED?(s5=peg$parseClassType(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseAND(),s4!==peg$FAILED?(s5=peg$parseClassType(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseModifier(){var s0,s1,s2,s3;return s0=peg$parseAnnotation(),s0===peg$FAILED&&(s0=peg$currPos,input.substr(peg$currPos,6)===peg$c146?(s1=peg$c146,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c147)),s1===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c148?(s1=peg$c148,peg$currPos+=9):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c149)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c150?(s1=peg$c150,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c151)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c152?(s1=peg$c152,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c153)),s1===peg$FAILED&&(input.substr(peg$currPos,8)===peg$c154?(s1=peg$c154,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c155)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c156?(s1=peg$c156,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c157)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c158?(s1=peg$c158,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c159)),s1===peg$FAILED&&(input.substr(peg$currPos,12)===peg$c160?(s1=peg$c160,peg$currPos+=12):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c161)),s1===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c162?(s1=peg$c162,peg$currPos+=9):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c163)),s1===peg$FAILED&&(input.substr(peg$currPos,8)===peg$c164?(s1=peg$c164,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c165)),s1===peg$FAILED&&(input.substr(peg$currPos,8)===peg$c166?(s1=peg$c166,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c167)))))))))))),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c168(s1),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseAnnotationTypeDeclaration(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseAT(),s1!==peg$FAILED?(s2=peg$parseINTERFACE(),s2!==peg$FAILED?(s3=peg$parseIdentifier(),s3!==peg$FAILED?(s4=peg$parseAnnotationTypeBody(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c169(s3,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseAnnotationTypeBody(){var s0,s1,s2,s3;if(s0=peg$currPos,s1=peg$parseLWING(),s1!==peg$FAILED){for(s2=[],s3=peg$parseAnnotationTypeElementDeclaration();s3!==peg$FAILED;)s2.push(s3),s3=peg$parseAnnotationTypeElementDeclaration();s2!==peg$FAILED?(s3=peg$parseRWING(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c170(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseAnnotationTypeElementDeclaration(){var s0,s1,s2;for(s0=peg$currPos,s1=[],s2=peg$parseModifier();s2!==peg$FAILED;)s1.push(s2),s2=peg$parseModifier();return s1!==peg$FAILED?(s2=peg$parseAnnotationTypeElementRest(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c171(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseSEMI(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c3()),s0=s1),s0}function peg$parseAnnotationTypeElementRest(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseType(),s1!==peg$FAILED?(s2=peg$parseAnnotationMethodOrConstantRest(),s2!==peg$FAILED?(s3=peg$parseSEMI(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c172(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$parseClassDeclaration(),s0===peg$FAILED&&(s0=peg$parseEnumDeclaration(),s0===peg$FAILED&&(s0=peg$parseInterfaceDeclaration(),s0===peg$FAILED&&(s0=peg$parseAnnotationTypeDeclaration())))),s0}function peg$parseAnnotationMethodOrConstantRest(){var s0;return s0=peg$parseAnnotationMethodRest(),s0===peg$FAILED&&(s0=peg$parseAnnotationConstantRest()),s0}function peg$parseAnnotationMethodRest(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseLPAR(),s2!==peg$FAILED?(s3=peg$parseRPAR(),s3!==peg$FAILED?(s4=peg$parseDefaultValue(),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c173(s1,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseAnnotationConstantRest(){var s0,s1;return s0=peg$currPos,s1=peg$parseVariableDeclarators(),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c174(s1)),s0=s1}function peg$parseDefaultValue(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseDEFAULT(),s1!==peg$FAILED?(s2=peg$parseElementValue(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c175(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseAnnotation(){var s0;return s0=peg$parseNormalAnnotation(),s0===peg$FAILED&&(s0=peg$parseSingleElementAnnotation(),s0===peg$FAILED&&(s0=peg$parseMarkerAnnotation())),s0}function peg$parseNormalAnnotation(){var s0,s1,s2,s3,s4,s5;return s0=peg$currPos,s1=peg$parseAT(),s1!==peg$FAILED?(s2=peg$parseQualifiedIdentifier(),s2!==peg$FAILED?(s3=peg$parseLPAR(),s3!==peg$FAILED?(s4=peg$parseElementValuePairs(),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(s5=peg$parseRPAR(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c176(s2,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSingleElementAnnotation(){var s0,s1,s2,s3,s4,s5;return s0=peg$currPos,s1=peg$parseAT(),s1!==peg$FAILED?(s2=peg$parseQualifiedIdentifier(),s2!==peg$FAILED?(s3=peg$parseLPAR(),s3!==peg$FAILED?(s4=peg$parseElementValue(),s4!==peg$FAILED?(s5=peg$parseRPAR(),s5!==peg$FAILED?(peg$savedPos=s0,s1=peg$c177(s2,s4),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMarkerAnnotation(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseAT(),s1!==peg$FAILED?(s2=peg$parseQualifiedIdentifier(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c178(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseElementValuePairs(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseElementValuePair(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseElementValuePair(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseElementValuePair(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseElementValuePair(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseIdentifier(),s1!==peg$FAILED?(s2=peg$parseEQU(),s2!==peg$FAILED?(s3=peg$parseElementValue(),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c179(s1,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseElementValue(){var s0;return s0=peg$parseConditionalExpression(),s0===peg$FAILED&&(s0=peg$parseAnnotation(),s0===peg$FAILED&&(s0=peg$parseElementValueArrayInitializer())),s0}function peg$parseElementValueArrayInitializer(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseLWING(),s1!==peg$FAILED?(s2=peg$parseElementValues(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseCOMMA(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseRWING(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c180(s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseElementValues(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseElementValue(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseElementValue(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;)s2.push(s3),s3=peg$currPos,s4=peg$parseCOMMA(),s4!==peg$FAILED?(s5=peg$parseElementValue(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c29(s1,s2),s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseSpacing(){var s0,s1,s2,s3,s4,s5,s6;if(s0=[],s1=[],peg$c181.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c182)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c181.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c182));else s1=peg$FAILED;if(s1===peg$FAILED){if(s1=peg$currPos,input.substr(peg$currPos,2)===peg$c183?(s2=peg$c183,peg$currPos+=2):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c184)),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$currPos,peg$silentFails++,input.substr(peg$currPos,2)===peg$c185?(s6=peg$c185,peg$currPos+=2):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c186)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$currPos,peg$silentFails++,input.substr(peg$currPos,2)===peg$c185?(s6=peg$c185,peg$currPos+=2):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c186)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c185?(s4=peg$c185,peg$currPos+=2):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c186)),s4!==peg$FAILED?(s2=[s2,s3,s4],s1=s2):(peg$currPos=s1,s1=peg$FAILED)):(peg$currPos=s1,s1=peg$FAILED)}else peg$currPos=s1,s1=peg$FAILED;if(s1===peg$FAILED)if(s1=peg$currPos,input.substr(peg$currPos,2)===peg$c187?(s2=peg$c187,peg$currPos+=2):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c188)),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$currPos,peg$silentFails++,peg$c189.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c190)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$currPos,peg$silentFails++,peg$c189.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c190)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(peg$c189.test(input.charAt(peg$currPos))?(s4=input.charAt(peg$currPos),peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c190)),s4!==peg$FAILED?(s2=[s2,s3,s4],s1=s2):(peg$currPos=s1,s1=peg$FAILED)):(peg$currPos=s1,s1=peg$FAILED)}else peg$currPos=s1,s1=peg$FAILED}for(;s1!==peg$FAILED;){if(s0.push(s1),s1=[],peg$c181.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c182)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),peg$c181.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c182));else s1=peg$FAILED;if(s1===peg$FAILED){if(s1=peg$currPos,input.substr(peg$currPos,2)===peg$c183?(s2=peg$c183,peg$currPos+=2):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c184)),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$currPos,peg$silentFails++,input.substr(peg$currPos,2)===peg$c185?(s6=peg$c185,peg$currPos+=2):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c186)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$currPos,peg$silentFails++,input.substr(peg$currPos,2)===peg$c185?(s6=peg$c185,peg$currPos+=2):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c186)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(input.substr(peg$currPos,2)===peg$c185?(s4=peg$c185,peg$currPos+=2):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c186)),s4!==peg$FAILED?(s2=[s2,s3,s4],s1=s2):(peg$currPos=s1,s1=peg$FAILED)):(peg$currPos=s1,s1=peg$FAILED)}else peg$currPos=s1,s1=peg$FAILED;if(s1===peg$FAILED)if(s1=peg$currPos,input.substr(peg$currPos,2)===peg$c187?(s2=peg$c187,peg$currPos+=2):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c188)),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=peg$currPos,peg$silentFails++,peg$c189.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c190)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;)s3.push(s4),s4=peg$currPos,s5=peg$currPos,peg$silentFails++,peg$c189.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c190)),peg$silentFails--,s6===peg$FAILED?s5=void 0:(peg$currPos=s5,s5=peg$FAILED),s5!==peg$FAILED?(s6=peg$parse_(),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s3!==peg$FAILED?(peg$c189.test(input.charAt(peg$currPos))?(s4=input.charAt(peg$currPos),peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c190)),s4!==peg$FAILED?(s2=[s2,s3,s4],s1=s2):(peg$currPos=s1,s1=peg$FAILED)):(peg$currPos=s1,s1=peg$FAILED)}else peg$currPos=s1,s1=peg$FAILED}}return s0}function peg$parseIdentifier(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$currPos,peg$silentFails++,s2=peg$parseKeyword(),peg$silentFails--,s2===peg$FAILED?s1=void 0:(peg$currPos=s1,s1=peg$FAILED),s1!==peg$FAILED)if(s2=peg$parseLetter(),s2!==peg$FAILED){for(s3=peg$currPos,s4=[],s5=peg$parseLetterOrDigit();s5!==peg$FAILED;)s4.push(s5),s5=peg$parseLetterOrDigit();s3=s4!==peg$FAILED?input.substring(s3,peg$currPos):s4,s3!==peg$FAILED?(s4=peg$parseSpacing(),s4!==peg$FAILED?(peg$savedPos=s0,s1=peg$c191(s2,s3),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseLetter(){var s0;return peg$c192.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c193)),s0===peg$FAILED&&(peg$c194.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c195)),s0===peg$FAILED&&(peg$c196.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c197)))),s0}function peg$parseLetterOrDigit(){var s0;return peg$c192.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c193)),s0===peg$FAILED&&(peg$c194.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),
peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c195)),s0===peg$FAILED&&(peg$c198.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c199)),s0===peg$FAILED&&(peg$c196.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c197))))),s0}function peg$parseKeyword(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,8)===peg$c154?(s1=peg$c154,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c155)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c200?(s1=peg$c200,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c201)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c123?(s1=peg$c123,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c124)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c202?(s1=peg$c202,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c203)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c109?(s1=peg$c109,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c110)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c204?(s1=peg$c204,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c205)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c206?(s1=peg$c206,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c207)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c113?(s1=peg$c113,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c114)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c208?(s1=peg$c208,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c209)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c210?(s1=peg$c210,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c211)),s1===peg$FAILED&&(input.substr(peg$currPos,8)===peg$c212?(s1=peg$c212,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c213)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c214?(s1=peg$c214,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c215)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c121?(s1=peg$c121,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c122)),s1===peg$FAILED&&(input.substr(peg$currPos,2)===peg$c216?(s1=peg$c216,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c217)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c218?(s1=peg$c218,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c219)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c220?(s1=peg$c220,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c221)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c222?(s1=peg$c222,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c223)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c224?(s1=peg$c224,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c225)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c226?(s1=peg$c226,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c227)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c156?(s1=peg$c156,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c157)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c119?(s1=peg$c119,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c120)),s1===peg$FAILED&&(input.substr(peg$currPos,3)===peg$c228?(s1=peg$c228,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c229)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c230?(s1=peg$c230,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c231)),s1===peg$FAILED&&(input.substr(peg$currPos,2)===peg$c232?(s1=peg$c232,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c233)),s1===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c234?(s1=peg$c234,peg$currPos+=10):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c235)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c236?(s1=peg$c236,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c237)),s1===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c238?(s1=peg$c238,peg$currPos+=9):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c239)),s1===peg$FAILED&&(input.substr(peg$currPos,3)===peg$c115?(s1=peg$c115,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c116)),s1===peg$FAILED&&(input.substr(peg$currPos,10)===peg$c240?(s1=peg$c240,peg$currPos+=10):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c241)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c117?(s1=peg$c117,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c118)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c158?(s1=peg$c158,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c159)),s1===peg$FAILED&&(input.substr(peg$currPos,3)===peg$c242?(s1=peg$c242,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c243)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c244?(s1=peg$c244,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c245)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c246?(s1=peg$c246,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c247)),s1===peg$FAILED&&(input.substr(peg$currPos,7)===peg$c150?(s1=peg$c150,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c151)),s1===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c148?(s1=peg$c148,peg$currPos+=9):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c149)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c146?(s1=peg$c146,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c147)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c248?(s1=peg$c248,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c249)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c111?(s1=peg$c111,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c112)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c152?(s1=peg$c152,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c153)),s1===peg$FAILED&&(input.substr(peg$currPos,8)===peg$c166?(s1=peg$c166,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c167)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c250?(s1=peg$c250,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c251)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c252?(s1=peg$c252,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c253)),s1===peg$FAILED&&(input.substr(peg$currPos,12)===peg$c160?(s1=peg$c160,peg$currPos+=12):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c161)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c254?(s1=peg$c254,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c255)),s1===peg$FAILED&&(input.substr(peg$currPos,6)===peg$c256?(s1=peg$c256,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c257)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c258?(s1=peg$c258,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c259)),s1===peg$FAILED&&(input.substr(peg$currPos,9)===peg$c162?(s1=peg$c162,peg$currPos+=9):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c163)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c260?(s1=peg$c260,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c261)),s1===peg$FAILED&&(input.substr(peg$currPos,3)===peg$c262?(s1=peg$c262,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c263)),s1===peg$FAILED&&(input.substr(peg$currPos,4)===peg$c264?(s1=peg$c264,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c265)),s1===peg$FAILED&&(input.substr(peg$currPos,8)===peg$c164?(s1=peg$c164,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c165)),s1===peg$FAILED&&(input.substr(peg$currPos,5)===peg$c266?(s1=peg$c266,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c267)))))))))))))))))))))))))))))))))))))))))))))))))))))),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseASSERT(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,6)===peg$c200?(s1=peg$c200,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c201)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseBREAK(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,5)===peg$c202?(s1=peg$c202,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c203)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseCASE(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,4)===peg$c204?(s1=peg$c204,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c205)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseCATCH(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,5)===peg$c206?(s1=peg$c206,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c207)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseCLASS(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,5)===peg$c208?(s1=peg$c208,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c209)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseCONTINUE(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,8)===peg$c212?(s1=peg$c212,peg$currPos+=8):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c213)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDEFAULT(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,7)===peg$c214?(s1=peg$c214,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c215)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDO(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c216?(s1=peg$c216,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c217)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseELSE(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,4)===peg$c218?(s1=peg$c218,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c219)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseENUM(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,4)===peg$c220?(s1=peg$c220,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c221)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEXTENDS(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,7)===peg$c222?(s1=peg$c222,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c223)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseFINALLY(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,7)===peg$c226?(s1=peg$c226,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c227)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseFINAL(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,5)===peg$c156?(s1=peg$c156,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c157)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseFOR(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,3)===peg$c228?(s1=peg$c228,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c229)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseIF(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c232?(s1=peg$c232,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c233)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseIMPLEMENTS(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,10)===peg$c234?(s1=peg$c234,peg$currPos+=10):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c235)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseIMPORT(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,6)===peg$c236?(s1=peg$c236,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c237)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseINTERFACE(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,9)===peg$c238?(s1=peg$c238,peg$currPos+=9):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c239)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseINSTANCEOF(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,10)===peg$c240?(s1=peg$c240,peg$currPos+=10):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c241)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseNEW(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,3)===peg$c242?(s1=peg$c242,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c243)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parsePACKAGE(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,7)===peg$c246?(s1=peg$c246,peg$currPos+=7):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c247)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseRETURN(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,6)===peg$c248?(s1=peg$c248,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c249)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSTATIC(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,6)===peg$c152?(s1=peg$c152,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c153)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSUPER(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,5)===peg$c250?(s1=peg$c250,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c251)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSWITCH(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,6)===peg$c252?(s1=peg$c252,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c253)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSYNCHRONIZED(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,12)===peg$c160?(s1=peg$c160,peg$currPos+=12):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c161)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTHIS(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,4)===peg$c254?(s1=peg$c254,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c255)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTHROWS(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,6)===peg$c256?(s1=peg$c256,peg$currPos+=6):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c257)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTHROW(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,5)===peg$c258?(s1=peg$c258,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c259)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTRY(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,3)===peg$c262?(s1=peg$c262,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c263)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseVOID(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,4)===peg$c264?(s1=peg$c264,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c265)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseWHILE(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,5)===peg$c266?(s1=peg$c266,peg$currPos+=5):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c267)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,s3=peg$parseLetterOrDigit(),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLiteral(){var s0,s1,s2,s3,s4;return s0=peg$currPos,s1=peg$parseFloatLiteral(),s1===peg$FAILED&&(s1=peg$parseIntegerLiteral(),s1===peg$FAILED&&(s1=peg$parseCharLiteral(),s1===peg$FAILED&&(s1=peg$parseStringLiteral(),s1===peg$FAILED&&(s1=peg$currPos,input.substr(peg$currPos,4)===peg$c260?(s2=peg$c260,peg$currPos+=4):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c261)),s2!==peg$FAILED?(s3=peg$currPos,peg$silentFails++,s4=peg$parseLetterOrDigit(),peg$silentFails--,s4===peg$FAILED?s3=void 0:(peg$currPos=s3,s3=peg$FAILED),s3!==peg$FAILED?(peg$savedPos=s1,s2=peg$c268(),s1=s2):(peg$currPos=s1,s1=peg$FAILED)):(peg$currPos=s1,s1=peg$FAILED),s1===peg$FAILED&&(s1=peg$currPos,input.substr(peg$currPos,5)===peg$c224?(s2=peg$c224,peg$currPos+=5):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c225)),s2!==peg$FAILED?(s3=peg$currPos,peg$silentFails++,s4=peg$parseLetterOrDigit(),peg$silentFails--,s4===peg$FAILED?s3=void 0:(peg$currPos=s3,s3=peg$FAILED),s3!==peg$FAILED?(peg$savedPos=s1,s2=peg$c269(),s1=s2):(peg$currPos=s1,s1=peg$FAILED)):(peg$currPos=s1,s1=peg$FAILED),s1===peg$FAILED&&(s1=peg$currPos,input.substr(peg$currPos,4)===peg$c244?(s2=peg$c244,peg$currPos+=4):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c245)),s2!==peg$FAILED?(s3=peg$currPos,peg$silentFails++,s4=peg$parseLetterOrDigit(),peg$silentFails--,s4===peg$FAILED?s3=void 0:(peg$currPos=s3,s3=peg$FAILED),s3!==peg$FAILED?(peg$savedPos=s1,s2=peg$c270(),s1=s2):(peg$currPos=s1,s1=peg$FAILED)):(peg$currPos=s1,s1=peg$FAILED))))))),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c271(s1),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseIntegerLiteral(){var s0,s1,s2;return s0=peg$currPos,s1=peg$parseHexNumeral(),s1===peg$FAILED&&(s1=peg$parseBinaryNumeral(),s1===peg$FAILED&&(s1=peg$parseOctalNumeral(),s1===peg$FAILED&&(s1=peg$parseDecimalNumeral()))),s1!==peg$FAILED?(peg$c272.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c273)),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(peg$savedPos=s0,s1=peg$c274(),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDecimalNumeral(){var s0,s1,s2,s3,s4,s5;if(48===input.charCodeAt(peg$currPos)?(s0=peg$c275,peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c276)),s0===peg$FAILED)if(s0=peg$currPos,peg$c277.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c278)),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));for(s4!==peg$FAILED?(peg$c198.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c199)),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;){for(s2.push(s3),s3=peg$currPos,s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s4!==peg$FAILED?(peg$c198.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c199)),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED)}s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseHexNumeral(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c281?(s1=peg$c281,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c282)),s1===peg$FAILED&&(input.substr(peg$currPos,2)===peg$c283?(s1=peg$c283,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c284))),s1!==peg$FAILED?(s2=peg$parseHexDigits(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseBinaryNumeral(){var s0,s1,s2,s3,s4,s5,s6;if(s0=peg$currPos,input.substr(peg$currPos,2)===peg$c285?(s1=peg$c285,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c286)),s1===peg$FAILED&&(input.substr(peg$currPos,2)===peg$c287?(s1=peg$c287,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c288))),s1!==peg$FAILED)if(peg$c289.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c290)),s2!==peg$FAILED){for(s3=[],s4=peg$currPos,s5=[],peg$c279.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s6!==peg$FAILED;)s5.push(s6),peg$c279.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));for(s5!==peg$FAILED?(peg$c289.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c290)),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED);s4!==peg$FAILED;){for(s3.push(s4),s4=peg$currPos,s5=[],peg$c279.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s6!==peg$FAILED;)s5.push(s6),peg$c279.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED?(peg$c289.test(input.charAt(peg$currPos))?(s6=input.charAt(peg$currPos),peg$currPos++):(s6=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c290)),s6!==peg$FAILED?(s5=[s5,s6],s4=s5):(peg$currPos=s4,s4=peg$FAILED)):(peg$currPos=s4,s4=peg$FAILED)}s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseOctalNumeral(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,48===input.charCodeAt(peg$currPos)?(s1=peg$c275,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c276)),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));if(s4!==peg$FAILED?(peg$c291.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c292)),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED),s3!==peg$FAILED)for(;s3!==peg$FAILED;){for(s2.push(s3),s3=peg$currPos,
s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s4!==peg$FAILED?(peg$c291.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c292)),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED)}else s2=peg$FAILED;s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseFloatLiteral(){var s0,s1;return s0=peg$currPos,s1=peg$parseHexFloat(),s1===peg$FAILED&&(s1=peg$parseDecimalFloat()),s1!==peg$FAILED&&(peg$savedPos=s0,s1=peg$c274()),s0=s1}function peg$parseDecimalFloat(){var s0,s1,s2,s3,s4,s5;return s0=peg$currPos,s1=peg$parseDigits(),s1!==peg$FAILED?(46===input.charCodeAt(peg$currPos)?(s2=peg$c293,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c294)),s2!==peg$FAILED?(s3=peg$parseDigits(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s4=peg$parseExponent(),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(peg$c295.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c296)),s5===peg$FAILED&&(s5=null),s5!==peg$FAILED?(s1=[s1,s2,s3,s4,s5],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,46===input.charCodeAt(peg$currPos)?(s1=peg$c293,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c294)),s1!==peg$FAILED?(s2=peg$parseDigits(),s2!==peg$FAILED?(s3=peg$parseExponent(),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(peg$c295.test(input.charAt(peg$currPos))?(s4=input.charAt(peg$currPos),peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c296)),s4===peg$FAILED&&(s4=null),s4!==peg$FAILED?(s1=[s1,s2,s3,s4],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDigits(),s1!==peg$FAILED?(s2=peg$parseExponent(),s2!==peg$FAILED?(peg$c295.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c296)),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseDigits(),s1!==peg$FAILED?(s2=peg$parseExponent(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(peg$c295.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c296)),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)))),s0}function peg$parseExponent(){var s0,s1,s2,s3;return s0=peg$currPos,peg$c297.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c298)),s1!==peg$FAILED?(peg$c299.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c300)),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseDigits(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseHexFloat(){var s0,s1,s2,s3;return s0=peg$currPos,s1=peg$parseHexSignificand(),s1!==peg$FAILED?(s2=peg$parseBinaryExponent(),s2!==peg$FAILED?(peg$c295.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c296)),s3===peg$FAILED&&(s3=null),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseHexSignificand(){var s0,s1,s2,s3,s4;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c281?(s1=peg$c281,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c282)),s1===peg$FAILED&&(input.substr(peg$currPos,2)===peg$c283?(s1=peg$c283,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c284))),s1!==peg$FAILED?(s2=peg$parseHexDigits(),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(46===input.charCodeAt(peg$currPos)?(s3=peg$c293,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c294)),s3!==peg$FAILED?(s4=peg$parseHexDigits(),s4!==peg$FAILED?(s1=[s1,s2,s3,s4],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,s1=peg$parseHexNumeral(),s1!==peg$FAILED?(46===input.charCodeAt(peg$currPos)?(s2=peg$c293,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c294)),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)),s0}function peg$parseBinaryExponent(){var s0,s1,s2,s3;return s0=peg$currPos,peg$c301.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c302)),s1!==peg$FAILED?(peg$c299.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c300)),s2===peg$FAILED&&(s2=null),s2!==peg$FAILED?(s3=peg$parseDigits(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDigits(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,peg$c198.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c199)),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));for(s4!==peg$FAILED?(peg$c198.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c199)),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;){for(s2.push(s3),s3=peg$currPos,s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s4!==peg$FAILED?(peg$c198.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c199)),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED)}s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseHexDigits(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=peg$parseHexDigit(),s1!==peg$FAILED){for(s2=[],s3=peg$currPos,s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));for(s4!==peg$FAILED?(s5=peg$parseHexDigit(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED);s3!==peg$FAILED;){for(s2.push(s3),s3=peg$currPos,s4=[],peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s5!==peg$FAILED;)s4.push(s5),peg$c279.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c280));s4!==peg$FAILED?(s5=peg$parseHexDigit(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED)}s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseHexDigit(){var s0;return peg$c303.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c304)),s0===peg$FAILED&&(peg$c305.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c306)),s0===peg$FAILED&&(peg$c198.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c199)))),s0}function peg$parseCharLiteral(){var s0,s1,s2,s3,s4;return s0=peg$currPos,39===input.charCodeAt(peg$currPos)?(s1=peg$c307,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c308)),s1!==peg$FAILED?(s2=peg$parseEscape(),s2===peg$FAILED&&(s2=peg$currPos,s3=peg$currPos,peg$silentFails++,peg$c309.test(input.charAt(peg$currPos))?(s4=input.charAt(peg$currPos),peg$currPos++):(s4=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c310)),peg$silentFails--,s4===peg$FAILED?s3=void 0:(peg$currPos=s3,s3=peg$FAILED),s3!==peg$FAILED?(s4=peg$parse_(),s4!==peg$FAILED?(s3=[s3,s4],s2=s3):(peg$currPos=s2,s2=peg$FAILED)):(peg$currPos=s2,s2=peg$FAILED)),s2!==peg$FAILED?(39===input.charCodeAt(peg$currPos)?(s3=peg$c307,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c308)),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c311(),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseStringLiteral(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,34===input.charCodeAt(peg$currPos)?(s1=peg$c312,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c313)),s1!==peg$FAILED){for(s2=[],s3=peg$parseEscape(),s3===peg$FAILED&&(s3=peg$currPos,s4=peg$currPos,peg$silentFails++,peg$c314.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c315)),peg$silentFails--,s5===peg$FAILED?s4=void 0:(peg$currPos=s4,s4=peg$FAILED),s4!==peg$FAILED?(s5=peg$parse_(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED));s3!==peg$FAILED;)s2.push(s3),s3=peg$parseEscape(),s3===peg$FAILED&&(s3=peg$currPos,s4=peg$currPos,peg$silentFails++,peg$c314.test(input.charAt(peg$currPos))?(s5=input.charAt(peg$currPos),peg$currPos++):(s5=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c315)),peg$silentFails--,s5===peg$FAILED?s4=void 0:(peg$currPos=s4,s4=peg$FAILED),s4!==peg$FAILED?(s5=peg$parse_(),s5!==peg$FAILED?(s4=[s4,s5],s3=s4):(peg$currPos=s3,s3=peg$FAILED)):(peg$currPos=s3,s3=peg$FAILED));s2!==peg$FAILED?(34===input.charCodeAt(peg$currPos)?(s3=peg$c312,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c313)),s3!==peg$FAILED?(peg$savedPos=s0,s1=peg$c316(),s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)}else peg$currPos=s0,s0=peg$FAILED;return s0}function peg$parseEscape(){var s0,s1,s2;return s0=peg$currPos,92===input.charCodeAt(peg$currPos)?(s1=peg$c317,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c318)),s1!==peg$FAILED?(peg$c319.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c320)),s2===peg$FAILED&&(s2=peg$parseOctalEscape(),s2===peg$FAILED&&(s2=peg$parseUnicodeEscape())),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseOctalEscape(){var s0,s1,s2,s3;return s0=peg$currPos,peg$c321.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c322)),s1!==peg$FAILED?(peg$c291.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c292)),s2!==peg$FAILED?(peg$c291.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c292)),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(s0=peg$currPos,peg$c291.test(input.charAt(peg$currPos))?(s1=input.charAt(peg$currPos),peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c292)),s1!==peg$FAILED?(peg$c291.test(input.charAt(peg$currPos))?(s2=input.charAt(peg$currPos),peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c292)),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0===peg$FAILED&&(peg$c291.test(input.charAt(peg$currPos))?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c292)))),s0}function peg$parseUnicodeEscape(){var s0,s1,s2,s3,s4,s5;if(s0=peg$currPos,s1=[],117===input.charCodeAt(peg$currPos)?(s2=peg$c323,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c324)),s2!==peg$FAILED)for(;s2!==peg$FAILED;)s1.push(s2),117===input.charCodeAt(peg$currPos)?(s2=peg$c323,peg$currPos++):(s2=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c324));else s1=peg$FAILED;return s1!==peg$FAILED?(s2=peg$parseHexDigit(),s2!==peg$FAILED?(s3=peg$parseHexDigit(),s3!==peg$FAILED?(s4=peg$parseHexDigit(),s4!==peg$FAILED?(s5=peg$parseHexDigit(),s5!==peg$FAILED?(s1=[s1,s2,s3,s4,s5],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseAT(){var s0,s1,s2;return s0=peg$currPos,64===input.charCodeAt(peg$currPos)?(s1=peg$c325,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c326)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseAND(){var s0,s1,s2,s3;return s0=peg$currPos,38===input.charCodeAt(peg$currPos)?(s1=peg$c327,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c328)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,peg$c329.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c330)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseANDAND(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c331?(s1=peg$c331,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c332)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseANDEQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c333?(s1=peg$c333,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c334)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseBANG(){var s0,s1,s2,s3;return s0=peg$currPos,33===input.charCodeAt(peg$currPos)?(s1=peg$c335,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c336)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseBSR(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,3)===peg$c339?(s1=peg$c339,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c340)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseBSREQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,4)===peg$c341?(s1=peg$c341,peg$currPos+=4):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c342)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseCOLON(){var s0,s1,s2;return s0=peg$currPos,58===input.charCodeAt(peg$currPos)?(s1=peg$c343,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c344)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseCOMMA(){var s0,s1,s2;return s0=peg$currPos,44===input.charCodeAt(peg$currPos)?(s1=peg$c345,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c346)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDEC(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c347?(s1=peg$c347,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c348)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDIV(){var s0,s1,s2,s3;return s0=peg$currPos,47===input.charCodeAt(peg$currPos)?(s1=peg$c349,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c350)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDIVEQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c351?(s1=peg$c351,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c352)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseDOT(){var s0,s1,s2;return s0=peg$currPos,46===input.charCodeAt(peg$currPos)?(s1=peg$c293,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c294)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseELLIPSIS(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,3)===peg$c353?(s1=peg$c353,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c354)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEQU(){var s0,s1,s2,s3;return s0=peg$currPos,61===input.charCodeAt(peg$currPos)?(s1=peg$c337,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEQUAL(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c355?(s1=peg$c355,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c356)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGE(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c357?(s1=peg$c357,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c358)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseGT(){var s0,s1,s2,s3;return s0=peg$currPos,62===input.charCodeAt(peg$currPos)?(s1=peg$c359,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c360)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,peg$c361.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c362)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseHAT(){var s0,s1,s2,s3;return s0=peg$currPos,94===input.charCodeAt(peg$currPos)?(s1=peg$c363,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c364)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseHATEQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c365?(s1=peg$c365,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c366)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseINC(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c367?(s1=peg$c367,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c368)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLBRK(){var s0,s1,s2;return s0=peg$currPos,91===input.charCodeAt(peg$currPos)?(s1=peg$c369,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c370)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLE(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c371?(s1=peg$c371,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c372)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLPAR(){var s0,s1,s2;return s0=peg$currPos,40===input.charCodeAt(peg$currPos)?(s1=peg$c373,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c374)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLPOINT(){var s0,s1,s2;return s0=peg$currPos,60===input.charCodeAt(peg$currPos)?(s1=peg$c375,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c376)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLT(){var s0,s1,s2,s3;return s0=peg$currPos,60===input.charCodeAt(peg$currPos)?(s1=peg$c375,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c376)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,peg$c377.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c378)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseLWING(){var s0,s1,s2;return s0=peg$currPos,123===input.charCodeAt(peg$currPos)?(s1=peg$c379,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c380)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMINUS(){var s0,s1,s2,s3;return s0=peg$currPos,45===input.charCodeAt(peg$currPos)?(s1=peg$c381,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c382)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,peg$c383.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c384)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMINUSEQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c385?(s1=peg$c385,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c386)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMOD(){var s0,s1,s2,s3;return s0=peg$currPos,37===input.charCodeAt(peg$currPos)?(s1=peg$c387,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c388)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseMODEQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c389?(s1=peg$c389,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c390)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseNOTEQUAL(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c391?(s1=peg$c391,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c392)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseOR(){var s0,s1,s2,s3;return s0=peg$currPos,124===input.charCodeAt(peg$currPos)?(s1=peg$c393,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c394)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,peg$c395.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c396)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseOREQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c397?(s1=peg$c397,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c398)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseOROR(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c399?(s1=peg$c399,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c400)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parsePLUS(){var s0,s1,s2,s3;return s0=peg$currPos,43===input.charCodeAt(peg$currPos)?(s1=peg$c401,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c402)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,peg$c403.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c404)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parsePLUSEQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c405?(s1=peg$c405,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c406)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseQUERY(){var s0,s1,s2;return s0=peg$currPos,63===input.charCodeAt(peg$currPos)?(s1=peg$c407,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c408)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseRBRK(){var s0,s1,s2;return s0=peg$currPos,93===input.charCodeAt(peg$currPos)?(s1=peg$c409,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c410)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseRPAR(){var s0,s1,s2;return s0=peg$currPos,41===input.charCodeAt(peg$currPos)?(s1=peg$c411,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c412)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseRPOINT(){var s0,s1,s2;return s0=peg$currPos,62===input.charCodeAt(peg$currPos)?(s1=peg$c359,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c360)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseRWING(){var s0,s1,s2;return s0=peg$currPos,125===input.charCodeAt(peg$currPos)?(s1=peg$c413,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c414)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSEMI(){var s0,s1,s2;return s0=peg$currPos,59===input.charCodeAt(peg$currPos)?(s1=peg$c415,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c416)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSL(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c417?(s1=peg$c417,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c418)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSLEQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,3)===peg$c419?(s1=peg$c419,
peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c420)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSR(){var s0,s1,s2,s3;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c421?(s1=peg$c421,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c422)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,peg$c361.test(input.charAt(peg$currPos))?(s3=input.charAt(peg$currPos),peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c362)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSREQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,3)===peg$c423?(s1=peg$c423,peg$currPos+=3):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c424)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSTAR(){var s0,s1,s2,s3;return s0=peg$currPos,42===input.charCodeAt(peg$currPos)?(s1=peg$c425,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c426)),s1!==peg$FAILED?(s2=peg$currPos,peg$silentFails++,61===input.charCodeAt(peg$currPos)?(s3=peg$c337,peg$currPos++):(s3=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c338)),peg$silentFails--,s3===peg$FAILED?s2=void 0:(peg$currPos=s2,s2=peg$FAILED),s2!==peg$FAILED?(s3=peg$parseSpacing(),s3!==peg$FAILED?(s1=[s1,s2,s3],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseSTAREQU(){var s0,s1,s2;return s0=peg$currPos,input.substr(peg$currPos,2)===peg$c427?(s1=peg$c427,peg$currPos+=2):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c428)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseTILDA(){var s0,s1,s2;return s0=peg$currPos,126===input.charCodeAt(peg$currPos)?(s1=peg$c429,peg$currPos++):(s1=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c430)),s1!==peg$FAILED?(s2=peg$parseSpacing(),s2!==peg$FAILED?(s1=[s1,s2],s0=s1):(peg$currPos=s0,s0=peg$FAILED)):(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parseEOT(){var s0,s1;return s0=peg$currPos,peg$silentFails++,s1=peg$parse_(),peg$silentFails--,s1===peg$FAILED?s0=void 0:(peg$currPos=s0,s0=peg$FAILED),s0}function peg$parse_(){var s0;return input.length>peg$currPos?(s0=input.charAt(peg$currPos),peg$currPos++):(s0=peg$FAILED,0===peg$silentFails&&peg$fail(peg$c431)),s0}function extractOptional(optional,index,def){return def="undefined"!=typeof def?def:null,optional?optional[index]:def}function extractList(list,index){var i,result=new Array(list.length);for(i=0;i<list.length;i++)result[i]=list[i][index];return result}function buildList(first,rest,index){return[first].concat(extractList(rest,index))}function buildTree(first,rest,builder){var i,result=first;for(i=0;i<rest.length;i++)result=builder(result,rest[i]);return result}function buildInfixExpr(first,rest){return buildTree(first,rest,function(result,element){return{node:"InfixExpression",operator:element[0][0],leftOperand:result,rightOperand:element[1]}})}function buildQualified(first,rest,index){return buildTree(first,rest,function(result,element){return{node:"QualifiedName",qualifier:result,name:element[index]}})}function popQualified(tree){return"QualifiedName"===tree.node?{name:tree.name,expression:tree.qualifier}:{name:tree,expression:null}}function extractThrowsClassType(list){return list.map(function(node){return node.name})}function extractExpressions(list){return list.map(function(node){return node.expression})}function buildArrayTree(first,rest){return buildTree(first,rest,function(result,element){return{node:"ArrayType",componentType:result}})}function optionalList(value){return null!==value?value:[]}function extractOptionalList(list,index){return optionalList(extractOptional(list,index))}function skipNulls(list){return list.filter(function(v){return null!==v})}function makePrimitive(code){return{node:"PrimitiveType",primitiveTypeCode:code}}function makeModifier(keyword){return{node:"Modifier",keyword:keyword}}function makeCatchFinally(catchClauses,finallyBlock){return{catchClauses:catchClauses,"finally":finallyBlock}}function buildTypeName(qual,args,rest){var first=null===args?{node:"SimpleType",name:qual}:{node:"ParameterizedType",type:{node:"SimpleType",name:qual},typeArguments:args};return buildTree(first,rest,function(result,element){var args=element[2];return null===args?{node:"QualifiedType",name:element[1],qualifier:result}:{node:"ParameterizedType",type:{node:"QualifiedType",name:element[1],qualifier:result},typeArguments:args}})}function mergeProps(obj,props){var key;for(key in props)if(props.hasOwnProperty(key)){if(obj.hasOwnProperty(key))throw new Error("Property "+key+" exists "+line()+"\n"+text()+"\nCurrent value: "+JSON.stringify(obj[key],null,2)+"\nNew value: "+JSON.stringify(props[key],null,2));obj[key]=props[key]}return obj}function buildSelectorTree(arg,sel,sels){function getMergeVal(o,v){switch(o.node){case"SuperFieldAccess":case"SuperMethodInvocation":return{qualifier:v};case"ArrayAccess":return{array:v};default:return{expression:v}}}return buildTree(mergeProps(sel,getMergeVal(sel,arg)),sels,function(result,element){return mergeProps(element,getMergeVal(element,result))})}function TODO(){throw new Error("TODO: not impl line "+line()+"\n"+text())}var peg$result,options=arguments.length>1?arguments[1]:{},peg$FAILED={},peg$startRuleFunctions={CompilationUnit:peg$parseCompilationUnit},peg$startRuleFunction=peg$parseCompilationUnit,peg$c0=function(pack,imports,types){return{node:"CompilationUnit",types:skipNulls(types),"package":pack,imports:skipNulls(imports)}},peg$c1=function(annot,name){return{node:"PackageDeclaration",name:name,annotations:annot}},peg$c2=function(stat,name,asterisk){return{node:"ImportDeclaration",name:name,"static":!!stat,onDemand:!!extractOptional(asterisk,1)}},peg$c3=function(){return null},peg$c4=function(modifiers,type){return mergeProps(type,{modifiers:modifiers})},peg$c5=function(id,gen,ext,impl,body){return{node:"TypeDeclaration",name:id,superInterfaceTypes:extractOptionalList(impl,1),superclassType:extractOptional(ext,1),bodyDeclarations:body,typeParameters:optionalList(gen),"interface":!1}},peg$c6=function(decls){return skipNulls(decls)},peg$c7=function(modifier,body){return{node:"Initializer",body:body,modifiers:null===modifier?[]:[makeModifier("static")]}},peg$c8=function(modifiers,member){return mergeProps(member,{modifiers:modifiers})},peg$c9=function(params,rest){return mergeProps(rest,{node:"MethodDeclaration",typeParameters:params})},peg$c10=function(type,id,rest){return mergeProps(rest,{node:"MethodDeclaration",returnType2:type,name:id,typeParameters:[]})},peg$c11=function(type,decls){return{node:"FieldDeclaration",fragments:decls,type:type}},peg$c12=function(id,rest){return mergeProps(rest,{node:"MethodDeclaration",returnType2:makePrimitive("void"),name:id,constructor:!1})},peg$c13=function(id,rest){return mergeProps(rest,{node:"MethodDeclaration",name:id,typeParameters:[]})},peg$c14=function(){return makePrimitive("void")},peg$c15=function(type,id,rest){return mergeProps(rest,{returnType2:type,name:id})},peg$c16=function(id,rest){return mergeProps(rest,{name:id})},peg$c17=function(params,dims,throws){return null},peg$c18=function(params,dims,throws,body){return{parameters:params,thrownExceptions:extractThrowsClassType(extractOptionalList(throws,1)),extraDimensions:dims.length,body:body,constructor:!1}},peg$c19=function(params,throws){return null},peg$c20=function(params,throws,body){return{parameters:params,thrownExceptions:extractThrowsClassType(extractOptionalList(throws,1)),body:body,extraDimensions:0,typeParameters:[]}},peg$c21=function(params,throws,body){return{parameters:params,thrownExceptions:extractThrowsClassType(extractOptionalList(throws,1)),body:body,returnType2:null,constructor:!0,extraDimensions:0}},peg$c22=function(id,gen,ext,body){return{node:"TypeDeclaration",name:id,superInterfaceTypes:extractOptionalList(ext,1),superclassType:null,bodyDeclarations:body,typeParameters:optionalList(gen),"interface":!0}},peg$c23=function(type,id,rest){return"FieldDeclaration"===rest.node?(rest.fragments[0].name=id,mergeProps(rest,{type:type})):mergeProps(rest,{returnType2:type,name:id,typeParameters:[]})},peg$c24=function(rest){return{node:"FieldDeclaration",fragments:rest}},peg$c25=function(params,dims,throws){return{node:"MethodDeclaration",parameters:params,thrownExceptions:extractThrowsClassType(extractOptionalList(throws,1)),extraDimensions:dims.length,body:null,constructor:!1}},peg$c26=function(params){return makePrimitive("void")},peg$c27=function(params,type,id,rest){return mergeProps(rest,{returnType2:type,name:id,typeParameters:params})},peg$c28=function(params,throws){return{node:"MethodDeclaration",parameters:params,thrownExceptions:extractThrowsClassType(extractOptionalList(throws,1)),returnType2:makePrimitive("void"),extraDimensions:0,typeParameters:[],body:null,constructor:!1}},peg$c29=function(first,rest){return buildList(first,rest,1)},peg$c30=function(dims,init){return{node:"VariableDeclarationFragment",extraDimensions:dims.length,initializer:init}},peg$c31=function(name,impl,eb){return mergeProps(eb,{node:"EnumDeclaration",name:name,superInterfaceTypes:extractOptionalList(impl,1)})},peg$c32=function(consts,body){return{enumConstants:optionalList(consts),bodyDeclarations:optionalList(body)}},peg$c33=function(annot,name,args,cls){return{node:"EnumConstantDeclaration",anonymousClassDeclaration:null===cls?null:{node:"AnonymousClassDeclaration",bodyDeclarations:cls},arguments:optionalList(args),modifiers:annot,name:name}},peg$c34=function(decl){return decl},peg$c35=function(){return makeModifier("final")},peg$c36=function(modifiers,type,decls){return{node:"VariableDeclarationStatement",fragments:decls,modifiers:modifiers,type:type}},peg$c37=function(name,dims,init){return{node:"VariableDeclarationFragment",name:name,extraDimensions:dims.length,initializer:extractOptional(init,1)}},peg$c38=function(params){return optionalList(params)},peg$c39=function(modifiers,type,decl){return mergeProps(decl,{type:type,modifiers:modifiers,varargs:!1,initializer:null})},peg$c40=function(modifiers,type,decl){return mergeProps(decl,{type:type,modifiers:modifiers,varargs:!0,initializer:null})},peg$c41=function(first,rest,last){return buildList(first,rest,1).concat(extractOptionalList(last,1))},peg$c42=function(last){return[last]},peg$c43=function(id,dims){return{node:"SingleVariableDeclaration",name:id,extraDimensions:dims.length}},peg$c44=function(statements){return{node:"Block",statements:statements}},peg$c45=function(modifiers,decl){return{node:"TypeDeclarationStatement",declaration:mergeProps(decl,{modifiers:modifiers})}},peg$c46=function(expr,message){return{node:"AssertStatement",expression:expr,message:extractOptional(message,1)}},peg$c47=function(expr,then,alt){return{node:"IfStatement",elseStatement:extractOptional(alt,1),thenStatement:then,expression:expr.expression}},peg$c48=function(init,expr,up,body){return{node:"ForStatement",initializers:optionalList(init),expression:expr,updaters:optionalList(up),body:body}},peg$c49=function(param,expr,statement){return{node:"EnhancedForStatement",parameter:param,expression:expr,body:statement}},peg$c50=function(expr,body){return{node:"WhileStatement",expression:expr.expression,body:body}},peg$c51=function(statement,expr){return{node:"DoStatement",expression:expr.expression,body:statement}},peg$c52=function(first,rest,body,cat,fin){return mergeProps(makeCatchFinally(cat,fin),{node:"TryStatement",body:body,resources:buildList(first,rest,1)})},peg$c53=function(body,cat,fin){return makeCatchFinally(cat,fin)},peg$c54=function(body,fin){return makeCatchFinally([],fin)},peg$c55=function(body,rest){return mergeProps(rest,{node:"TryStatement",body:body,resources:[]})},peg$c56=function(expr,cases){return{node:"SwitchStatement",statements:cases,expression:expr.expression}},peg$c57=function(expr,body){return{node:"SynchronizedStatement",expression:expr.expression,body:body}},peg$c58=function(expr){return{node:"ReturnStatement",expression:expr}},peg$c59=function(expr){return{node:"ThrowStatement",expression:expr}},peg$c60=function(id){return{node:"BreakStatement",label:id}},peg$c61=function(id){return{node:"ContinueStatement",label:id}},peg$c62=function(){return{node:"EmptyStatement"}},peg$c63=function(statement){return statement},peg$c64=function(id,statement){return{node:"LabeledStatement",label:id,body:statement}},peg$c65=function(modifiers,type,decl,expr){var fragment=mergeProps(decl,{initializer:expr});return fragment.node="VariableDeclarationFragment",{node:"VariableDeclarationExpression",modifiers:modifiers,type:type,fragments:[fragment]}},peg$c66=function(modifiers,first,rest,decl,body){return{node:"CatchClause",body:body,exception:mergeProps(decl,{modifiers:modifiers,initializer:null,varargs:!1,type:rest.length?{node:"UnionType",types:buildList(first,rest,1)}:first})}},peg$c67=function(block){return block},peg$c68=function(blocks){return[].concat.apply([],blocks)},peg$c69=function(expr,blocks){return[{node:"SwitchCase",expression:expr}].concat(blocks)},peg$c70=function(expr){return expr},peg$c71=function(modifiers,type,decls){return[{node:"VariableDeclarationExpression",modifiers:modifiers,fragments:decls,type:type}]},peg$c72=function(first,rest){return extractExpressions(buildList(first,rest,1))},peg$c73=function(expr){switch(expr.node){case"SuperConstructorInvocation":case"ConstructorInvocation":return expr;default:return{node:"ExpressionStatement",expression:expr}}},peg$c74=function(left,op,right){return{node:"Assignment",operator:op[0],leftHandSide:left,rightHandSide:right}},peg$c75=function(expr,then,alt){return{node:"ConditionalExpression",expression:expr,thenExpression:then,elseExpression:alt}},peg$c76=function(first,rest){return buildInfixExpr(first,rest)},peg$c77=function(first,rest){return buildTree(first,rest,function(result,element){return"instanceof"===element[0][0]?{node:"InstanceofExpression",leftOperand:result,rightOperand:element[1]}:{node:"InfixExpression",operator:element[0][0],leftOperand:result,rightOperand:element[1]}})},peg$c78=function(operator,operand){return"NumberLiteral"!==operand.node||"-"!==operator||"9223372036854775808L"!==operand.token&&"9223372036854775808l"!==operand.token&&"2147483648"!==operand.token?{node:"PrefixExpression",operator:operator,operand:operand}:{node:"NumberLiteral",token:text()}},peg$c79=function(expr){return{node:"CastExpression",type:expr[1],expression:expr[3]}},peg$c80=function(arg,sel,sels,operator){return operator.length>1?TODO():{node:"PostfixExpression",operator:operator[0],operand:buildSelectorTree(arg,sel,sels)}},peg$c81=function(arg,sel,sels){return buildSelectorTree(arg,sel,sels)},peg$c82=function(arg,operator){return operator.length>1?TODO():{node:"PostfixExpression",operator:operator[0],operand:arg}},peg$c83=function(args){return{node:"ConstructorInvocation",arguments:args,typeArguments:[]}},peg$c84=function(args,ret){return ret.typeArguments.length?TODO():(ret.typeArguments=args,ret)},peg$c85=function(args){return null===args?{node:"ThisExpression",qualifier:null}:{node:"ConstructorInvocation",arguments:args,typeArguments:[]}},peg$c86=function(suffix){return"SuperConstructorInvocation"===suffix.node?suffix:mergeProps(suffix,{qualifier:null})},peg$c87=function(creator){return creator},peg$c88=function(type,dims){return{node:"TypeLiteral",type:buildArrayTree(type,dims)}},peg$c89=function(){return{node:"TypeLiteral",type:makePrimitive("void")}},peg$c90=function(qual,dims){return{node:"TypeLiteral",type:buildArrayTree(buildTypeName(qual,null,[]),dims)}},peg$c91=function(qual,expr){return{node:"ArrayAccess",array:qual,index:expr}},peg$c92=function(qual,args){return mergeProps(popQualified(qual),{node:"MethodInvocation",arguments:args,typeArguments:[]})},peg$c93=function(qual){return{node:"TypeLiteral",type:buildTypeName(qual,null,[])}},peg$c94=function(qual,ret){return ret.expression?TODO():(ret.expression=qual,ret)},peg$c95=function(qual){return{node:"ThisExpression",qualifier:qual}},peg$c96=function(qual,args){return{node:"SuperConstructorInvocation",arguments:args,expression:qual,typeArguments:[]}},peg$c97=function(qual,args,rest){return mergeProps(rest,{expression:qual,typeArguments:optionalList(args)})},peg$c98=function(){return[]},peg$c99=function(suffix){return suffix},peg$c100=function(id,args){return{node:"MethodInvocation",arguments:args,name:id,typeArguments:[]}},peg$c101=function(op){return op[0]},peg$c102=function(id){return{node:"FieldAccess",name:id}},peg$c103=function(ret){return ret},peg$c104=function(){return TODO()},peg$c105=function(args,ret){return mergeProps(ret,{typeArguments:optionalList(args)})},peg$c106=function(expr){return{node:"ArrayAccess",index:expr}},peg$c107=function(args){return{node:"SuperConstructorInvocation",arguments:args,expression:null,typeArguments:[]}},peg$c108=function(gen,id,args){return null===args?{node:"SuperFieldAccess",name:id}:{node:"SuperMethodInvocation",typeArguments:optionalList(gen),name:id,arguments:args}},peg$c109="byte",peg$c110={type:"literal",value:"byte",description:'"byte"'},peg$c111="short",peg$c112={type:"literal",value:"short",description:'"short"'},peg$c113="char",peg$c114={type:"literal",value:"char",description:'"char"'},peg$c115="int",peg$c116={type:"literal",value:"int",description:'"int"'},peg$c117="long",peg$c118={type:"literal",value:"long",description:'"long"'},peg$c119="float",peg$c120={type:"literal",value:"float",description:'"float"'},peg$c121="double",peg$c122={type:"literal",value:"double",description:'"double"'},peg$c123="boolean",peg$c124={type:"literal",value:"boolean",description:'"boolean"'},peg$c125=function(type){return makePrimitive(type)},peg$c126=function(args){return optionalList(args)},peg$c127=function(type,rest){return{node:"ArrayCreation",type:buildArrayTree(type,rest.extraDims),initializer:rest.init,dimensions:rest.dimms}},peg$c128=function(args,type,rest){return mergeProps(rest,{node:"ClassInstanceCreation",type:type,typeArguments:optionalList(args),expression:null})},peg$c129=function(qual,args,rest){return buildTypeName(qual,args,rest)},peg$c130=function(id,args,rest){return mergeProps(rest,{node:"ClassInstanceCreation",type:buildTypeName(id,args,[])})},peg$c131=function(args,body){return{arguments:args,anonymousClassDeclaration:null===body?null:{node:"AnonymousClassDeclaration",bodyDeclarations:body}}},peg$c132=function(dims,init){return{extraDims:dims,init:init,dimms:[]}},peg$c133=function(dimexpr,dims){return{extraDims:dimexpr.concat(dims),init:null,dimms:dimexpr}},peg$c134=function(dim){return{extraDims:[dim],init:null,dimms:[]}},peg$c135=function(init){return{node:"ArrayInitializer",expressions:optionalList(init)}},peg$c136=function(expr){return{node:"ParenthesizedExpression",expression:expr}},peg$c137=function(first,rest){return buildQualified(first,rest,1)},peg$c138=function(exp){return exp},peg$c139=function(type,dims){return buildArrayTree(type,dims)},peg$c140=function(bas,dims){return buildArrayTree(bas,dims)},peg$c141=function(cls,dims){return buildArrayTree(cls,dims)},peg$c142=function(){return!0},peg$c143=function(){return!1},peg$c144=function(rest){return{node:"WildcardType",upperBound:extractOptional(rest,0,!0),bound:extractOptional(rest,1)}},peg$c145=function(id,bounds){return{node:"TypeParameter",name:id,typeBounds:extractOptionalList(bounds,1)}},peg$c146="public",peg$c147={type:"literal",value:"public",description:'"public"'},peg$c148="protected",peg$c149={type:"literal",value:"protected",description:'"protected"'},peg$c150="private",peg$c151={type:"literal",value:"private",description:'"private"'},peg$c152="static",peg$c153={type:"literal",value:"static",description:'"static"'},peg$c154="abstract",peg$c155={type:"literal",value:"abstract",description:'"abstract"'},peg$c156="final",peg$c157={type:"literal",value:"final",description:'"final"'},peg$c158="native",peg$c159={type:"literal",value:"native",description:'"native"'},peg$c160="synchronized",peg$c161={type:"literal",value:"synchronized",description:'"synchronized"'},peg$c162="transient",peg$c163={type:"literal",value:"transient",description:'"transient"'},peg$c164="volatile",peg$c165={type:"literal",value:"volatile",description:'"volatile"'},peg$c166="strictfp",peg$c167={type:"literal",value:"strictfp",description:'"strictfp"'},peg$c168=function(keyword){return makeModifier(keyword)},peg$c169=function(id,body){return{node:"AnnotationTypeDeclaration",name:id,bodyDeclarations:body}},peg$c170=function(decl){return skipNulls(decl)},peg$c171=function(modifiers,rest){return mergeProps(rest,{modifiers:modifiers})},peg$c172=function(type,rest){return mergeProps(rest,{type:type})},peg$c173=function(id,def){return{node:"AnnotationTypeMemberDeclaration",name:id,"default":def}},peg$c174=function(fragments){return{node:"FieldDeclaration",fragments:fragments}},peg$c175=function(val){return val},peg$c176=function(id,pairs){return{node:"NormalAnnotation",typeName:id,values:optionalList(pairs)}},peg$c177=function(id,value){return{node:"SingleMemberAnnotation",typeName:id,value:value}},peg$c178=function(id){return{node:"MarkerAnnotation",typeName:id}},peg$c179=function(name,value){return{node:"MemberValuePair",name:name,value:value}},peg$c180=function(values){return{node:"ArrayInitializer",expressions:optionalList(values)}},peg$c181=/^[ \t\r\n\f]/,peg$c182={type:"class",value:"[ \\t\\r\\n\\u000C]",description:"[ \\t\\r\\n\\u000C]"},peg$c183="/*",peg$c184={type:"literal",value:"/*",description:'"/*"'},peg$c185="*/",peg$c186={type:"literal",value:"*/",description:'"*/"'},peg$c187="//",peg$c188={type:"literal",value:"//",description:'"//"'},peg$c189=/^[\r\n]/,peg$c190={type:"class",value:"[\\r\\n]",description:"[\\r\\n]"},peg$c191=function(first,rest){return{identifier:first+rest,node:"SimpleName"}},peg$c192=/^[a-z]/,peg$c193={type:"class",value:"[a-z]",description:"[a-z]"},peg$c194=/^[A-Z]/,peg$c195={type:"class",value:"[A-Z]",description:"[A-Z]"},peg$c196=/^[_$]/,peg$c197={type:"class",value:"[_$]",description:"[_$]"},peg$c198=/^[0-9]/,peg$c199={type:"class",value:"[0-9]",description:"[0-9]"},peg$c200="assert",peg$c201={type:"literal",value:"assert",description:'"assert"'},peg$c202="break",peg$c203={type:"literal",value:"break",description:'"break"'},peg$c204="case",peg$c205={type:"literal",value:"case",description:'"case"'},peg$c206="catch",peg$c207={type:"literal",value:"catch",description:'"catch"'},peg$c208="class",peg$c209={type:"literal",value:"class",description:'"class"'},peg$c210="const",peg$c211={type:"literal",value:"const",description:'"const"'},peg$c212="continue",peg$c213={type:"literal",value:"continue",description:'"continue"'},peg$c214="default",peg$c215={type:"literal",value:"default",description:'"default"'},peg$c216="do",peg$c217={type:"literal",value:"do",description:'"do"'},peg$c218="else",peg$c219={type:"literal",value:"else",description:'"else"'},peg$c220="enum",peg$c221={type:"literal",value:"enum",description:'"enum"'},peg$c222="extends",peg$c223={type:"literal",value:"extends",description:'"extends"'},peg$c224="false",peg$c225={type:"literal",value:"false",description:'"false"'},peg$c226="finally",peg$c227={type:"literal",value:"finally",description:'"finally"'},peg$c228="for",peg$c229={type:"literal",value:"for",description:'"for"'},peg$c230="goto",peg$c231={type:"literal",value:"goto",description:'"goto"'},peg$c232="if",peg$c233={type:"literal",value:"if",description:'"if"'},peg$c234="implements",peg$c235={type:"literal",value:"implements",description:'"implements"'},peg$c236="import",peg$c237={type:"literal",value:"import",description:'"import"'},peg$c238="interface",peg$c239={type:"literal",value:"interface",description:'"interface"'},peg$c240="instanceof",peg$c241={type:"literal",value:"instanceof",description:'"instanceof"'},peg$c242="new",peg$c243={type:"literal",value:"new",description:'"new"'},peg$c244="null",peg$c245={type:"literal",value:"null",description:'"null"'},peg$c246="package",peg$c247={type:"literal",value:"package",description:'"package"'},peg$c248="return",peg$c249={type:"literal",value:"return",description:'"return"'},peg$c250="super",peg$c251={type:"literal",value:"super",description:'"super"'},peg$c252="switch",peg$c253={type:"literal",value:"switch",description:'"switch"'},peg$c254="this",peg$c255={type:"literal",value:"this",description:'"this"'},peg$c256="throws",peg$c257={type:"literal",value:"throws",description:'"throws"'},peg$c258="throw",peg$c259={type:"literal",value:"throw",description:'"throw"'},peg$c260="true",peg$c261={type:"literal",value:"true",description:'"true"'},peg$c262="try",peg$c263={type:"literal",value:"try",description:'"try"'},peg$c264="void",peg$c265={type:"literal",value:"void",description:'"void"'},peg$c266="while",peg$c267={type:"literal",value:"while",description:'"while"'},peg$c268=function(){return{node:"BooleanLiteral",booleanValue:!0}},peg$c269=function(){return{node:"BooleanLiteral",booleanValue:!1}},peg$c270=function(){return{node:"NullLiteral"}},peg$c271=function(literal){return literal},peg$c272=/^[lL]/,peg$c273={type:"class",value:"[lL]",description:"[lL]"},peg$c274=function(){return{node:"NumberLiteral",token:text()}},peg$c275="0",peg$c276={type:"literal",value:"0",description:'"0"'},peg$c277=/^[1-9]/,peg$c278={type:"class",value:"[1-9]",description:"[1-9]"},peg$c279=/^[_]/,peg$c280={type:"class",value:"[_]",description:"[_]"},peg$c281="0x",peg$c282={type:"literal",value:"0x",description:'"0x"'},peg$c283="0X",peg$c284={type:"literal",value:"0X",description:'"0X"'},peg$c285="0b",peg$c286={type:"literal",value:"0b",description:'"0b"'},peg$c287="0B",peg$c288={type:"literal",value:"0B",description:'"0B"'},peg$c289=/^[01]/,peg$c290={type:"class",value:"[01]",description:"[01]"},peg$c291=/^[0-7]/,peg$c292={type:"class",value:"[0-7]",description:"[0-7]"},peg$c293=".",peg$c294={type:"literal",value:".",description:'"."'},peg$c295=/^[fFdD]/,peg$c296={type:"class",value:"[fFdD]",description:"[fFdD]"},peg$c297=/^[eE]/,peg$c298={type:"class",value:"[eE]",description:"[eE]"},peg$c299=/^[+\-]/,peg$c300={type:"class",value:"[+\\-]",description:"[+\\-]"},peg$c301=/^[pP]/,peg$c302={type:"class",value:"[pP]",description:"[pP]"},peg$c303=/^[a-f]/,peg$c304={type:"class",value:"[a-f]",description:"[a-f]"},peg$c305=/^[A-F]/,peg$c306={type:"class",value:"[A-F]",description:"[A-F]"},peg$c307="'",peg$c308={type:"literal",value:"'",description:'"\'"'},peg$c309=/^['\\\n\r]/,peg$c310={type:"class",value:"['\\\\\\n\\r]",description:"['\\\\\\n\\r]"},peg$c311=function(){return{node:"CharacterLiteral",escapedValue:text()}},peg$c312='"',peg$c313={type:"literal",value:'"',description:'"\\""'},peg$c314=/^["\\\n\r]/,peg$c315={type:"class",value:'["\\\\\\n\\r]',description:'["\\\\\\n\\r]'},peg$c316=function(){return{node:"StringLiteral",escapedValue:text()}},peg$c317="\\",peg$c318={type:"literal",value:"\\",description:'"\\\\"'},peg$c319=/^[btnfr"'\\]/,peg$c320={type:"class",value:"[btnfr\"'\\\\]",description:"[btnfr\"'\\\\]"},peg$c321=/^[0-3]/,peg$c322={type:"class",value:"[0-3]",description:"[0-3]"},peg$c323="u",peg$c324={type:"literal",value:"u",description:'"u"'},peg$c325="@",peg$c326={type:"literal",value:"@",description:'"@"'},peg$c327="&",peg$c328={type:"literal",value:"&",description:'"&"'},peg$c329=/^[=&]/,peg$c330={type:"class",value:"[=&]",description:"[=&]"},peg$c331="&&",peg$c332={type:"literal",value:"&&",description:'"&&"'},peg$c333="&=",peg$c334={type:"literal",value:"&=",description:'"&="'},peg$c335="!",peg$c336={type:"literal",value:"!",description:'"!"'},peg$c337="=",peg$c338={type:"literal",value:"=",description:'"="'},peg$c339=">>>",peg$c340={type:"literal",value:">>>",description:'">>>"'},peg$c341=">>>=",peg$c342={type:"literal",value:">>>=",description:'">>>="'},peg$c343=":",peg$c344={type:"literal",value:":",description:'":"'},peg$c345=",",peg$c346={type:"literal",value:",",description:'","'},peg$c347="--",peg$c348={type:"literal",value:"--",description:'"--"'},peg$c349="/",peg$c350={type:"literal",value:"/",description:'"/"'},peg$c351="/=",peg$c352={type:"literal",value:"/=",description:'"/="'},peg$c353="...",peg$c354={type:"literal",value:"...",description:'"..."'},peg$c355="==",peg$c356={type:"literal",value:"==",description:'"=="'},peg$c357=">=",peg$c358={type:"literal",value:">=",description:'">="'},peg$c359=">",peg$c360={type:"literal",value:">",description:'">"'},peg$c361=/^[=>]/,peg$c362={type:"class",value:"[=>]",description:"[=>]"},peg$c363="^",peg$c364={type:"literal",value:"^",description:'"^"'},peg$c365="^=",peg$c366={type:"literal",value:"^=",description:'"^="'},peg$c367="++",peg$c368={type:"literal",value:"++",description:'"++"'},peg$c369="[",peg$c370={type:"literal",value:"[",description:'"["'},peg$c371="<=",peg$c372={type:"literal",value:"<=",description:'"<="'},peg$c373="(",peg$c374={type:"literal",value:"(",description:'"("'},peg$c375="<",peg$c376={type:"literal",value:"<",description:'"<"'},peg$c377=/^[=<]/,peg$c378={type:"class",value:"[=<]",description:"[=<]"},peg$c379="{",peg$c380={type:"literal",value:"{",description:'"{"'},peg$c381="-",peg$c382={type:"literal",value:"-",description:'"-"'},peg$c383=/^[=\-]/,peg$c384={type:"class",value:"[=\\-]",description:"[=\\-]"},peg$c385="-=",peg$c386={type:"literal",value:"-=",description:'"-="'},peg$c387="%",peg$c388={type:"literal",value:"%",description:'"%"'},peg$c389="%=",peg$c390={type:"literal",value:"%=",description:'"%="'},peg$c391="!=",peg$c392={type:"literal",value:"!=",description:'"!="'},peg$c393="|",peg$c394={type:"literal",value:"|",description:'"|"'},peg$c395=/^[=|]/,peg$c396={type:"class",value:"[=|]",description:"[=|]"},peg$c397="|=",peg$c398={type:"literal",value:"|=",description:'"|="'},peg$c399="||",peg$c400={type:"literal",value:"||",description:'"||"'},peg$c401="+",peg$c402={type:"literal",value:"+",description:'"+"'},peg$c403=/^[=+]/,peg$c404={type:"class",value:"[=+]",description:"[=+]"},peg$c405="+=",peg$c406={type:"literal",value:"+=",description:'"+="'},peg$c407="?",peg$c408={type:"literal",value:"?",description:'"?"'},peg$c409="]",peg$c410={type:"literal",value:"]",description:'"]"'},peg$c411=")",peg$c412={type:"literal",value:")",description:'")"'},peg$c413="}",peg$c414={type:"literal",value:"}",description:'"}"'},peg$c415=";",peg$c416={type:"literal",value:";",description:'";"'},peg$c417="<<",peg$c418={type:"literal",value:"<<",description:'"<<"'},peg$c419="<<=",peg$c420={type:"literal",value:"<<=",description:'"<<="'},peg$c421=">>",peg$c422={type:"literal",value:">>",description:'">>"'},peg$c423=">>=",peg$c424={type:"literal",value:">>=",description:'">>="'},peg$c425="*",peg$c426={type:"literal",value:"*",description:'"*"'},peg$c427="*=",peg$c428={type:"literal",value:"*=",description:'"*="'},peg$c429="~",peg$c430={type:"literal",value:"~",description:'"~"'},peg$c431={type:"any",description:"any character"},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1,seenCR:!1}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0;if("startRule"in options){if(!(options.startRule in peg$startRuleFunctions))throw new Error("Can't start parsing from rule \""+options.startRule+'".');peg$startRuleFunction=peg$startRuleFunctions[options.startRule]}if(peg$result=peg$startRuleFunction(),peg$result!==peg$FAILED&&peg$currPos===input.length)return peg$result;throw peg$result!==peg$FAILED&&peg$currPos<input.length&&peg$fail({type:"end",description:"end of input"}),peg$buildException(null,peg$maxFailExpected,peg$maxFailPos<input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos<input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos+1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos));
}return peg$subclass(peg$SyntaxError,Error),{SyntaxError:peg$SyntaxError,parse:peg$parse}}(),module.exports})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],27:[function(require,module,exports){(function(process){function normalizeArray(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];"."===last?parts.splice(i,1):".."===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up--;up)parts.unshift("..");return parts}function filter(xs,f){if(xs.filter)return xs.filter(f);for(var res=[],i=0;i<xs.length;i++)f(xs[i],i,xs)&&res.push(xs[i]);return res}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){for(var resolvedPath="",resolvedAbsolute=!1,i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if("string"!=typeof path)throw new TypeError("Arguments to path.resolve must be strings");path&&(resolvedPath=path+"/"+resolvedPath,resolvedAbsolute="/"===path.charAt(0))}return resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/"),(resolvedAbsolute?"/":"")+resolvedPath||"."},exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash="/"===substr(path,-1);return path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/"),path||isAbsolute||(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},exports.isAbsolute=function(path){return"/"===path.charAt(0)},exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if("string"!=typeof p)throw new TypeError("Arguments to path.join must be strings");return p}).join("/"))},exports.relative=function(from,to){function trim(arr){for(var start=0;start<arr.length&&""===arr[start];start++);for(var end=arr.length-1;end>=0&&""===arr[end];end--);return start>end?[]:arr.slice(start,end-start+1)}from=exports.resolve(from).substr(1),to=exports.resolve(to).substr(1);for(var fromParts=trim(from.split("/")),toParts=trim(to.split("/")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;length>i;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}for(var outputParts=[],i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");return outputParts=outputParts.concat(toParts.slice(samePartsLength)),outputParts.join("/")},exports.sep="/",exports.delimiter=":",exports.dirname=function(path){var result=splitPath(path),root=result[0],dir=result[1];return root||dir?(dir&&(dir=dir.substr(0,dir.length-1)),root+dir):"."},exports.basename=function(path,ext){var f=splitPath(path)[2];return ext&&f.substr(-1*ext.length)===ext&&(f=f.substr(0,f.length-ext.length)),f},exports.extname=function(path){return splitPath(path)[3]};var substr="b"==="ab".substr(-1)?function(str,start,len){return str.substr(start,len)}:function(str,start,len){return 0>start&&(start=str.length+start),str.substr(start,len)}}).call(this,require("_process"))},{_process:28}],28:[function(require,module,exports){function cleanUpNextTick(){draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue()}function drainQueue(){if(!draining){var timeout=setTimeout(cleanUpNextTick);draining=!0;for(var len=queue.length;len;){for(currentQueue=queue,queue=[];++queueIndex<len;)currentQueue&¤tQueue[queueIndex].run();queueIndex=-1,len=queue.length}currentQueue=null,draining=!1,clearTimeout(timeout)}}function Item(fun,array){this.fun=fun,this.array=array}function noop(){}var currentQueue,process=module.exports={},queue=[],draining=!1,queueIndex=-1;process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)args[i-1]=arguments[i];queue.push(new Item(fun,args)),1!==queue.length||draining||setTimeout(drainQueue,0)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title="browser",process.browser=!0,process.env={},process.argv=[],process.version="",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.binding=function(name){throw new Error("process.binding is not supported")},process.cwd=function(){return"/"},process.chdir=function(dir){throw new Error("process.chdir is not supported")},process.umask=function(){return 0}},{}],29:[function(require,module,exports){exports.SourceMapGenerator=require("./source-map/source-map-generator").SourceMapGenerator,exports.SourceMapConsumer=require("./source-map/source-map-consumer").SourceMapConsumer,exports.SourceNode=require("./source-map/source-node").SourceNode},{"./source-map/source-map-consumer":37,"./source-map/source-map-generator":38,"./source-map/source-node":39}],30:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function ArraySet(){this._array=[],this._set={}}var util=require("./util");ArraySet.fromArray=function(aArray,aAllowDuplicates){for(var set=new ArraySet,i=0,len=aArray.length;len>i;i++)set.add(aArray[i],aAllowDuplicates);return set},ArraySet.prototype.add=function(aStr,aAllowDuplicates){var isDuplicate=this.has(aStr),idx=this._array.length;isDuplicate&&!aAllowDuplicates||this._array.push(aStr),isDuplicate||(this._set[util.toSetString(aStr)]=idx)},ArraySet.prototype.has=function(aStr){return Object.prototype.hasOwnProperty.call(this._set,util.toSetString(aStr))},ArraySet.prototype.indexOf=function(aStr){if(this.has(aStr))return this._set[util.toSetString(aStr)];throw new Error('"'+aStr+'" is not in the set.')},ArraySet.prototype.at=function(aIdx){if(aIdx>=0&&aIdx<this._array.length)return this._array[aIdx];throw new Error("No element indexed by "+aIdx)},ArraySet.prototype.toArray=function(){return this._array.slice()},exports.ArraySet=ArraySet})},{"./util":40,amdefine:1}],31:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function toVLQSigned(aValue){return 0>aValue?(-aValue<<1)+1:(aValue<<1)+0}function fromVLQSigned(aValue){var isNegative=1===(1&aValue),shifted=aValue>>1;return isNegative?-shifted:shifted}var base64=require("./base64"),VLQ_BASE_SHIFT=5,VLQ_BASE=1<<VLQ_BASE_SHIFT,VLQ_BASE_MASK=VLQ_BASE-1,VLQ_CONTINUATION_BIT=VLQ_BASE;exports.encode=function(aValue){var digit,encoded="",vlq=toVLQSigned(aValue);do digit=vlq&VLQ_BASE_MASK,vlq>>>=VLQ_BASE_SHIFT,vlq>0&&(digit|=VLQ_CONTINUATION_BIT),encoded+=base64.encode(digit);while(vlq>0);return encoded},exports.decode=function(aStr,aOutParam){var continuation,digit,i=0,strLen=aStr.length,result=0,shift=0;do{if(i>=strLen)throw new Error("Expected more digits in base 64 VLQ value.");digit=base64.decode(aStr.charAt(i++)),continuation=!!(digit&VLQ_CONTINUATION_BIT),digit&=VLQ_BASE_MASK,result+=digit<<shift,shift+=VLQ_BASE_SHIFT}while(continuation);aOutParam.value=fromVLQSigned(result),aOutParam.rest=aStr.slice(i)}})},{"./base64":32,amdefine:1}],32:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){var charToIntMap={},intToCharMap={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach(function(ch,index){charToIntMap[ch]=index,intToCharMap[index]=ch}),exports.encode=function(aNumber){if(aNumber in intToCharMap)return intToCharMap[aNumber];throw new TypeError("Must be between 0 and 63: "+aNumber)},exports.decode=function(aChar){if(aChar in charToIntMap)return charToIntMap[aChar];throw new TypeError("Not a valid base 64 digit: "+aChar)}})},{amdefine:1}],33:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function BasicSourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;"string"==typeof aSourceMap&&(sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,"")));var version=util.getArg(sourceMap,"version"),sources=util.getArg(sourceMap,"sources"),names=util.getArg(sourceMap,"names",[]),sourceRoot=util.getArg(sourceMap,"sourceRoot",null),sourcesContent=util.getArg(sourceMap,"sourcesContent",null),mappings=util.getArg(sourceMap,"mappings"),file=util.getArg(sourceMap,"file",null);if(version!=this._version)throw new Error("Unsupported version: "+version);sources=sources.map(util.normalize),this._names=ArraySet.fromArray(names,!0),this._sources=ArraySet.fromArray(sources,!0),this.sourceRoot=sourceRoot,this.sourcesContent=sourcesContent,this._mappings=mappings,this.file=file}var util=require("./util"),binarySearch=require("./binary-search"),ArraySet=require("./array-set").ArraySet,base64VLQ=require("./base64-vlq"),SourceMapConsumer=require("./source-map-consumer").SourceMapConsumer;BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype),BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer,BasicSourceMapConsumer.fromSourceMap=function(aSourceMap){var smc=Object.create(BasicSourceMapConsumer.prototype);return smc._names=ArraySet.fromArray(aSourceMap._names.toArray(),!0),smc._sources=ArraySet.fromArray(aSourceMap._sources.toArray(),!0),smc.sourceRoot=aSourceMap._sourceRoot,smc.sourcesContent=aSourceMap._generateSourcesContent(smc._sources.toArray(),smc.sourceRoot),smc.file=aSourceMap._file,smc.__generatedMappings=aSourceMap._mappings.toArray().slice(),smc.__originalMappings=aSourceMap._mappings.toArray().slice().sort(util.compareByOriginalPositions),smc},BasicSourceMapConsumer.prototype._version=3,Object.defineProperty(BasicSourceMapConsumer.prototype,"sources",{get:function(){return this._sources.toArray().map(function(s){return null!=this.sourceRoot?util.join(this.sourceRoot,s):s},this)}}),BasicSourceMapConsumer.prototype._parseMappings=function(aStr,aSourceRoot){for(var mapping,generatedLine=1,previousGeneratedColumn=0,previousOriginalLine=0,previousOriginalColumn=0,previousSource=0,previousName=0,str=aStr,temp={};str.length>0;)if(";"===str.charAt(0))generatedLine++,str=str.slice(1),previousGeneratedColumn=0;else if(","===str.charAt(0))str=str.slice(1);else{if(mapping={},mapping.generatedLine=generatedLine,base64VLQ.decode(str,temp),mapping.generatedColumn=previousGeneratedColumn+temp.value,previousGeneratedColumn=mapping.generatedColumn,str=temp.rest,str.length>0&&!this._nextCharIsMappingSeparator(str)){if(base64VLQ.decode(str,temp),mapping.source=this._sources.at(previousSource+temp.value),previousSource+=temp.value,str=temp.rest,0===str.length||this._nextCharIsMappingSeparator(str))throw new Error("Found a source, but no line and column");if(base64VLQ.decode(str,temp),mapping.originalLine=previousOriginalLine+temp.value,previousOriginalLine=mapping.originalLine,mapping.originalLine+=1,str=temp.rest,0===str.length||this._nextCharIsMappingSeparator(str))throw new Error("Found a source and line, but no column");base64VLQ.decode(str,temp),mapping.originalColumn=previousOriginalColumn+temp.value,previousOriginalColumn=mapping.originalColumn,str=temp.rest,str.length>0&&!this._nextCharIsMappingSeparator(str)&&(base64VLQ.decode(str,temp),mapping.name=this._names.at(previousName+temp.value),previousName+=temp.value,str=temp.rest)}this.__generatedMappings.push(mapping),"number"==typeof mapping.originalLine&&this.__originalMappings.push(mapping)}this.__generatedMappings.sort(util.compareByGeneratedPositions),this.__originalMappings.sort(util.compareByOriginalPositions)},BasicSourceMapConsumer.prototype._findMapping=function(aNeedle,aMappings,aLineName,aColumnName,aComparator){if(aNeedle[aLineName]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+aNeedle[aLineName]);if(aNeedle[aColumnName]<0)throw new TypeError("Column must be greater than or equal to 0, got "+aNeedle[aColumnName]);return binarySearch.search(aNeedle,aMappings,aComparator)},BasicSourceMapConsumer.prototype.computeColumnSpans=function(){for(var index=0;index<this._generatedMappings.length;++index){var mapping=this._generatedMappings[index];if(index+1<this._generatedMappings.length){var nextMapping=this._generatedMappings[index+1];if(mapping.generatedLine===nextMapping.generatedLine){mapping.lastGeneratedColumn=nextMapping.generatedColumn-1;continue}}mapping.lastGeneratedColumn=1/0}},BasicSourceMapConsumer.prototype.originalPositionFor=function(aArgs){var needle={generatedLine:util.getArg(aArgs,"line"),generatedColumn:util.getArg(aArgs,"column")},index=this._findMapping(needle,this._generatedMappings,"generatedLine","generatedColumn",util.compareByGeneratedPositions);if(index>=0){var mapping=this._generatedMappings[index];if(mapping.generatedLine===needle.generatedLine){var source=util.getArg(mapping,"source",null);return null!=source&&null!=this.sourceRoot&&(source=util.join(this.sourceRoot,source)),{source:source,line:util.getArg(mapping,"originalLine",null),column:util.getArg(mapping,"originalColumn",null),name:util.getArg(mapping,"name",null)}}}return{source:null,line:null,column:null,name:null}},BasicSourceMapConsumer.prototype.sourceContentFor=function(aSource,nullOnMissing){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(aSource=util.relative(this.sourceRoot,aSource)),this._sources.has(aSource))return this.sourcesContent[this._sources.indexOf(aSource)];var url;if(null!=this.sourceRoot&&(url=util.urlParse(this.sourceRoot))){var fileUriAbsPath=aSource.replace(/^file:\/\//,"");if("file"==url.scheme&&this._sources.has(fileUriAbsPath))return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];if((!url.path||"/"==url.path)&&this._sources.has("/"+aSource))return this.sourcesContent[this._sources.indexOf("/"+aSource)]}if(nullOnMissing)return null;throw new Error('"'+aSource+'" is not in the SourceMap.')},BasicSourceMapConsumer.prototype.generatedPositionFor=function(aArgs){var needle={source:util.getArg(aArgs,"source"),originalLine:util.getArg(aArgs,"line"),originalColumn:util.getArg(aArgs,"column")};null!=this.sourceRoot&&(needle.source=util.relative(this.sourceRoot,needle.source));var index=this._findMapping(needle,this._originalMappings,"originalLine","originalColumn",util.compareByOriginalPositions);if(index>=0){var mapping=this._originalMappings[index];return{line:util.getArg(mapping,"generatedLine",null),column:util.getArg(mapping,"generatedColumn",null),lastColumn:util.getArg(mapping,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},exports.BasicSourceMapConsumer=BasicSourceMapConsumer})},{"./array-set":30,"./base64-vlq":31,"./binary-search":34,"./source-map-consumer":37,"./util":40,amdefine:1}],34:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare){var mid=Math.floor((aHigh-aLow)/2)+aLow,cmp=aCompare(aNeedle,aHaystack[mid],!0);return 0===cmp?mid:cmp>0?aHigh-mid>1?recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare):mid:mid-aLow>1?recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare):0>aLow?-1:aLow}exports.search=function(aNeedle,aHaystack,aCompare){return 0===aHaystack.length?-1:recursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare)}})},{amdefine:1}],35:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function IndexedSourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;"string"==typeof aSourceMap&&(sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,"")));var version=util.getArg(sourceMap,"version"),sections=util.getArg(sourceMap,"sections");if(version!=this._version)throw new Error("Unsupported version: "+version);var lastOffset={line:-1,column:0};this._sections=sections.map(function(s){if(s.url)throw new Error("Support for url field in sections not implemented.");var offset=util.getArg(s,"offset"),offsetLine=util.getArg(offset,"line"),offsetColumn=util.getArg(offset,"column");if(offsetLine<lastOffset.line||offsetLine===lastOffset.line&&offsetColumn<lastOffset.column)throw new Error("Section offsets must be ordered and non-overlapping.");return lastOffset=offset,{generatedOffset:{generatedLine:offsetLine+1,generatedColumn:offsetColumn+1},consumer:new SourceMapConsumer(util.getArg(s,"map"))}})}var util=require("./util"),binarySearch=require("./binary-search"),SourceMapConsumer=require("./source-map-consumer").SourceMapConsumer;require("./basic-source-map-consumer").BasicSourceMapConsumer;IndexedSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype),IndexedSourceMapConsumer.prototype.constructor=SourceMapConsumer,IndexedSourceMapConsumer.prototype._version=3,Object.defineProperty(IndexedSourceMapConsumer.prototype,"sources",{get:function(){for(var sources=[],i=0;i<this._sections.length;i++)for(var j=0;j<this._sections[i].consumer.sources.length;j++)sources.push(this._sections[i].consumer.sources[j]);return sources}}),IndexedSourceMapConsumer.prototype.originalPositionFor=function(aArgs){var needle={generatedLine:util.getArg(aArgs,"line"),generatedColumn:util.getArg(aArgs,"column")},sectionIndex=binarySearch.search(needle,this._sections,function(needle,section){var cmp=needle.generatedLine-section.generatedOffset.generatedLine;return cmp?cmp:needle.generatedColumn-section.generatedOffset.generatedColumn}),section=this._sections[sectionIndex];return section?section.consumer.originalPositionFor({line:needle.generatedLine-(section.generatedOffset.generatedLine-1),column:needle.generatedColumn-(section.generatedOffset.generatedLine===needle.generatedLine?section.generatedOffset.generatedColumn-1:0)}):{source:null,line:null,column:null,name:null}},IndexedSourceMapConsumer.prototype.sourceContentFor=function(aSource,nullOnMissing){for(var i=0;i<this._sections.length;i++){var section=this._sections[i],content=section.consumer.sourceContentFor(aSource,!0);if(content)return content}if(nullOnMissing)return null;throw new Error('"'+aSource+'" is not in the SourceMap.')},IndexedSourceMapConsumer.prototype.generatedPositionFor=function(aArgs){for(var i=0;i<this._sections.length;i++){var section=this._sections[i];if(-1!==section.consumer.sources.indexOf(util.getArg(aArgs,"source"))){var generatedPosition=section.consumer.generatedPositionFor(aArgs);if(generatedPosition){var ret={line:generatedPosition.line+(section.generatedOffset.generatedLine-1),column:generatedPosition.column+(section.generatedOffset.generatedLine===generatedPosition.line?section.generatedOffset.generatedColumn-1:0)};return ret}}}return{line:null,column:null}},IndexedSourceMapConsumer.prototype._parseMappings=function(aStr,aSourceRoot){this.__generatedMappings=[],this.__originalMappings=[];for(var i=0;i<this._sections.length;i++)for(var section=this._sections[i],sectionMappings=section.consumer._generatedMappings,j=0;j<sectionMappings.length;j++){var mapping=sectionMappings[i],source=mapping.source,sourceRoot=section.consumer.sourceRoot;null!=source&&null!=sourceRoot&&(source=util.join(sourceRoot,source));var adjustedMapping={source:source,generatedLine:mapping.generatedLine+(section.generatedOffset.generatedLine-1),generatedColumn:mapping.column+(section.generatedOffset.generatedLine===mapping.generatedLine)?section.generatedOffset.generatedColumn-1:0,originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:mapping.name};this.__generatedMappings.push(adjustedMapping),"number"==typeof adjustedMapping.originalLine&&this.__originalMappings.push(adjustedMapping)}this.__generatedMappings.sort(util.compareByGeneratedPositions),this.__originalMappings.sort(util.compareByOriginalPositions)},exports.IndexedSourceMapConsumer=IndexedSourceMapConsumer})},{"./basic-source-map-consumer":33,"./binary-search":34,"./source-map-consumer":37,"./util":40,amdefine:1}],36:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function generatedPositionAfter(mappingA,mappingB){var lineA=mappingA.generatedLine,lineB=mappingB.generatedLine,columnA=mappingA.generatedColumn,columnB=mappingB.generatedColumn;return lineB>lineA||lineB==lineA&&columnB>=columnA||util.compareByGeneratedPositions(mappingA,mappingB)<=0}function MappingList(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var util=require("./util");MappingList.prototype.unsortedForEach=function(aCallback,aThisArg){this._array.forEach(aCallback,aThisArg)},MappingList.prototype.add=function(aMapping){generatedPositionAfter(this._last,aMapping)?(this._last=aMapping,this._array.push(aMapping)):(this._sorted=!1,this._array.push(aMapping))},MappingList.prototype.toArray=function(){return this._sorted||(this._array.sort(util.compareByGeneratedPositions),this._sorted=!0),this._array},exports.MappingList=MappingList})},{"./util":40,amdefine:1}],37:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function SourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;if("string"==typeof aSourceMap&&(sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,""))),null!=sourceMap.sections){var indexedSourceMapConsumer=require("./indexed-source-map-consumer");return new indexedSourceMapConsumer.IndexedSourceMapConsumer(sourceMap)}var basicSourceMapConsumer=require("./basic-source-map-consumer");return new basicSourceMapConsumer.BasicSourceMapConsumer(sourceMap)}var util=require("./util");SourceMapConsumer.fromSourceMap=function(aSourceMap){var basicSourceMapConsumer=require("./basic-source-map-consumer");return basicSourceMapConsumer.BasicSourceMapConsumer.fromSourceMap(aSourceMap)},SourceMapConsumer.prototype._version=3,SourceMapConsumer.prototype.__generatedMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__generatedMappings}}),SourceMapConsumer.prototype.__originalMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{get:function(){return this.__originalMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__originalMappings}}),SourceMapConsumer.prototype._nextCharIsMappingSeparator=function(aStr){var c=aStr.charAt(0);return";"===c||","===c},SourceMapConsumer.prototype._parseMappings=function(aStr,aSourceRoot){throw new Error("Subclasses must implement _parseMappings")},SourceMapConsumer.GENERATED_ORDER=1,SourceMapConsumer.ORIGINAL_ORDER=2,SourceMapConsumer.prototype.eachMapping=function(aCallback,aContext,aOrder){var mappings,context=aContext||null,order=aOrder||SourceMapConsumer.GENERATED_ORDER;switch(order){case SourceMapConsumer.GENERATED_ORDER:mappings=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:mappings=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var sourceRoot=this.sourceRoot;mappings.map(function(mapping){var source=mapping.source;return null!=source&&null!=sourceRoot&&(source=util.join(sourceRoot,source)),{source:source,generatedLine:mapping.generatedLine,generatedColumn:mapping.generatedColumn,originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:mapping.name}}).forEach(aCallback,context)},SourceMapConsumer.prototype.allGeneratedPositionsFor=function(aArgs){var needle={source:util.getArg(aArgs,"source"),originalLine:util.getArg(aArgs,"line"),originalColumn:1/0};null!=this.sourceRoot&&(needle.source=util.relative(this.sourceRoot,needle.source));var mappings=[],index=this._findMapping(needle,this._originalMappings,"originalLine","originalColumn",util.compareByOriginalPositions);if(index>=0)for(var mapping=this._originalMappings[index];mapping&&mapping.originalLine===needle.originalLine;)mappings.push({line:util.getArg(mapping,"generatedLine",null),column:util.getArg(mapping,"generatedColumn",null),lastColumn:util.getArg(mapping,"lastGeneratedColumn",null)}),mapping=this._originalMappings[--index];return mappings.reverse()},exports.SourceMapConsumer=SourceMapConsumer})},{"./basic-source-map-consumer":33,"./indexed-source-map-consumer":35,"./util":40,amdefine:1}],38:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function SourceMapGenerator(aArgs){aArgs||(aArgs={}),this._file=util.getArg(aArgs,"file",null),this._sourceRoot=util.getArg(aArgs,"sourceRoot",null),this._skipValidation=util.getArg(aArgs,"skipValidation",!1),this._sources=new ArraySet,this._names=new ArraySet,this._mappings=new MappingList,this._sourcesContents=null}var base64VLQ=require("./base64-vlq"),util=require("./util"),ArraySet=require("./array-set").ArraySet,MappingList=require("./mapping-list").MappingList;SourceMapGenerator.prototype._version=3,SourceMapGenerator.fromSourceMap=function(aSourceMapConsumer){var sourceRoot=aSourceMapConsumer.sourceRoot,generator=new SourceMapGenerator({file:aSourceMapConsumer.file,sourceRoot:sourceRoot});return aSourceMapConsumer.eachMapping(function(mapping){var newMapping={generated:{line:mapping.generatedLine,column:mapping.generatedColumn}};null!=mapping.source&&(newMapping.source=mapping.source,null!=sourceRoot&&(newMapping.source=util.relative(sourceRoot,newMapping.source)),newMapping.original={line:mapping.originalLine,column:mapping.originalColumn},null!=mapping.name&&(newMapping.name=mapping.name)),generator.addMapping(newMapping)}),aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);null!=content&&generator.setSourceContent(sourceFile,content)}),generator},SourceMapGenerator.prototype.addMapping=function(aArgs){var generated=util.getArg(aArgs,"generated"),original=util.getArg(aArgs,"original",null),source=util.getArg(aArgs,"source",null),name=util.getArg(aArgs,"name",null);this._skipValidation||this._validateMapping(generated,original,source,name),null==source||this._sources.has(source)||this._sources.add(source),null==name||this._names.has(name)||this._names.add(name),this._mappings.add({generatedLine:generated.line,generatedColumn:generated.column,originalLine:null!=original&&original.line,originalColumn:null!=original&&original.column,source:source,name:name})},SourceMapGenerator.prototype.setSourceContent=function(aSourceFile,aSourceContent){var source=aSourceFile;null!=this._sourceRoot&&(source=util.relative(this._sourceRoot,source)),null!=aSourceContent?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[util.toSetString(source)]=aSourceContent):this._sourcesContents&&(delete this._sourcesContents[util.toSetString(source)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},SourceMapGenerator.prototype.applySourceMap=function(aSourceMapConsumer,aSourceFile,aSourceMapPath){var sourceFile=aSourceFile;if(null==aSourceFile){if(null==aSourceMapConsumer.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');sourceFile=aSourceMapConsumer.file}var sourceRoot=this._sourceRoot;null!=sourceRoot&&(sourceFile=util.relative(sourceRoot,sourceFile));var newSources=new ArraySet,newNames=new ArraySet;this._mappings.unsortedForEach(function(mapping){if(mapping.source===sourceFile&&null!=mapping.originalLine){var original=aSourceMapConsumer.originalPositionFor({line:mapping.originalLine,column:mapping.originalColumn});null!=original.source&&(mapping.source=original.source,null!=aSourceMapPath&&(mapping.source=util.join(aSourceMapPath,mapping.source)),null!=sourceRoot&&(mapping.source=util.relative(sourceRoot,mapping.source)),mapping.originalLine=original.line,mapping.originalColumn=original.column,null!=original.name&&(mapping.name=original.name))}var source=mapping.source;null==source||newSources.has(source)||newSources.add(source);var name=mapping.name;null==name||newNames.has(name)||newNames.add(name)},this),this._sources=newSources,this._names=newNames,aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);null!=content&&(null!=aSourceMapPath&&(sourceFile=util.join(aSourceMapPath,sourceFile)),null!=sourceRoot&&(sourceFile=util.relative(sourceRoot,sourceFile)),this.setSourceContent(sourceFile,content))},this)},SourceMapGenerator.prototype._validateMapping=function(aGenerated,aOriginal,aSource,aName){if((!(aGenerated&&"line"in aGenerated&&"column"in aGenerated&&aGenerated.line>0&&aGenerated.column>=0)||aOriginal||aSource||aName)&&!(aGenerated&&"line"in aGenerated&&"column"in aGenerated&&aOriginal&&"line"in aOriginal&&"column"in aOriginal&&aGenerated.line>0&&aGenerated.column>=0&&aOriginal.line>0&&aOriginal.column>=0&&aSource))throw new Error("Invalid mapping: "+JSON.stringify({generated:aGenerated,source:aSource,original:aOriginal,name:aName}))},SourceMapGenerator.prototype._serializeMappings=function(){for(var mapping,previousGeneratedColumn=0,previousGeneratedLine=1,previousOriginalColumn=0,previousOriginalLine=0,previousName=0,previousSource=0,result="",mappings=this._mappings.toArray(),i=0,len=mappings.length;len>i;i++){if(mapping=mappings[i],mapping.generatedLine!==previousGeneratedLine)for(previousGeneratedColumn=0;mapping.generatedLine!==previousGeneratedLine;)result+=";",previousGeneratedLine++;else if(i>0){if(!util.compareByGeneratedPositions(mapping,mappings[i-1]))continue;result+=","}result+=base64VLQ.encode(mapping.generatedColumn-previousGeneratedColumn),previousGeneratedColumn=mapping.generatedColumn,null!=mapping.source&&(result+=base64VLQ.encode(this._sources.indexOf(mapping.source)-previousSource),previousSource=this._sources.indexOf(mapping.source),result+=base64VLQ.encode(mapping.originalLine-1-previousOriginalLine),previousOriginalLine=mapping.originalLine-1,result+=base64VLQ.encode(mapping.originalColumn-previousOriginalColumn),previousOriginalColumn=mapping.originalColumn,null!=mapping.name&&(result+=base64VLQ.encode(this._names.indexOf(mapping.name)-previousName),previousName=this._names.indexOf(mapping.name)))}return result},SourceMapGenerator.prototype._generateSourcesContent=function(aSources,aSourceRoot){return aSources.map(function(source){if(!this._sourcesContents)return null;null!=aSourceRoot&&(source=util.relative(aSourceRoot,source));var key=util.toSetString(source);return Object.prototype.hasOwnProperty.call(this._sourcesContents,key)?this._sourcesContents[key]:null},this)},SourceMapGenerator.prototype.toJSON=function(){var map={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(map.file=this._file),null!=this._sourceRoot&&(map.sourceRoot=this._sourceRoot),this._sourcesContents&&(map.sourcesContent=this._generateSourcesContent(map.sources,map.sourceRoot)),map},SourceMapGenerator.prototype.toString=function(){return JSON.stringify(this)},exports.SourceMapGenerator=SourceMapGenerator})},{"./array-set":30,"./base64-vlq":31,"./mapping-list":36,"./util":40,amdefine:1}],39:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function SourceNode(aLine,aColumn,aSource,aChunks,aName){this.children=[],this.sourceContents={},this.line=null==aLine?null:aLine,this.column=null==aColumn?null:aColumn,this.source=null==aSource?null:aSource,this.name=null==aName?null:aName,this[isSourceNode]=!0,null!=aChunks&&this.add(aChunks)}var SourceMapGenerator=require("./source-map-generator").SourceMapGenerator,util=require("./util"),REGEX_NEWLINE=/(\r?\n)/,NEWLINE_CODE=10,isSourceNode="$$$isSourceNode$$$";
SourceNode.fromStringWithSourceMap=function(aGeneratedCode,aSourceMapConsumer,aRelativePath){function addMappingWithCode(mapping,code){if(null===mapping||void 0===mapping.source)node.add(code);else{var source=aRelativePath?util.join(aRelativePath,mapping.source):mapping.source;node.add(new SourceNode(mapping.originalLine,mapping.originalColumn,source,code,mapping.name))}}var node=new SourceNode,remainingLines=aGeneratedCode.split(REGEX_NEWLINE),shiftNextLine=function(){var lineContents=remainingLines.shift(),newLine=remainingLines.shift()||"";return lineContents+newLine},lastGeneratedLine=1,lastGeneratedColumn=0,lastMapping=null;return aSourceMapConsumer.eachMapping(function(mapping){if(null!==lastMapping){if(!(lastGeneratedLine<mapping.generatedLine)){var nextLine=remainingLines[0],code=nextLine.substr(0,mapping.generatedColumn-lastGeneratedColumn);return remainingLines[0]=nextLine.substr(mapping.generatedColumn-lastGeneratedColumn),lastGeneratedColumn=mapping.generatedColumn,addMappingWithCode(lastMapping,code),void(lastMapping=mapping)}var code="";addMappingWithCode(lastMapping,shiftNextLine()),lastGeneratedLine++,lastGeneratedColumn=0}for(;lastGeneratedLine<mapping.generatedLine;)node.add(shiftNextLine()),lastGeneratedLine++;if(lastGeneratedColumn<mapping.generatedColumn){var nextLine=remainingLines[0];node.add(nextLine.substr(0,mapping.generatedColumn)),remainingLines[0]=nextLine.substr(mapping.generatedColumn),lastGeneratedColumn=mapping.generatedColumn}lastMapping=mapping},this),remainingLines.length>0&&(lastMapping&&addMappingWithCode(lastMapping,shiftNextLine()),node.add(remainingLines.join(""))),aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);null!=content&&(null!=aRelativePath&&(sourceFile=util.join(aRelativePath,sourceFile)),node.setSourceContent(sourceFile,content))}),node},SourceNode.prototype.add=function(aChunk){if(Array.isArray(aChunk))aChunk.forEach(function(chunk){this.add(chunk)},this);else{if(!aChunk[isSourceNode]&&"string"!=typeof aChunk)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk);aChunk&&this.children.push(aChunk)}return this},SourceNode.prototype.prepend=function(aChunk){if(Array.isArray(aChunk))for(var i=aChunk.length-1;i>=0;i--)this.prepend(aChunk[i]);else{if(!aChunk[isSourceNode]&&"string"!=typeof aChunk)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk);this.children.unshift(aChunk)}return this},SourceNode.prototype.walk=function(aFn){for(var chunk,i=0,len=this.children.length;len>i;i++)chunk=this.children[i],chunk[isSourceNode]?chunk.walk(aFn):""!==chunk&&aFn(chunk,{source:this.source,line:this.line,column:this.column,name:this.name})},SourceNode.prototype.join=function(aSep){var newChildren,i,len=this.children.length;if(len>0){for(newChildren=[],i=0;len-1>i;i++)newChildren.push(this.children[i]),newChildren.push(aSep);newChildren.push(this.children[i]),this.children=newChildren}return this},SourceNode.prototype.replaceRight=function(aPattern,aReplacement){var lastChild=this.children[this.children.length-1];return lastChild[isSourceNode]?lastChild.replaceRight(aPattern,aReplacement):"string"==typeof lastChild?this.children[this.children.length-1]=lastChild.replace(aPattern,aReplacement):this.children.push("".replace(aPattern,aReplacement)),this},SourceNode.prototype.setSourceContent=function(aSourceFile,aSourceContent){this.sourceContents[util.toSetString(aSourceFile)]=aSourceContent},SourceNode.prototype.walkSourceContents=function(aFn){for(var i=0,len=this.children.length;len>i;i++)this.children[i][isSourceNode]&&this.children[i].walkSourceContents(aFn);for(var sources=Object.keys(this.sourceContents),i=0,len=sources.length;len>i;i++)aFn(util.fromSetString(sources[i]),this.sourceContents[sources[i]])},SourceNode.prototype.toString=function(){var str="";return this.walk(function(chunk){str+=chunk}),str},SourceNode.prototype.toStringWithSourceMap=function(aArgs){var generated={code:"",line:1,column:0},map=new SourceMapGenerator(aArgs),sourceMappingActive=!1,lastOriginalSource=null,lastOriginalLine=null,lastOriginalColumn=null,lastOriginalName=null;return this.walk(function(chunk,original){generated.code+=chunk,null!==original.source&&null!==original.line&&null!==original.column?(lastOriginalSource===original.source&&lastOriginalLine===original.line&&lastOriginalColumn===original.column&&lastOriginalName===original.name||map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name}),lastOriginalSource=original.source,lastOriginalLine=original.line,lastOriginalColumn=original.column,lastOriginalName=original.name,sourceMappingActive=!0):sourceMappingActive&&(map.addMapping({generated:{line:generated.line,column:generated.column}}),lastOriginalSource=null,sourceMappingActive=!1);for(var idx=0,length=chunk.length;length>idx;idx++)chunk.charCodeAt(idx)===NEWLINE_CODE?(generated.line++,generated.column=0,idx+1===length?(lastOriginalSource=null,sourceMappingActive=!1):sourceMappingActive&&map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name})):generated.column++}),this.walkSourceContents(function(sourceFile,sourceContent){map.setSourceContent(sourceFile,sourceContent)}),{code:generated.code,map:map}},exports.SourceNode=SourceNode})},{"./source-map-generator":38,"./util":40,amdefine:1}],40:[function(require,module,exports){if("function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function getArg(aArgs,aName,aDefaultValue){if(aName in aArgs)return aArgs[aName];if(3===arguments.length)return aDefaultValue;throw new Error('"'+aName+'" is a required argument.')}function urlParse(aUrl){var match=aUrl.match(urlRegexp);return match?{scheme:match[1],auth:match[2],host:match[3],port:match[4],path:match[5]}:null}function urlGenerate(aParsedUrl){var url="";return aParsedUrl.scheme&&(url+=aParsedUrl.scheme+":"),url+="//",aParsedUrl.auth&&(url+=aParsedUrl.auth+"@"),aParsedUrl.host&&(url+=aParsedUrl.host),aParsedUrl.port&&(url+=":"+aParsedUrl.port),aParsedUrl.path&&(url+=aParsedUrl.path),url}function normalize(aPath){var path=aPath,url=urlParse(aPath);if(url){if(!url.path)return aPath;path=url.path}for(var part,isAbsolute="/"===path.charAt(0),parts=path.split(/\/+/),up=0,i=parts.length-1;i>=0;i--)part=parts[i],"."===part?parts.splice(i,1):".."===part?up++:up>0&&(""===part?(parts.splice(i+1,up),up=0):(parts.splice(i,2),up--));return path=parts.join("/"),""===path&&(path=isAbsolute?"/":"."),url?(url.path=path,urlGenerate(url)):path}function join(aRoot,aPath){""===aRoot&&(aRoot="."),""===aPath&&(aPath=".");var aPathUrl=urlParse(aPath),aRootUrl=urlParse(aRoot);if(aRootUrl&&(aRoot=aRootUrl.path||"/"),aPathUrl&&!aPathUrl.scheme)return aRootUrl&&(aPathUrl.scheme=aRootUrl.scheme),urlGenerate(aPathUrl);if(aPathUrl||aPath.match(dataUrlRegexp))return aPath;if(aRootUrl&&!aRootUrl.host&&!aRootUrl.path)return aRootUrl.host=aPath,urlGenerate(aRootUrl);var joined="/"===aPath.charAt(0)?aPath:normalize(aRoot.replace(/\/+$/,"")+"/"+aPath);return aRootUrl?(aRootUrl.path=joined,urlGenerate(aRootUrl)):joined}function relative(aRoot,aPath){""===aRoot&&(aRoot="."),aRoot=aRoot.replace(/\/$/,"");var url=urlParse(aRoot);return"/"==aPath.charAt(0)&&url&&"/"==url.path?aPath.slice(1):0===aPath.indexOf(aRoot+"/")?aPath.substr(aRoot.length+1):aPath}function toSetString(aStr){return"$"+aStr}function fromSetString(aStr){return aStr.substr(1)}function strcmp(aStr1,aStr2){var s1=aStr1||"",s2=aStr2||"";return(s1>s2)-(s2>s1)}function compareByOriginalPositions(mappingA,mappingB,onlyCompareOriginal){var cmp;return(cmp=strcmp(mappingA.source,mappingB.source))?cmp:(cmp=mappingA.originalLine-mappingB.originalLine)?cmp:(cmp=mappingA.originalColumn-mappingB.originalColumn,cmp||onlyCompareOriginal?cmp:(cmp=strcmp(mappingA.name,mappingB.name))?cmp:(cmp=mappingA.generatedLine-mappingB.generatedLine,cmp?cmp:mappingA.generatedColumn-mappingB.generatedColumn))}function compareByGeneratedPositions(mappingA,mappingB,onlyCompareGenerated){var cmp;return(cmp=mappingA.generatedLine-mappingB.generatedLine)?cmp:(cmp=mappingA.generatedColumn-mappingB.generatedColumn,cmp||onlyCompareGenerated?cmp:(cmp=strcmp(mappingA.source,mappingB.source))?cmp:(cmp=mappingA.originalLine-mappingB.originalLine)?cmp:(cmp=mappingA.originalColumn-mappingB.originalColumn,cmp?cmp:strcmp(mappingA.name,mappingB.name)))}exports.getArg=getArg;var urlRegexp=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,dataUrlRegexp=/^data:.+\,.+$/;exports.urlParse=urlParse,exports.urlGenerate=urlGenerate,exports.normalize=normalize,exports.join=join,exports.relative=relative,exports.toSetString=toSetString,exports.fromSetString=fromSetString,exports.compareByOriginalPositions=compareByOriginalPositions,exports.compareByGeneratedPositions=compareByGeneratedPositions})},{amdefine:1}],41:[function(require,module,exports){var ASTVisitor,slice=[].slice,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};ASTVisitor=function(){function ASTVisitor(){}return ASTVisitor.isArray=("undefined"!=typeof Array&&null!==Array?Array.isArray:void 0)||function(value){return"[object Array]"==={}.toString.call(value)},ASTVisitor.dump=function(obj){return JSON.stringify(obj,null,2)},ASTVisitor.IGNORE_ME={},ASTVisitor.not_lazy=function(candidate){return("function"==typeof candidate?candidate(function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[]}):void 0)||candidate},ASTVisitor.set_prop=function(arg){var obj,prop,value;return obj=arg.obj,prop=arg.prop,value=arg.value,obj[prop]=value,obj},ASTVisitor.intersection=function(a,b){var i,len,ref,results,value;for(a.length>b.length&&(ref=[b,a],a=ref[0],b=ref[1]),results=[],i=0,len=a.length;len>i;i++)value=a[i],indexOf.call(b,value)>=0&&results.push(value);return results},ASTVisitor.prototype.visit=function(){var args,callee,fn,i,len,nl,node,nodes,results,value;if(node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],node){if(nl=this.constructor.not_lazy,this.constructor.isArray(node)){for(nodes=function(){var i,len,results;for(results=[],i=0,len=node.length;len>i;i++)value=node[i],results.push(this.visit.apply(this,[value].concat(slice.call(args))));return results}.call(this),results=[],i=0,len=nodes.length;len>i;i++)node=nodes[i],node!==this.constructor.IGNORE_ME&&results.push(nl(node));return results}if(node.node){if(fn="visit"+node.node,callee=this[fn])return nl(callee.call.apply(callee,[this,node].concat(slice.call(args))));throw"Not Impl < "+fn+" > "+this.constructor.dump(node)}throw"Afraid to visit "+this.constructor.dump(node)}return null},ASTVisitor}(),module.exports=ASTVisitor},{}],42:[function(require,module,exports){var BindingVisitor,CUBinding,GenericVisitor,estypes,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,slice=[].slice;GenericVisitor=require("./GenericVisitor").GenericVisitor,CUBinding=require("./binding/CUNaiveBinding"),estypes=require("ast-types"),BindingVisitor=function(superClass){function BindingVisitor(){return BindingVisitor.__super__.constructor.apply(this,arguments)}var builders,flatten,make_method,make_static_get,make_static_set,make_this_get,make_this_set;return extend(BindingVisitor,superClass),builders=estypes.builders,make_method=function(id,params,body,is_static,kind){var fn;return null==is_static&&(is_static=!1),null==kind&&(kind="method"),fn=builders.functionDeclaration(id,params,body),builders.methodDefinition(kind,id,fn,is_static)},make_static_get=function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],make_method.apply(null,slice.call(args).concat([!0],["get"]))},make_static_set=function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],make_method.apply(null,slice.call(args).concat([!0],["set"]))},make_this_get=function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],make_method.apply(null,slice.call(args).concat([!1],["get"]))},make_this_set=function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],make_method.apply(null,slice.call(args).concat([!1],["set"]))},flatten=function(array_of_array){return[].concat.apply([],array_of_array)},BindingVisitor.prototype.visitCompilationUnit=function(){var args,binding,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],binding=new CUBinding(node),BindingVisitor.__super__.visitCompilationUnit.apply(this,[node,binding].concat(slice.call(args)))},BindingVisitor.prototype.visitTypeDeclaration=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],binding.checkout_type(node),su=BindingVisitor.__super__.visitTypeDeclaration.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(id,decls,su){return decls=flatten(decls),lazy(id,decls,su,binding)})}},BindingVisitor.prototype.visitFieldDeclaration=function(){var args,binding,body,body_set,decl,del,esid,expr,fragment,frags,getter,is_prim,node,operand,param,type;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],type=this.visit.apply(this,[node.type,binding].concat(slice.call(args))),frags=function(){var i,len,ref,ref1,results;for(ref=node.fragments,results=[],i=0,len=ref.length;len>i;i++)fragment=ref[i],decl=this.visit.apply(this,[fragment,binding].concat(slice.call(args))),null==decl.init&&(decl.init=this.visit.apply(this,[this.constructor.make_def_field_init(node),binding].concat(slice.call(args)))),this.constructor.has_modifier(node,"static")?(is_prim="long"===(ref1=type.name)||"byte"===ref1||"int"===ref1||"short"===ref1||"double"===ref1||"float"===ref1||"boolean"===ref1||"String"===ref1||"char"===ref1,is_prim&&!fragment.extraDimensions&&this.constructor.has_modifier(node,"final")?(body=builders.blockStatement([builders.returnStatement(decl.init)]),results.push(make_static_get(decl.id,[],body))):(operand=builders.memberExpression(binding.class_id,decl.id,!1),del=builders.unaryExpression("delete",operand,!1),del=builders.expressionStatement(del),expr=builders.assignmentExpression("=",operand,decl.init),body=builders.blockStatement([del,builders.returnStatement(expr)]),getter=make_static_get(decl.id,[],body),this.constructor.has_modifier(node,"final")?results.push(getter):(param=builders.identifier("v"),expr=builders.assignmentExpression("=",operand,param),expr=builders.expressionStatement(expr),body_set=builders.blockStatement([del,expr]),results.push([getter,make_static_set(decl.id,[param],body_set)])))):(esid=builders.identifier("_$esjava$"+decl.id.name),operand=builders.memberExpression(builders.thisExpression(),esid,!1),expr=builders.identifier("Object.prototype.hasOwnProperty.call"),expr=builders.callExpression(expr,[builders.thisExpression(),builders.literal(esid.name)]),expr=builders.conditionalExpression(expr,operand,builders.assignmentExpression("=",operand,decl.init)),body=builders.blockStatement([builders.returnStatement(expr)]),getter=make_this_get(decl.id,[],body),param=builders.identifier("v"),expr=builders.assignmentExpression("=",operand,param),expr=builders.expressionStatement(expr),body_set=builders.blockStatement([expr]),results.push([getter,make_this_set(decl.id,[param],body_set)]));return results}.call(this),flatten(frags)},BindingVisitor.prototype.visitSimpleName=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=BindingVisitor.__super__.visitSimpleName.apply(this,[node,binding].concat(slice.call(args))),binding&&binding.bind({id:su,foreign:node}),su},BindingVisitor}(GenericVisitor),module.exports=BindingVisitor},{"./GenericVisitor":44,"./binding/CUNaiveBinding":49,"ast-types":18}],43:[function(require,module,exports){var PrimitivesVisitor,RawVisitor,Scope,SuperVisitor,UseStrictVisitor,builders,esgen,estypes,javaparser,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,slice=[].slice;javaparser=require("java-parser"),SuperVisitor=require("./OverloadVisitor"),Scope=require("./binding/BindingScope"),estypes=require("ast-types"),esgen=require("escodegen"),estypes.Type.def("RawLiteral").bases("Node","Expression").build("x-raw").field("x-raw",Object),estypes.finalize(),builders=estypes.builders,PrimitivesVisitor=function(superClass){function PrimitivesVisitor(){return PrimitivesVisitor.__super__.constructor.apply(this,arguments)}return extend(PrimitivesVisitor,superClass),PrimitivesVisitor.prototype.visitMethodInvocation=function(){var args,binding,callee,node,res,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=PrimitivesVisitor.__super__.visitMethodInvocation.apply(this,[node,binding].concat(slice.call(args))),callee=!1,res=su(function(_this){return function(id,params,expr){var is_str,is_str_expr;return expr&&(is_str=function(tp){var ref;return tp&&("String"===(ref=esgen.generate(tp))||"java.lang.String"===ref)},is_str_expr=function(){var ref,ref1,ref10,ref11,ref12,ref13,ref14,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,resolve;return resolve=function(ex,scope){return res=binding.resolve_id(ex),(null!=res?res.scope:void 0)===scope?is_str(res.type):null},"Identifier"===expr.type?resolve(expr,Scope.LOCAL):"ThisExpression"===(null!=(ref=expr.object)?ref.type:void 0)&&"Identifier"===(null!=(ref1=expr.property)?ref1.type:void 0)?resolve(expr.property,Scope.FIELD):"ThisExpression"===(null!=(ref2=expr.callee)&&null!=(ref3=ref2.object)?ref3.type:void 0)&&"Identifier"===(null!=(ref4=expr.callee)&&null!=(ref5=ref4.property)?ref5.type:void 0)?resolve(expr.callee.property,Scope.METHOD):"Identifier"===(null!=(ref6=expr.object)?ref6.type:void 0)&&"Identifier"===(null!=(ref7=expr.property)?ref7.type:void 0)&&(null!=(ref8=expr.object)?ref8.name:void 0)===binding.class_id.name?resolve(expr.property,Scope.FIELD):"Identifier"===(null!=(ref9=expr.callee)&&null!=(ref10=ref9.object)?ref10.type:void 0)&&"Identifier"===(null!=(ref11=expr.callee)&&null!=(ref12=ref11.property)?ref12.type:void 0)&&(null!=(ref13=expr.callee)&&null!=(ref14=ref13.object)?ref14.name:void 0)===binding.class_id.name?resolve(expr.callee.property,Scope.METHOD):!1},"charAt"===id.name&&is_str_expr()?id.name="charCodeAt":"length"===id.name&&is_str_expr()&&(callee=!0)),[id,params,expr]}}(this)),callee?res.callee:res},PrimitivesVisitor}(SuperVisitor),RawVisitor=function(superClass){function RawVisitor(){return RawVisitor.__super__.constructor.apply(this,arguments)}var make_raw,octal_to_unicode;return extend(RawVisitor,superClass),octal_to_unicode=function(str){return str.replace(/\\([1-7][0-7]{0,2}|[0-7]{2,3})/g,function(match,p1){var num;return num=parseInt(p1,8),"\\u"+("000"+num.toString(16)).slice(-4)})},make_raw=function(value){var obj;return obj={content:value,precedence:esgen.Precedence.Primary},builders.rawLiteral(obj)},RawVisitor.prototype.visitNumberLiteral=function(node){var token;return token=node.token.replace(/[lL]$/,""),token.match(/0[xX][0-9a-fA-F]+/)||(token=token.replace(/[fFdD]$/,"")),make_raw(token.replace(/^0([0-7]+)$/,"0o$1"))},RawVisitor.prototype.visitStringLiteral=function(node){return make_raw(octal_to_unicode(node.escapedValue))},RawVisitor.prototype.visitCharacterLiteral=function(node){return make_raw(octal_to_unicode(node.escapedValue))},RawVisitor}(PrimitivesVisitor),UseStrictVisitor=function(superClass){function UseStrictVisitor(){return UseStrictVisitor.__super__.constructor.apply(this,arguments)}return extend(UseStrictVisitor,superClass),UseStrictVisitor.prototype.visitCompilationUnit=function(){var args,node,su;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],su=UseStrictVisitor.__super__.visitCompilationUnit.apply(this,[node].concat(slice.call(args))),function(lazy){return su(function(statements){var expr,literal;return literal=builders.literal("use strict"),expr=builders.expressionStatement(literal),lazy([expr].concat(slice.call(statements)))})}},UseStrictVisitor}(RawVisitor),module.exports=function(src){var jast,jsast;return jast=javaparser.parse(src),jsast=(new UseStrictVisitor).visit(jast),esgen.generate(jsast,{verbatim:"x-raw"})}},{"./OverloadVisitor":46,"./binding/BindingScope":48,"ast-types":18,escodegen:19,"java-parser":26}],44:[function(require,module,exports){var ASTVisitor,GenericVisitor,MicroVisitor,builders,estypes,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,slice=[].slice;estypes=require("ast-types"),ASTVisitor=require("./ASTVisitor"),builders=estypes.builders,MicroVisitor=function(superClass){function MicroVisitor(){return MicroVisitor.__super__.constructor.apply(this,arguments)}return extend(MicroVisitor,superClass),MicroVisitor.make_def_field_init=function(node){var ref;if("FieldDeclaration"!==node.node)throw"ASSERT: FieldDeclaration expected instead "+node.node;switch(null!=(ref=node.type)?ref.primitiveTypeCode:void 0){case"long":case"short":case"byte":case"int":return{node:"NumberLiteral",token:"0"};case"float":case"double":return{node:"NumberLiteral",token:"0.0"};case"boolean":return{node:"BooleanLiteral",booleanValue:!1};case"char":return{node:"CharacterLiteral",escapedValue:"'\\u0000'"};default:return{node:"NullLiteral"}}},MicroVisitor.has_modifier=function(){var args,intersected,mod,mods,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],mods=function(){var i,len,ref,results;for(ref=node.modifiers,results=[],i=0,len=ref.length;len>i;i++)mod=ref[i],mod.keyword&&results.push(mod.keyword);return results}(),intersected=MicroVisitor.intersection(args,mods),args.length&&intersected.length===args.length},MicroVisitor.prototype.visitSimpleType=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visit.apply(this,[node.name].concat(slice.call(args)))},MicroVisitor.prototype.visitSimpleName=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],builders.identifier(node.identifier)},MicroVisitor.prototype.visitPrimitiveType=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],builders.identifier(node.primitiveTypeCode)},MicroVisitor.prototype.visitArrayType=function(){var args,node,type;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],type=this.visit.apply(this,[node.componentType].concat(slice.call(args))),builders.identifier("Array:"+type.name)},MicroVisitor.prototype.visitQualifiedName=function(){var args,node,object,property;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],object=this.visit.apply(this,[node.qualifier].concat(slice.call(args))),property=this.visit.apply(this,[node.name].concat(slice.call(args))),function(lazy){var ref;return ref=lazy(object,property),object=ref[0],property=ref[1],builders.memberExpression(object,property,!1)}},MicroVisitor}(ASTVisitor),GenericVisitor=function(superClass){function GenericVisitor(){return GenericVisitor.__super__.constructor.apply(this,arguments)}var conv_operator,make_binary_or_logical,make_ctor,make_let,make_method,make_unary_or_update;return extend(GenericVisitor,superClass),make_unary_or_update=function(){var args,operator;return operator=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],"++"===operator||"--"===operator?builders.updateExpression.apply(builders,[operator].concat(slice.call(args))):builders.unaryExpression.apply(builders,[operator].concat(slice.call(args)))},make_binary_or_logical=function(){var args,operator;return operator=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],"||"===operator||"&&"===operator?builders.logicalExpression.apply(builders,[operator].concat(slice.call(args))):builders.binaryExpression.apply(builders,[operator].concat(slice.call(args)))},conv_operator=function(operator){switch(operator){case"==":return"===";case"!=":return"!==";default:return operator}},make_method=function(id,params,body,is_static,kind){var fn;return null==is_static&&(is_static=!1),null==kind&&(kind="method"),fn=builders.functionDeclaration(id,params,body),builders.methodDefinition(kind,id,fn,is_static)},make_ctor=function(params,body){var id;return id=builders.identifier("constructor"),make_method(id,params,body,!1,"constructor")},make_let=function(declarations){return builders.variableDeclaration("let",declarations)},GenericVisitor.prototype.visitCompilationUnit=function(){var args,body,imports,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],imports=this.visit.apply(this,[node.imports].concat(slice.call(args))),body=this.visit.apply(this,[node.types].concat(slice.call(args))),function(lazy){var statements;return statements=lazy(slice.call(imports).concat(slice.call(body)))[0],builders.program(statements)}},GenericVisitor.prototype.visitImportDeclaration=function(){var args,items,node,path,qualified,recurse;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],qualified=this.visit.apply(this,[node.name].concat(slice.call(args))),items=(recurse=function(node,res){return res.unshift(node.name||node.property.name),node.object?recurse(node.object,res):res})(qualified,[]),node.onDemand&&items.push("*"),path=builders.literal(items.join(".")),builders.importDeclaration([],path)},GenericVisitor.prototype.visitNumberLiteral=function(node){return builders.literal(parseInt(node.token))},GenericVisitor.prototype.visitPrefixExpression=function(){var args,node,operand;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],operand=this.visit.apply(this,[node.operand].concat(slice.call(args))),make_unary_or_update(node.operator,operand,!0)},GenericVisitor.prototype.visitArrayInitializer=function(){var args,elements,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],elements=this.visit.apply(this,[node.expressions].concat(slice.call(args))),builders.arrayExpression(elements)},GenericVisitor.prototype.visitInfixExpression=function(){var args,left,node,operator,right;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],left=this.visit.apply(this,[node.leftOperand].concat(slice.call(args))),right=this.visit.apply(this,[node.rightOperand].concat(slice.call(args))),operator=conv_operator(node.operator),make_binary_or_logical(operator,left,right)},GenericVisitor.prototype.visitStringLiteral=function(node){return builders.literal(eval(node.escapedValue))},GenericVisitor.prototype.visitBlock=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],builders.blockStatement(this.visit.apply(this,[node.statements].concat(slice.call(args))))},GenericVisitor.prototype.visitVariableDeclarationStatement=function(){var args,declarations,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],declarations=this.visit.apply(this,[node.fragments].concat(slice.call(args))),make_let(declarations)},GenericVisitor.prototype.visitArrayCreation=function(){var args,init,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],init=this.visit.apply(this,[node.initializer].concat(slice.call(args))),init||function(_this){return function(){var array,dims;return dims=_this.visit.apply(_this,[node.dimensions].concat(slice.call(args))),dims.length>0&&(dims=[dims.reduce(function(left,right){return builders.binaryExpression("*",left,right)})]),array=builders.identifier("Array"),builders.newExpression(array,dims)}}(this)()},GenericVisitor.prototype.visitExpressionStatement=function(){var args,expr,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],expr=this.visit.apply(this,[node.expression].concat(slice.call(args))),builders.expressionStatement(expr)},GenericVisitor.prototype.visitAssignment=function(){var args,left,node,right;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],left=this.visit.apply(this,[node.leftHandSide].concat(slice.call(args))),right=this.visit.apply(this,[node.rightHandSide].concat(slice.call(args))),builders.assignmentExpression(node.operator,left,right)},GenericVisitor.prototype.visitReturnStatement=function(){var args,expr,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],expr=this.visit.apply(this,[node.expression].concat(slice.call(args))),builders.returnStatement(expr)},GenericVisitor.prototype.visitSingleVariableDeclaration=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visit.apply(this,[node.name].concat(slice.call(args)))},GenericVisitor.prototype.visitWhileStatement=function(){var args,body,expr,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],expr=this.visit.apply(this,[node.expression].concat(slice.call(args))),body=this.visit.apply(this,[node.body].concat(slice.call(args))),builders.whileStatement(expr,body)},GenericVisitor.prototype.visitPostfixExpression=function(){var args,node,operand;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],operand=this.visit.apply(this,[node.operand].concat(slice.call(args))),make_unary_or_update(node.operator,operand,!1)},GenericVisitor.prototype.visitDoStatement=function(){var args,body,expr,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],expr=this.visit.apply(this,[node.expression].concat(slice.call(args))),body=this.visit.apply(this,[node.body].concat(slice.call(args))),builders.doWhileStatement(body,expr)},GenericVisitor.prototype.visitArrayAccess=function(){var args,node,object,property;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],object=this.visit.apply(this,[node.array].concat(slice.call(args))),property=this.visit.apply(this,[node.index].concat(slice.call(args))),builders.memberExpression(object,property,!0)},GenericVisitor.prototype.visitBooleanLiteral=function(node){return builders.literal(node.booleanValue)},GenericVisitor.prototype.visitThrowStatement=function(){var args,argument,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],argument=this.visit.apply(this,[node.expression].concat(slice.call(args))),builders.throwStatement(argument)},GenericVisitor.prototype.visitClassInstanceCreation=function(){var args,callee,node,params;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],params=this.visit.apply(this,[node.arguments].concat(slice.call(args))),callee=this.visit.apply(this,[node.type].concat(slice.call(args))),builders.newExpression(callee,params)},GenericVisitor.prototype.visitTypeDeclaration=function(){var args,decls,id,interfaces,node,su;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],decls=this.visit.apply(this,[node.bodyDeclarations].concat(slice.call(args))),id=this.visit.apply(this,[node.name].concat(slice.call(args))),su=this.visit.apply(this,[node.superclassType].concat(slice.call(args))),interfaces=this.visit.apply(this,[node.superInterfaceTypes].concat(slice.call(args))),
su&&(interfaces=[su].concat(slice.call(interfaces))),su=function(){switch(interfaces.length){case 0:return null;case 1:return interfaces[0];default:throw"NotImpl: Multiple Inheritance"}}(),function(lazy){var body,ref;return ref=lazy(id,decls,su),id=ref[0],decls=ref[1],su=ref[2],body=builders.classBody(decls),builders.classDeclaration(id,body,su)}},GenericVisitor.prototype.visitFieldAccess=function(){var args,expr,id,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),expr=this.visit.apply(this,[node.expression].concat(slice.call(args))),function(lazy){var ref;return ref=lazy(id,expr),id=ref[0],expr=ref[1],builders.memberExpression(expr,id,!1)}},GenericVisitor.prototype.visitThisExpression=function(){var args,node;if(node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],node.qualifier)throw"NotImpl: out class access";return builders.thisExpression()},GenericVisitor.prototype.visitIfStatement=function(){var alternate,args,consequent,expr,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],expr=this.visit.apply(this,[node.expression].concat(slice.call(args))),alternate=this.visit.apply(this,[node.elseStatement].concat(slice.call(args))),consequent=this.visit.apply(this,[node.thenStatement].concat(slice.call(args))),builders.ifStatement(expr,consequent,alternate)},GenericVisitor.prototype.visitCastExpression=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visit.apply(this,[node.expression].concat(slice.call(args)))},GenericVisitor.prototype.visitNullLiteral=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],builders.literal(null)},GenericVisitor.prototype.visitMethodDeclaration=function(){var args,body,id,node,params;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),params=this.visit.apply(this,[node.parameters].concat(slice.call(args))),body=this.visit.apply(this,[node.body].concat(slice.call(args))),function(_this){return function(lazy){var is_static,ref;return ref=lazy(id,params,body),id=ref[0],params=ref[1],body=ref[2],node.constructor?make_ctor(params,body):(is_static=_this.constructor.has_modifier(node,"static"),null==body&&(body=builders.blockStatement([builders.throwStatement(builders.literal("NotImpl < "+id.name+" >"))])),make_method(id,params,body,is_static))}}(this)},GenericVisitor.prototype.visitFieldDeclaration=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.constructor.IGNORE_ME},GenericVisitor.prototype.visitVariableDeclarationFragment=function(){var args,id,init,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),init=this.visit.apply(this,[node.initializer].concat(slice.call(args))),function(lazy){var ref;return ref=lazy(id,init),id=ref[0],init=ref[1],builders.variableDeclarator(id,init)}},GenericVisitor.prototype.visitMethodInvocation=function(){var args,expr,id,node,params;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),params=this.visit.apply(this,[node.arguments].concat(slice.call(args))),expr=this.visit.apply(this,[node.expression].concat(slice.call(args))),function(lazy){var ref;return ref=lazy(id,params,expr),id=ref[0],params=ref[1],expr=ref[2],expr&&(id=builders.memberExpression(expr,id,!1)),builders.callExpression(id,params)}},GenericVisitor.prototype.visitCatchClause=function(){var args,body,id,node,type;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.exception].concat(slice.call(args))),type=this.visit.apply(this,[node.exception.type].concat(slice.call(args))),body=this.visit.apply(this,[node.body].concat(slice.call(args))),function(lazy){var ref;return ref=lazy(id,type,body),id=ref[0],type=ref[1],body=ref[2],builders.catchClause(id,null,body)}},GenericVisitor.prototype.visitTryStatement=function(){var abody,aid,args,atype,body,cat,cats,cond,expr,final,gid,i,init,len,node,ref,ref1,ref2,resources,v;for(node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],ref=[],gid=ref[0],cond=ref[1],cats=function(){var i,len,ref1,results;for(ref1=node.catchClauses,results=[],i=0,len=ref1.length;len>i;i++)v=ref1[i],results.push(this.visitCatchClause.apply(this,[v].concat(slice.call(args))));return results}.call(this),ref1=cats.reverse(),i=0,len=ref1.length;len>i;i++)cat=ref1[i],ref2=[],aid=ref2[0],atype=ref2[1],abody=ref2[2],cat(function(){var cargs;return cargs=1<=arguments.length?slice.call(arguments,0):[],aid=cargs[0],atype=cargs[1],abody=cargs[2],cargs}),null==gid&&(gid=aid),gid.name!==aid.name&&(init=make_let([builders.variableDeclarator(aid,gid)]),abody.body.unshift(init)),expr=builders.binaryExpression("instanceof",gid,atype),null==cond&&(cond=builders.throwStatement(gid)),cond=builders.ifStatement(expr,abody,cond);if(cond&&(cond=builders.blockStatement([cond]),cond=builders.catchClause(gid,null,cond)),final=this.visit.apply(this,[node["finally"]].concat(slice.call(args))),body=this.visit.apply(this,[node.body].concat(slice.call(args))),resources=this.visit.apply(this,[node.resources].concat(slice.call(args))),null!=resources?resources.length:void 0)throw"NotImpl: try with resources";return builders.tryStatement(body,cond||null,final)},GenericVisitor.prototype.visitParenthesizedExpression=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visit.apply(this,[node.expression].concat(slice.call(args)))},GenericVisitor.prototype.visitLabeledStatement=function(){var args,body,label,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],body=this.visit.apply(this,[node.body].concat(slice.call(args))),label=this.visit.apply(this,[node.label].concat(slice.call(args))),builders.labeledStatement(label,body)},GenericVisitor.prototype.visitBreakStatement=function(){var args,label,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],label=this.visit.apply(this,[node.label].concat(slice.call(args))),builders.breakStatement(label)},GenericVisitor.prototype.visitContinueStatement=function(){var args,label,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],label=this.visit.apply(this,[node.label].concat(slice.call(args))),builders.continueStatement(label)},GenericVisitor.prototype.visitSwitchStatement=function(){var args,cases,discriminant,i,last,len,node,ref,statement;for(node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],discriminant=this.visit.apply(this,[node.expression].concat(slice.call(args))),cases=[],ref=this.visit.apply(this,[node.statements].concat(slice.call(args))),i=0,len=ref.length;len>i;i++)statement=ref[i],"SwitchCase"===statement.type?cases.push(statement):(last=cases[cases.length-1],last.consequent.push(statement));return builders.switchStatement(discriminant,cases)},GenericVisitor.prototype.visitSwitchCase=function(){var args,node,test;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],test=this.visit.apply(this,[node.expression].concat(slice.call(args))),builders.switchCase(test,[])},GenericVisitor.prototype.visitConditionalExpression=function(){var alternate,args,consequent,node,test;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],test=this.visit.apply(this,[node.expression].concat(slice.call(args))),consequent=this.visit.apply(this,[node.thenExpression].concat(slice.call(args))),alternate=this.visit.apply(this,[node.elseExpression].concat(slice.call(args))),builders.conditionalExpression(test,consequent,alternate)},GenericVisitor.prototype.visitSuperMethodInvocation=function(){var args,expr,id,node,params;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),params=this.visit.apply(this,[node.arguments].concat(slice.call(args))),expr=builders["super"](),function(lazy){var ref;return ref=lazy(id,params,expr),id=ref[0],params=ref[1],expr=ref[2],id=builders.memberExpression(expr,id,!1),builders.callExpression(id,params)}},GenericVisitor.prototype.visitSuperFieldAccess=function(){var args,expr,id,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),expr=builders["super"](),function(lazy){var ref;return ref=lazy(id,expr),id=ref[0],expr=ref[1],builders.memberExpression(expr,id,!1)}},GenericVisitor.prototype.visitSuperConstructorInvocation=function(){var args,expr,node,params;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],params=this.visit.apply(this,[node.arguments].concat(slice.call(args))),expr=builders["super"](),function(lazy){var call,ref;return ref=lazy(params,expr),params=ref[0],expr=ref[1],call=builders.callExpression(expr,params),builders.expressionStatement(call)}},GenericVisitor.prototype.visitInstanceofExpression=function(){var args,left,node,right;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],left=this.visit.apply(this,[node.leftOperand].concat(slice.call(args))),right=this.visit.apply(this,[node.rightOperand].concat(slice.call(args))),builders.binaryExpression("instanceof",left,right)},GenericVisitor.prototype.visitEmptyStatement=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],builders.emptyStatement()},GenericVisitor.prototype.visitForStatement=function(){var args,body,init,node,test,update,wrap_seq;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],wrap_seq=function(items){switch(items.length){case 1:return items[0];case 0:return null;default:return builders.sequenceExpression(items)}},init=wrap_seq(this.visit.apply(this,[node.initializers].concat(slice.call(args)))),test=this.visit.apply(this,[node.expression].concat(slice.call(args))),update=wrap_seq(this.visit.apply(this,[node.updaters].concat(slice.call(args)))),body=this.visit.apply(this,[node.body].concat(slice.call(args))),builders.forStatement(init,test,update,body)},GenericVisitor.prototype.visitVariableDeclarationExpression=function(){var args,declarations,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],declarations=this.visit.apply(this,[node.fragments].concat(slice.call(args))),make_let(declarations)},GenericVisitor.prototype.visitCharacterLiteral=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],builders.literal(eval(node.escapedValue))},GenericVisitor}(MicroVisitor),module.exports={MicroVisitor:MicroVisitor,GenericVisitor:GenericVisitor}},{"./ASTVisitor":41,"ast-types":18}],45:[function(require,module,exports){var KeywordsVisitor,Scope,SuperVisitor,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1},slice=[].slice;SuperVisitor=require("./BindingVisitor"),Scope=require("./binding/BindingScope"),KeywordsVisitor=function(superClass){function KeywordsVisitor(){return KeywordsVisitor.__super__.constructor.apply(this,arguments)}var RESERVED,rename_id;return extend(KeywordsVisitor,superClass),RESERVED=["in","var","function","constructor","delete","eval","arguments","let","with","yield"],rename_id=function(id){var ref;return ref=id.name,indexOf.call(RESERVED,ref)>=0?id.name+="$esjava":void 0},KeywordsVisitor.prototype.visitSimpleName=function(){var args,binding,node,resolve,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=KeywordsVisitor.__super__.visitSimpleName.apply(this,[node,binding].concat(slice.call(args))),resolve=function(){var ref;return null!=(ref=binding.resolve_id(su))?ref.scope:void 0},binding&&Scope.LOCAL===resolve()&&rename_id(su),su},KeywordsVisitor.prototype.visitVariableDeclarationFragment=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=KeywordsVisitor.__super__.visitVariableDeclarationFragment.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(id,init){return rename_id(id),lazy(id,init)})}},KeywordsVisitor.prototype.visitSingleVariableDeclaration=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=KeywordsVisitor.__super__.visitSingleVariableDeclaration.apply(this,[node,binding].concat(slice.call(args))),rename_id(su),su},KeywordsVisitor}(SuperVisitor),module.exports=KeywordsVisitor},{"./BindingVisitor":42,"./binding/BindingScope":48}],46:[function(require,module,exports){var OverloadVisitor,SuperVisitor,estypes,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,slice=[].slice;SuperVisitor=require("./ResolveSelfVisitor"),estypes=require("ast-types"),OverloadVisitor=function(superClass){function OverloadVisitor(){return OverloadVisitor.__super__.constructor.apply(this,arguments)}var builders,make_method;return extend(OverloadVisitor,superClass),builders=estypes.builders,make_method=function(id,params,body,is_static,kind){var fn;return null==is_static&&(is_static=!1),null==kind&&(kind="method"),fn=builders.functionDeclaration(id,params,body),builders.methodDefinition(kind,id,fn,is_static)},OverloadVisitor.prototype.visitTypeDeclaration=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=OverloadVisitor.__super__.visitTypeDeclaration.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(){var __args,__binding,__decls,__id,body,call,cases,def_call,discriminant,expr,i,j,len,meth,nm,o,par_cnt,ref,rest,sw,test;for(__id=arguments[0],__decls=arguments[1],__args=4<=arguments.length?slice.call(arguments,2,i=arguments.length-1):(i=2,[]),__binding=arguments[i++],ref=__binding.ls_potential_overloads(),j=0,len=ref.length;len>j;j++)o=ref[j],expr=o["static"]?__binding.class_id:builders.thisExpression(),rest=builders.identifier("args"),cases=function(){var k,len1,ref1,results;for(ref1=o.pars,results=[],k=0,len1=ref1.length;len1>k;k++)par_cnt=ref1[k],nm=builders.identifier(__binding.overload(o.name,new Array(par_cnt))),call=builders.memberExpression(expr,nm,!1),call=builders.callExpression(call,[builders.spreadElement(rest)]),test=builders.literal(par_cnt),results.push(builders.switchCase(test,[builders.returnStatement(call)]));return results}(),discriminant=builders.memberExpression(rest,builders.identifier("length")),sw=builders.switchStatement(discriminant,cases),meth=builders.identifier(o.name),def_call=builders.memberExpression(builders["super"](),meth),def_call=builders.callExpression(def_call,[builders.spreadElement(rest)]),body=builders.blockStatement([sw,builders.returnStatement(def_call)]),__decls.push(make_method(meth,[builders.restElement(rest)],body,o["static"]));return lazy.apply(null,[__id,__decls].concat(slice.call(__args),[__binding]))})}},OverloadVisitor.prototype.visitMethodDeclaration=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=OverloadVisitor.__super__.visitMethodDeclaration.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(id,params,body,locals){return node.constructor||(id.name=binding.overload(id.name,params)),lazy(id,params,body,locals)})}},OverloadVisitor.prototype.visitMethodInvocation=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=OverloadVisitor.__super__.visitMethodInvocation.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(id,params,expr){var do_overload;return do_overload="ThisExpression"===(null!=expr?expr.type:void 0),do_overload||(do_overload="Identifier"===(null!=expr?expr.type:void 0)&&(null!=expr?expr.name:void 0)===binding.class_id.name),do_overload&&(id.name=binding.overload(id.name,params)),lazy(id,params,expr)})}},OverloadVisitor.prototype.visitSuperMethodInvocation=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=OverloadVisitor.__super__.visitSuperMethodInvocation.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(id,params,expr){return id.name=binding.overload(id.name,params),lazy(id,params,expr)})}},OverloadVisitor}(SuperVisitor),module.exports=OverloadVisitor},{"./ResolveSelfVisitor":47,"ast-types":18}],47:[function(require,module,exports){var ResolveThisVisitor,Scope,SuperVisitor,estypes,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,slice=[].slice;estypes=require("ast-types"),SuperVisitor=require("./KeywordsVisitor"),Scope=require("./binding/BindingScope"),ResolveThisVisitor=function(superClass){function ResolveThisVisitor(){return ResolveThisVisitor.__super__.constructor.apply(this,arguments)}var builders;return extend(ResolveThisVisitor,superClass),builders=estypes.builders,ResolveThisVisitor.prototype.visitSimpleName=function(){var args,binding,expr,node,resolved,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=ResolveThisVisitor.__super__.visitSimpleName.apply(this,[node,binding].concat(slice.call(args))),resolved=null!=binding?binding.resolve_id(su):void 0,Scope.FIELD===(null!=resolved?resolved.scope:void 0)?(expr=resolved.is_static?binding.class_id:builders.thisExpression(),builders.memberExpression(expr,su,!1)):su},ResolveThisVisitor.prototype.visitQualifiedName=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=ResolveThisVisitor.__super__.visitQualifiedName.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(object,property){return property.object&&property.object===(null!=binding?binding.class_id:void 0)&&(property=property.property),lazy(object,property)})}},ResolveThisVisitor.prototype.visitFieldAccess=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=ResolveThisVisitor.__super__.visitFieldAccess.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(id,expr){var ref,resolved,ugly_expr,ugly_id;if("ThisExpression"===(null!=(ref=id.object)?ref.type:void 0)){if(ugly_id=id.property,ugly_expr=id.object,resolved=binding.resolve_id(ugly_id),Scope.FIELD===(null!=resolved?resolved.scope:void 0))return lazy(ugly_id,ugly_expr)}else if("ThisExpression"===expr.type&&binding.class_id===id.object)return lazy(id.property,expr);return lazy(id,expr)})}},ResolveThisVisitor.prototype.visitMethodInvocation=function(){var args,binding,node,su;return node=arguments[0],binding=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=ResolveThisVisitor.__super__.visitMethodInvocation.apply(this,[node,binding].concat(slice.call(args))),function(lazy){return su(function(id,params,expr){var resolved;return resolved=binding.resolve_id(id),expr||Scope.METHOD!==(null!=resolved?resolved.scope:void 0)||(expr=resolved.is_static?binding.class_id:builders.thisExpression()),lazy(id,params,expr)})}},ResolveThisVisitor}(SuperVisitor),module.exports=ResolveThisVisitor},{"./KeywordsVisitor":45,"./binding/BindingScope":48,"ast-types":18}],48:[function(require,module,exports){var BindingScope,slice=[].slice;BindingScope=function(){function BindingScope(scope,type,is_static){this.scope=scope,this.type=type,this.is_static=null!=is_static?is_static:!1}return BindingScope.LOCAL="local",BindingScope.FIELD="field",BindingScope.METHOD="method",BindingScope.new_local=function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],function(func,args,ctor){ctor.prototype=func.prototype;var child=new ctor,result=func.apply(child,args);return Object(result)===result?result:child}(BindingScope,[BindingScope.LOCAL].concat(slice.call(args)),function(){})},BindingScope.new_field=function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],function(func,args,ctor){ctor.prototype=func.prototype;var child=new ctor,result=func.apply(child,args);return Object(result)===result?result:child}(BindingScope,[BindingScope.FIELD].concat(slice.call(args)),function(){})},BindingScope.new_method=function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],function(func,args,ctor){ctor.prototype=func.prototype;var child=new ctor,result=func.apply(child,args);return Object(result)===result?result:child}(BindingScope,[BindingScope.METHOD].concat(slice.call(args)),function(){})},BindingScope}(),module.exports=BindingScope},{}],49:[function(require,module,exports){var CUBindingTypesVisitor,CUNaiveBinding,ClassBinding,Dict,MicroVisitor,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,slice=[].slice;MicroVisitor=require("../GenericVisitor").MicroVisitor,ClassBinding=require("./ClassBinding"),Dict=require("../collections/Dict"),CUBindingTypesVisitor=function(superClass){function CUBindingTypesVisitor(){return CUBindingTypesVisitor.__super__.constructor.apply(this,arguments)}return extend(CUBindingTypesVisitor,superClass),CUBindingTypesVisitor.prototype.visitCompilationUnit=function(){var args,bind,dict,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],dict=new Dict,this.visit.apply(this,[node.types,dict].concat(slice.call(args))),bind=new Dict,dict.each(function(k,v){return(null!=v?v.name:void 0)&&dict.contains(v.name)?bind.set_value(k,v.name):void 0}),bind},CUBindingTypesVisitor.prototype.visitTypeDeclaration=function(){var args,dict,id,interfaces,node,su;return node=arguments[0],dict=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),su=this.visit.apply(this,[node.superclassType].concat(slice.call(args))),interfaces=this.visit.apply(this,[node.superInterfaceTypes].concat(slice.call(args))),su&&(interfaces=[su].concat(slice.call(interfaces))),su=function(){switch(interfaces.length){case 0:return null;case 1:return interfaces[0];default:throw"NotImpl: Multiple Inheritance"}}(),dict.set_value(id.name,su)},CUBindingTypesVisitor}(MicroVisitor),CUNaiveBinding=function(){function CUNaiveBinding(cu_node){var bindings,types,visitor;if("CompilationUnit"!==cu_node.node)throw"ASSERT: CompilationUnit node expected";visitor=new CUBindingTypesVisitor,types=visitor.visit(cu_node),bindings=new Dict,this.resolve_id=function(){return null},this.bind=function(){},this.checkout_type=function(cls_node){var binding,key,nm,ref,results,su;nm=null!=(ref=cls_node.name)?ref.identifier:void 0,su=types.get_value(nm),binding=su?(binding=bindings.get_value(su),binding.clone_super(cls_node)):new ClassBinding(cls_node),bindings.set_value(nm,binding),results=[];for(key in binding)results.push(this[key]=binding[key]);return results}}return CUNaiveBinding}(),module.exports=CUNaiveBinding},{"../GenericVisitor":44,"../collections/Dict":52,"./ClassBinding":50}],50:[function(require,module,exports){var BindingResolverVisitor,BindingScope,ClassBinding,Map,ScopeVisitor,estypes,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,slice=[].slice;estypes=require("ast-types"),ScopeVisitor=require("./ScopeVisitor"),BindingScope=require("./BindingScope"),Map=require("../collections/Map"),BindingResolverVisitor=function(superClass){function BindingResolverVisitor(_joinMap1){this._joinMap=_joinMap1}var builders;return extend(BindingResolverVisitor,superClass),builders=estypes.builders,BindingResolverVisitor.prototype.visitTypeDeclaration=function(){var args,members,node,r_members,su;return node=arguments[0],members=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],su=BindingResolverVisitor.__super__.visitTypeDeclaration.apply(this,[node,members].concat(slice.call(args))),r_members=null,su(function(id,decls,su,members){return r_members=members,[id,decls,su]}),r_members},BindingResolverVisitor.prototype.visitQualifiedName=function(){var args,locals,members,node,resolve,su;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],su=BindingResolverVisitor.__super__.visitQualifiedName.apply(this,[node,members,locals,!1].concat(slice.call(args))),function(_this){return function(lazy){return su(function(object,property){return resolve="SimpleName"===node.qualifier.node,resolve&&("Identifier"===object.type&&object.name===(null!=members?members.scope_id.name:void 0)?property=_this.visit.apply(_this,[node.name,members,locals,!0].concat(slice.call(args))):object=_this.visit.apply(_this,[node.qualifier,members,locals,!0].concat(slice.call(args)))),lazy(object,property)})}}(this)},BindingResolverVisitor.prototype.visitSimpleName=function(){var args,in_fields,in_locals,locals,members,node,pars,resolve;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],null==resolve&&(resolve=!0),in_locals=function(){return null!=locals?locals.contains(node.identifier):void 0},in_fields=function(){return null!=members?members.fields.contains(node.identifier):void 0},resolve&&(in_locals()?this._joinMap.put(node,BindingScope.new_local(locals.get_type(node.identifier))):in_fields()&&(pars=function(nm,fs){return[fs.get_type(nm),fs.is_static(nm)]}(node.identifier,members.fields),this._joinMap.put(node,BindingScope.new_field.apply(BindingScope,pars)))),BindingResolverVisitor.__super__.visitSimpleName.apply(this,[node,members,locals,resolve].concat(slice.call(args)))},BindingResolverVisitor.prototype.visitMethodDeclaration=function(){var args,locals,members,node,resolve,su;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],su=BindingResolverVisitor.__super__.visitMethodDeclaration.apply(this,[node,members,locals,!1].concat(slice.call(args))),function(_this){return function(lazy){return su(function(id,params,body,locals){return resolve!==!1&&(body=_this.visit.apply(_this,[node.body,members,locals,resolve].concat(slice.call(args)))),lazy(id,params,body,locals)})}}(this)},BindingResolverVisitor.prototype.visitFieldDeclaration=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visit.apply(this,[node.fragments].concat(slice.call(args))),BindingResolverVisitor.__super__.visitFieldDeclaration.apply(this,[node].concat(slice.call(args)))},BindingResolverVisitor.prototype.visitMethodInvocation=function(){var args,locals,members,node,resolve,su;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],su=BindingResolverVisitor.__super__.visitMethodInvocation.apply(this,[node,members,locals,!1].concat(slice.call(args))),function(_this){return function(lazy){return su(function(id,params,expr){return params=_this.visit.apply(_this,[node.arguments,members,locals,resolve].concat(slice.call(args))),expr=_this.visit.apply(_this,[node.expression,members,locals,resolve].concat(slice.call(args))),function(methods){var pars,valid_expr;return valid_expr=!expr||"ThisExpression"===expr.type,valid_expr||(valid_expr="Identifier"===expr.type&&expr.name===members.scope_id.name),valid_expr&&methods("contains")?(pars=[methods("get_type"),methods("is_static")],_this._joinMap.put(node.name,BindingScope.new_method.apply(BindingScope,pars))):void 0}(function(nm){return members.methods[nm](id.name,params)}),lazy(id,params,expr)})}}(this)},BindingResolverVisitor.prototype.visitFieldAccess=function(){var args,locals,members,node,resolve,su;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],su=BindingResolverVisitor.__super__.visitFieldAccess.apply(this,[node,members,locals,!1].concat(slice.call(args))),function(_this){return function(lazy){return su(function(id,expr){return"ThisExpression"===expr.type&&(id=_this.visit.apply(_this,[node.name,members,locals,!0].concat(slice.call(args)))),expr=_this.visit.apply(_this,[node.expression,members,locals,resolve].concat(slice.call(args))),lazy(id,expr)})}}(this)},BindingResolverVisitor.prototype.visitVariableDeclarationFragment=function(){var args,locals,members,node,resolve,su;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],su=BindingResolverVisitor.__super__.visitVariableDeclarationFragment.apply(this,[node,members,locals,!1].concat(slice.call(args))),function(_this){return function(lazy){return su(function(id,init){return init=_this.visit.apply(_this,[node.initializer,members,locals,!0].concat(slice.call(args))),lazy(id,init)})}}(this)},BindingResolverVisitor.prototype.visitVariableDeclarationExpression=function(){var args,locals,members,node,resolve;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],BindingResolverVisitor.__super__.visitVariableDeclarationExpression.apply(this,[node,members,locals,!1].concat(slice.call(args)))},BindingResolverVisitor.prototype.visitSingleVariableDeclaration=function(){var args,locals,members,node,resolve;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],BindingResolverVisitor.__super__.visitSingleVariableDeclaration.apply(this,[node,members,locals,!1].concat(slice.call(args)))},BindingResolverVisitor.prototype.visitVariableDeclarationStatement=function(){var args,locals,members,node,resolve;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],BindingResolverVisitor.__super__.visitVariableDeclarationStatement.apply(this,[node,members,locals,!1].concat(slice.call(args)))},BindingResolverVisitor.prototype.visitSimpleType=function(){var args,locals,members,node,resolve;return node=arguments[0],members=arguments[1],locals=arguments[2],resolve=arguments[3],args=5<=arguments.length?slice.call(arguments,4):[],BindingResolverVisitor.__super__.visitSimpleType.apply(this,[node,members,locals,!1].concat(slice.call(args)))},BindingResolverVisitor.prototype.visitNumberLiteral=function(node){
return builders.literal(NaN)},BindingResolverVisitor.prototype.visitStringLiteral=function(node){return builders.literal(NaN)},BindingResolverVisitor}(ScopeVisitor),ClassBinding=function(){function ClassBinding(cls_node,arg){var _bindMap,_joinMap,_members,_visitor;if(_members=(null!=arg?arg:{_members:null})._members,this.clone_super=function(cls_node){var members;return members=_members.clone_super(cls_node),new this.constructor(cls_node,{_members:members})},"TypeDeclaration"!==cls_node.node)throw"ASSERT: TypeDeclaration node expected";_joinMap=new Map,_visitor=new BindingResolverVisitor(_joinMap),_members=_visitor.visit(cls_node,_members),this.overload=_members.methods.overload,this.ls_potential_overloads=_members.methods.ls_potential_overloads,this.class_id=_members.scope_id,_bindMap=new Map,this.resolve_id=function(idnd){var foreign;return foreign=_bindMap.get(idnd),_joinMap.get(foreign)},this.bind=function(arg1){var curr,foreign,id;if(id=arg1.id,foreign=arg1.foreign,curr=_bindMap.get(id))throw"ASSERT: es one to one expected "+dump(id)+", "+dump(curr)+" => "+dump(foreign);return _bindMap.each(function(key,value){var dump;if(foreign===value)throw dump=ScopeVisitor.dump,"ASSERT: foreign one to one expected "+dump(key)+", "+dump(value)}),_bindMap.put(id,foreign)}}return ClassBinding}(),module.exports=ClassBinding},{"../collections/Map":53,"./BindingScope":48,"./ScopeVisitor":51,"ast-types":18}],51:[function(require,module,exports){var Dict,GenericVisitor,MemberScope,MicroVisitor,ScopeVisitor,VarScope,builders,estypes,ref,slice=[].slice,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;estypes=require("ast-types"),Dict=require("../collections/Dict"),ref=require("../GenericVisitor"),GenericVisitor=ref.GenericVisitor,MicroVisitor=ref.MicroVisitor,builders=estypes.builders,VarScope=function(){function VarScope(src,arg){var _unique_var_validator,_vars;null==src&&(src=null),_vars=(null!=arg?arg:{_vars:new Dict})._vars,this.contains=_vars.contains,this.get_type=function(name,def){var ref1;return null==def&&(def=null),(null!=(ref1=_vars.get_value(name))?ref1.type:void 0)||def},this.is_static=function(name){var ref1;return!!(null!=(ref1=_vars.get_value(name))?ref1["static"]:void 0)},this.is_private=function(name){var ref1;return!!(null!=(ref1=_vars.get_value(name))?ref1["private"]:void 0)},this.clone=function(){return new this.constructor(null,{_vars:_vars.clone()})},this.clone_super=function(){var su_fields,vars;return vars=new Dict,su_fields=[],_vars.each(function(k,v){var model;return v["private"]||(model=new VarModel(v.type,v["static"],!1,!0),vars.set_value(k,model)),model=new VarModel(v.type,v["static"],v["private"],!0),model.name=k,su_fields.push(model)}),[su_fields,new this.constructor(null,{_vars:vars})]},_unique_var_validator=[],this.collect_from=function(src){var VarCollector,safe_vars_set;return safe_vars_set=function(){var args,nm;if(nm=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],indexOf.call(_unique_var_validator,nm)>=0)throw"ASSERT: Duplicate Variable < "+nm+" >";return _unique_var_validator.push(nm),_vars.set_value.apply(_vars,[nm].concat(slice.call(args)))},VarCollector=function(superClass){function VarCollector(){return VarCollector.__super__.constructor.apply(this,arguments)}return extend(VarCollector,superClass),VarCollector.prototype.visitSingleVariableDeclaration=function(){var args,decl,model,node,type;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],decl=this.visit.apply(this,[node.name].concat(slice.call(args))),type=this.visit.apply(this,[node.type].concat(slice.call(args))),model=new VarModel(type),safe_vars_set(decl.name,model)},VarCollector.prototype.visitVariableDeclarationStatement=function(){var args,decl,decls,has_static,i,len,model,node,type;for(node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],decls=this.visit.apply(this,[node.fragments].concat(slice.call(args))),type=this.visit.apply(this,[node.type].concat(slice.call(args))),has_static=this.constructor.has_modifier(node,"static"),model=new VarModel(type,has_static),i=0,len=decls.length;len>i;i++)decl=decls[i],safe_vars_set(decl.id.name,model);return model},VarCollector.prototype.visitFieldDeclaration=function(){var args,model,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],model=this.visitVariableDeclarationStatement.apply(this,[node].concat(slice.call(args))),model["private"]=this.constructor.has_modifier(node,"private")},VarCollector.prototype.visitCatchClause=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visit.apply(this,[node.exception].concat(slice.call(args)))},VarCollector.prototype.visitVariableDeclarationFragment=function(){var args,id,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),builders.variableDeclarator(id,null)},VarCollector.prototype.visitForStatement=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visit.apply(this,[node.initializers].concat(slice.call(args)))},VarCollector.prototype.visitVariableDeclarationExpression=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.visitVariableDeclarationStatement.apply(this,[node].concat(slice.call(args)))},VarCollector.prototype.visitAssignment=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],this.constructor.IGNORE_ME},VarCollector.prototype.visitTypeDeclaration=function(){var args,node;throw node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],"NotImpl: Nested | Inner classes ?"},VarCollector}(MicroVisitor),(new VarCollector).visit(src)},src&&this.collect_from(src)}var VarModel;return VarModel=function(){function VarModel(type1,_static,_private,_super){this.type=type1,this["static"]=null!=_static?_static:!1,this["private"]=null!=_private?_private:!1,this["super"]=null!=_super?_super:!1}return VarModel}(),VarScope}(),MemberScope=function(){function MemberScope(cls_node,arg){var MembersCollector,_fields,_methods,_su_fields,_su_methods,ref1;ref1=null!=arg?arg:{_fields:new VarScope,_methods:new Dict,_su_fields:[],_su_methods:[]},_fields=ref1._fields,_methods=ref1._methods,_su_fields=ref1._su_fields,_su_methods=ref1._su_methods,this.clone_super=function(cls_node){var fields,methods,ref2,su_fields,su_methods;return methods=new Dict,su_methods=slice.call(_su_methods),_methods.each(function(k,v){var i,len,m,model,results;for(model=function(){var i,len,results;for(results=[],i=0,len=v.length;len>i;i++)m=v[i],m["private"]||results.push(new MethodModel(m.type,m.overload,m["static"],!1,!0,m.ctor));return results}(),model.length&&methods.set_value(k,model),results=[],i=0,len=v.length;len>i;i++)m=v[i],model=new MethodModel(m.type,m.overload,m["static"],m["private"],!0,m.ctor),model.name=k,results.push(su_methods.push(model));return results}),ref2=_fields.clone_super(),su_fields=ref2[0],fields=ref2[1],su_fields=slice.call(_su_fields).concat(slice.call(su_fields)),new this.constructor(cls_node,{_fields:fields,_methods:methods,_su_fields:su_fields,_su_methods:su_methods})},MembersCollector=function(superClass){function MembersCollector(){return MembersCollector.__super__.constructor.apply(this,arguments)}return extend(MembersCollector,superClass),MembersCollector.prototype.visitFieldDeclaration=function(){var args,node;return node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],_fields.collect_from(node)},MembersCollector.prototype.visitMethodDeclaration=function(){var args,has_private,has_static,i,id,len,model,models,node,overload,retype;for(node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],id=this.visit.apply(this,[node.name].concat(slice.call(args))),retype=this.visit.apply(this,[node.returnType2].concat(slice.call(args))),models=_methods.get_value(id.name,[]),overload=node.parameters.length,i=0,len=models.length;len>i;i++)if(model=models[i],overload===model.overload&&!model["super"])throw"NotImpl: Overload by argumens type "+id.name;return models=function(){var j,len1,results;for(results=[],j=0,len1=models.length;len1>j;j++)model=models[j],overload!==model.overload&&results.push(model);return results}(),has_static=this.constructor.has_modifier(node,"static"),has_private=this.constructor.has_modifier(node,"private"),models.push(new MethodModel(retype,overload,has_static,has_private,!1,node.constructor)),_methods.set_value(id.name,models)},MembersCollector.prototype.visitTypeDeclaration=function(){var args,node;if(node=arguments[0],args=2<=arguments.length?slice.call(arguments,1):[],node!==cls_node)throw"NotImpl: Nested | Inner classes ?";return this.visit.apply(this,[node.bodyDeclarations].concat(slice.call(args))),this.visit.apply(this,[node.name].concat(slice.call(args)))},MembersCollector}(MicroVisitor),this.scope_id=(new MembersCollector).visit(cls_node),this.fields=["get_type","contains","is_static","is_private"].reduce(function(left,right){return GenericVisitor.set_prop({obj:left,prop:right,value:_fields[right]})},{}),this.methods={contains:function(_this){return function(){var args,ref2;return args=1<=arguments.length?slice.call(arguments,0):[],null!==(ref2=_this.methods).get_type.apply(ref2,args)}}(this),get_type:function(name,params){var i,len,model,ref2;for(ref2=_methods.get_value(name,[]),i=0,len=ref2.length;len>i;i++)if(model=ref2[i],params.length===model.overload)return model.type;return null},is_static:function(name,params){var i,len,model,ref2;for(ref2=_methods.get_value(name,[]),i=0,len=ref2.length;len>i;i++)if(model=ref2[i],params.length===model.overload)return!!model["static"];return!1},is_private:function(name,params){var i,len,model,ref2;for(ref2=_methods.get_value(name,[]),i=0,len=ref2.length;len>i;i++)if(model=ref2[i],params.length===model.overload)return!!model["private"];return!1},ls_potential_overloads:function(){var ls;return ls=[],_methods.each(function(k,v){var c,instances,o,statics;return o=function(){var i,len,results;for(results=[],i=0,len=v.length;len>i;i++)c=v[i],c["super"]||c["private"]||c.ctor||results.push(c);return results}(),statics=function(){var i,len,results;for(results=[],i=0,len=o.length;len>i;i++)c=o[i],c["static"]&&results.push(c.overload);return results}(),statics.length&&ls.push({name:k,"static":!0,pars:statics}),instances=function(){var i,len,results;for(results=[],i=0,len=o.length;len>i;i++)c=o[i],c["static"]||results.push(c.overload);return results}(),instances.length?ls.push({name:k,"static":!1,pars:instances}):void 0}),ls},overload:function(name,params){var methods;return methods=_methods.get_value(name),(null!=methods?methods.length:void 0)?name+"$esjava$"+params.length:name}},validate(this.fields,this.methods,_su_fields,_su_methods)}var MethodModel,validate;return validate=function(fields,methods,su_fields,su_methods){var f,i,j,l,len,len1,len2,len3,m,n,o,ref1,results;for(i=0,len=su_fields.length;len>i;i++)if(f=su_fields[i],!f["static"]&&fields.contains(f.name)&&!fields.is_static(f.name)){if(f["private"])throw"NotImpl: field < "+f.name+" > conflicts with super private one";if(fields.is_private(f.name))throw"NotImpl: private field < "+f.name+" > conflicts with super one"}for(j=0,len1=su_methods.length;len1>j;j++)if(m=su_methods[j],!m["static"]&&methods.contains(m.name,new Array(m.overload))&&!methods.is_static(m.name,new Array(m.overload))){if(m["private"])throw"NotImpl: method < "+m.name+" > conflicts with super private one";if(methods.is_private(m.name,new Array(m.overload)))throw"NotImpl: private method < "+m.name+" > conflicts with super one"}for(ref1=methods.ls_potential_overloads(),results=[],l=0,len2=ref1.length;len2>l;l++){for(o=ref1[l],n=0,len3=su_fields.length;len3>n;n++)if(f=su_fields[n],!o["static"]&&!f["static"]&&f.name===o.name)throw"NotImpl: method < "+o.name+" > conflicts with same super field";if(fields.contains(o.name)&&o["static"]===fields.is_static(o.name))throw"NotImpl: field < "+o.name+" > conflicts with same method";results.push(void 0)}return results},MethodModel=function(){function MethodModel(type1,overload1,_static,_private,_super,ctor){this.type=type1,this.overload=overload1,this["static"]=null!=_static?_static:!1,this["private"]=null!=_private?_private:!1,this["super"]=null!=_super?_super:!1,this.ctor=null!=ctor?ctor:!1}return MethodModel}(),MemberScope}(),ScopeVisitor=function(superClass){function ScopeVisitor(){return ScopeVisitor.__super__.constructor.apply(this,arguments)}return extend(ScopeVisitor,superClass),ScopeVisitor.prototype.visitTypeDeclaration=function(){var args,members,node,su;return node=arguments[0],members=arguments[1],args=3<=arguments.length?slice.call(arguments,2):[],members||(members=new MemberScope(node)),su=ScopeVisitor.__super__.visitTypeDeclaration.apply(this,[node,members].concat(slice.call(args))),function(lazy){return su(function(id,decls,su){return lazy(id,decls,su,members)})}},ScopeVisitor.prototype.visitVariableDeclarationStatement=function(){var args,locals,members,node;return node=arguments[0],members=arguments[1],locals=arguments[2],args=4<=arguments.length?slice.call(arguments,3):[],locals.collect_from(node),ScopeVisitor.__super__.visitVariableDeclarationStatement.apply(this,[node,members,locals].concat(slice.call(args)))},ScopeVisitor.prototype.visitCatchClause=function(){var args,locals,members,node;return node=arguments[0],members=arguments[1],locals=arguments[2],args=4<=arguments.length?slice.call(arguments,3):[],locals=locals.clone(),locals.collect_from(node),ScopeVisitor.__super__.visitCatchClause.apply(this,[node,members,locals].concat(slice.call(args)))},ScopeVisitor.prototype.visitForStatement=function(){var args,locals,members,node;return node=arguments[0],members=arguments[1],locals=arguments[2],args=4<=arguments.length?slice.call(arguments,3):[],locals=locals.clone(),locals.collect_from(node),ScopeVisitor.__super__.visitForStatement.apply(this,[node,members,locals].concat(slice.call(args)))},ScopeVisitor.prototype.visitMethodDeclaration=function(){var args,locals,members,node,su;return node=arguments[0],members=arguments[1],locals=arguments[2],args=4<=arguments.length?slice.call(arguments,3):[],locals=new VarScope(node.parameters),su=ScopeVisitor.__super__.visitMethodDeclaration.apply(this,[node,members,locals].concat(slice.call(args))),function(lazy){return su(function(id,params,body){return lazy(id,params,body,locals)})}},ScopeVisitor.prototype.visitBlock=function(){var args,locals,members,node;return node=arguments[0],members=arguments[1],locals=arguments[2],args=4<=arguments.length?slice.call(arguments,3):[],ScopeVisitor.__super__.visitBlock.apply(this,[node,members,locals.clone()].concat(slice.call(args)))},ScopeVisitor}(GenericVisitor),module.exports=ScopeVisitor},{"../GenericVisitor":44,"../collections/Dict":52,"ast-types":18}],52:[function(require,module,exports){var Dict,hasProp={}.hasOwnProperty;Dict=function(){function Dict(locals){var _locals,key,value;_locals={},this.get_value=function(_this){return function(name,def){return null==def&&(def=null),_this.contains(name)?_locals[name]:def}}(this),this.contains=function(name){return{}.hasOwnProperty.call(_locals,name)},this.clone=function(_this){return function(){return new _this.constructor(_locals)}}(this),this.set_value=function(name,type){return _locals[name]=type},this.each=function(fn){var key,results,value;results=[];for(key in _locals)hasProp.call(_locals,key)&&(value=_locals[key],results.push(fn(key,value)));return results},this.values=function(){var key,results,value;results=[];for(key in _locals)hasProp.call(_locals,key)&&(value=_locals[key],results.push(value));return results},this.keys=function(){var key,results,value;results=[];for(key in _locals)hasProp.call(_locals,key)&&(value=_locals[key],results.push(key));return results};for(key in locals)hasProp.call(locals,key)&&(value=locals[key],this.set_value(key,value))}return Dict}(),module.exports=Dict},{}],53:[function(require,module,exports){var Map;Map=function(){function Map(){var _keys,_values;_keys=[],_values=[],this.put=function(key,value){var index;return index=_keys.indexOf(key),-1===index?(_keys.push(key),_values.push(value)):_values[index]=value},this.get=function(key,def){var index;return null==def&&(def=null),index=_keys.indexOf(key),-1===index?def:_values[index]},this.each=function(fn){var i,index,key,len,results;for(results=[],index=i=0,len=_keys.length;len>i;index=++i)key=_keys[index],results.push(fn(key,_values[index]));return results}}return Map}(),module.exports=Map},{}]},{},[43])(43)});