@codemcp/skills 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.mjs +14 -0
- package/dist/THIRD-PARTY-LICENSES.md +476 -0
- package/dist/_chunks/libs/@clack/core.mjs +769 -0
- package/dist/_chunks/libs/@clack/core.mjs.map +1 -0
- package/dist/_chunks/libs/@clack/prompts.mjs +358 -0
- package/dist/_chunks/libs/@clack/prompts.mjs.map +1 -0
- package/dist/_chunks/libs/@kwsites/file-exists.mjs +857 -0
- package/dist/_chunks/libs/@kwsites/file-exists.mjs.map +1 -0
- package/dist/_chunks/libs/@kwsites/promise-deferred.mjs +54 -0
- package/dist/_chunks/libs/@kwsites/promise-deferred.mjs.map +1 -0
- package/dist/_chunks/libs/esprima.mjs +5340 -0
- package/dist/_chunks/libs/esprima.mjs.map +1 -0
- package/dist/_chunks/libs/extend-shallow.mjs +36 -0
- package/dist/_chunks/libs/extend-shallow.mjs.map +1 -0
- package/dist/_chunks/libs/gray-matter.mjs +2719 -0
- package/dist/_chunks/libs/gray-matter.mjs.map +1 -0
- package/dist/_chunks/libs/simple-git.mjs +3606 -0
- package/dist/_chunks/libs/simple-git.mjs.map +1 -0
- package/dist/_chunks/libs/xdg-basedir.mjs +16 -0
- package/dist/_chunks/libs/xdg-basedir.mjs.map +1 -0
- package/dist/_chunks/rolldown-runtime.mjs +24 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +5679 -0
- package/dist/cli.mjs.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esprima.mjs","names":["module","exports"],"sources":["../../../../../node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/dist/esprima.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t var commentHandler = null;\n\t var proxyDelegate = function (node, metadata) {\n\t if (delegate) {\n\t delegate(node, metadata);\n\t }\n\t if (commentHandler) {\n\t commentHandler.visit(node, metadata);\n\t }\n\t };\n\t var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t var collectComment = false;\n\t if (options) {\n\t collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t if (collectComment || attachComment) {\n\t commentHandler = new comment_handler_1.CommentHandler();\n\t commentHandler.attach = attachComment;\n\t options.comment = true;\n\t parserDelegate = proxyDelegate;\n\t }\n\t }\n\t var isModule = false;\n\t if (options && typeof options.sourceType === 'string') {\n\t isModule = (options.sourceType === 'module');\n\t }\n\t var parser;\n\t if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t }\n\t else {\n\t parser = new parser_1.Parser(code, options, parserDelegate);\n\t }\n\t var program = isModule ? parser.parseModule() : parser.parseScript();\n\t var ast = program;\n\t if (collectComment && commentHandler) {\n\t ast.comments = commentHandler.comments;\n\t }\n\t if (parser.config.tokens) {\n\t ast.tokens = parser.tokens;\n\t }\n\t if (parser.config.tolerant) {\n\t ast.errors = parser.errorHandler.errors;\n\t }\n\t return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'module';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'script';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t var tokens;\n\t tokens = [];\n\t try {\n\t while (true) {\n\t var token = tokenizer.getNextToken();\n\t if (!token) {\n\t break;\n\t }\n\t if (delegate) {\n\t token = delegate(token);\n\t }\n\t tokens.push(token);\n\t }\n\t }\n\t catch (e) {\n\t tokenizer.errorHandler.tolerate(e);\n\t }\n\t if (tokenizer.errorHandler.tolerant) {\n\t tokens.errors = tokenizer.errors();\n\t }\n\t return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t function CommentHandler() {\n\t this.attach = false;\n\t this.comments = [];\n\t this.stack = [];\n\t this.leading = [];\n\t this.trailing = [];\n\t }\n\t CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t // innnerComments for properties empty block\n\t // `function a() {/** comments **\\/}`\n\t if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t var innerComments = [];\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (metadata.end.offset >= entry.start) {\n\t innerComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t this.trailing.splice(i, 1);\n\t }\n\t }\n\t if (innerComments.length) {\n\t node.innerComments = innerComments;\n\t }\n\t }\n\t };\n\t CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t var trailingComments = [];\n\t if (this.trailing.length > 0) {\n\t for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t var entry_1 = this.trailing[i];\n\t if (entry_1.start >= metadata.end.offset) {\n\t trailingComments.unshift(entry_1.comment);\n\t }\n\t }\n\t this.trailing.length = 0;\n\t return trailingComments;\n\t }\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.node.trailingComments) {\n\t var firstComment = entry.node.trailingComments[0];\n\t if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t trailingComments = entry.node.trailingComments;\n\t delete entry.node.trailingComments;\n\t }\n\t }\n\t return trailingComments;\n\t };\n\t CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t var leadingComments = [];\n\t var target;\n\t while (this.stack.length > 0) {\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.start >= metadata.start.offset) {\n\t target = entry.node;\n\t this.stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t if (target) {\n\t var count = target.leadingComments ? target.leadingComments.length : 0;\n\t for (var i = count - 1; i >= 0; --i) {\n\t var comment = target.leadingComments[i];\n\t if (comment.range[1] <= metadata.start.offset) {\n\t leadingComments.unshift(comment);\n\t target.leadingComments.splice(i, 1);\n\t }\n\t }\n\t if (target.leadingComments && target.leadingComments.length === 0) {\n\t delete target.leadingComments;\n\t }\n\t return leadingComments;\n\t }\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (entry.start <= metadata.start.offset) {\n\t leadingComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t }\n\t }\n\t return leadingComments;\n\t };\n\t CommentHandler.prototype.visitNode = function (node, metadata) {\n\t if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t return;\n\t }\n\t this.insertInnerComments(node, metadata);\n\t var trailingComments = this.findTrailingComments(metadata);\n\t var leadingComments = this.findLeadingComments(metadata);\n\t if (leadingComments.length > 0) {\n\t node.leadingComments = leadingComments;\n\t }\n\t if (trailingComments.length > 0) {\n\t node.trailingComments = trailingComments;\n\t }\n\t this.stack.push({\n\t node: node,\n\t start: metadata.start.offset\n\t });\n\t };\n\t CommentHandler.prototype.visitComment = function (node, metadata) {\n\t var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t var comment = {\n\t type: type,\n\t value: node.value\n\t };\n\t if (node.range) {\n\t comment.range = node.range;\n\t }\n\t if (node.loc) {\n\t comment.loc = node.loc;\n\t }\n\t this.comments.push(comment);\n\t if (this.attach) {\n\t var entry = {\n\t comment: {\n\t type: type,\n\t value: node.value,\n\t range: [metadata.start.offset, metadata.end.offset]\n\t },\n\t start: metadata.start.offset\n\t };\n\t if (node.loc) {\n\t entry.comment.loc = node.loc;\n\t }\n\t node.type = type;\n\t this.leading.push(entry);\n\t this.trailing.push(entry);\n\t }\n\t };\n\t CommentHandler.prototype.visit = function (node, metadata) {\n\t if (node.type === 'LineComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (node.type === 'BlockComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (this.attach) {\n\t this.visitNode(node, metadata);\n\t }\n\t };\n\t return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t AssignmentPattern: 'AssignmentPattern',\n\t ArrayExpression: 'ArrayExpression',\n\t ArrayPattern: 'ArrayPattern',\n\t ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t AwaitExpression: 'AwaitExpression',\n\t BlockStatement: 'BlockStatement',\n\t BinaryExpression: 'BinaryExpression',\n\t BreakStatement: 'BreakStatement',\n\t CallExpression: 'CallExpression',\n\t CatchClause: 'CatchClause',\n\t ClassBody: 'ClassBody',\n\t ClassDeclaration: 'ClassDeclaration',\n\t ClassExpression: 'ClassExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ContinueStatement: 'ContinueStatement',\n\t DoWhileStatement: 'DoWhileStatement',\n\t DebuggerStatement: 'DebuggerStatement',\n\t EmptyStatement: 'EmptyStatement',\n\t ExportAllDeclaration: 'ExportAllDeclaration',\n\t ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t ExportSpecifier: 'ExportSpecifier',\n\t ExpressionStatement: 'ExpressionStatement',\n\t ForStatement: 'ForStatement',\n\t ForOfStatement: 'ForOfStatement',\n\t ForInStatement: 'ForInStatement',\n\t FunctionDeclaration: 'FunctionDeclaration',\n\t FunctionExpression: 'FunctionExpression',\n\t Identifier: 'Identifier',\n\t IfStatement: 'IfStatement',\n\t ImportDeclaration: 'ImportDeclaration',\n\t ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t ImportSpecifier: 'ImportSpecifier',\n\t Literal: 'Literal',\n\t LabeledStatement: 'LabeledStatement',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t MetaProperty: 'MetaProperty',\n\t MethodDefinition: 'MethodDefinition',\n\t NewExpression: 'NewExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t ObjectPattern: 'ObjectPattern',\n\t Program: 'Program',\n\t Property: 'Property',\n\t RestElement: 'RestElement',\n\t ReturnStatement: 'ReturnStatement',\n\t SequenceExpression: 'SequenceExpression',\n\t SpreadElement: 'SpreadElement',\n\t Super: 'Super',\n\t SwitchCase: 'SwitchCase',\n\t SwitchStatement: 'SwitchStatement',\n\t TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t TemplateElement: 'TemplateElement',\n\t TemplateLiteral: 'TemplateLiteral',\n\t ThisExpression: 'ThisExpression',\n\t ThrowStatement: 'ThrowStatement',\n\t TryStatement: 'TryStatement',\n\t UnaryExpression: 'UnaryExpression',\n\t UpdateExpression: 'UpdateExpression',\n\t VariableDeclaration: 'VariableDeclaration',\n\t VariableDeclarator: 'VariableDeclarator',\n\t WhileStatement: 'WhileStatement',\n\t WithStatement: 'WithStatement',\n\t YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t var qualifiedName;\n\t switch (elementName.type) {\n\t case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t var id = elementName;\n\t qualifiedName = id.name;\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t var ns = elementName;\n\t qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t getQualifiedElementName(ns.name);\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t var expr = elementName;\n\t qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t getQualifiedElementName(expr.property);\n\t break;\n\t /* istanbul ignore next */\n\t default:\n\t break;\n\t }\n\t return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t __extends(JSXParser, _super);\n\t function JSXParser(code, options, delegate) {\n\t return _super.call(this, code, options, delegate) || this;\n\t }\n\t JSXParser.prototype.parsePrimaryExpression = function () {\n\t return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t };\n\t JSXParser.prototype.startJSX = function () {\n\t // Unwind the scanner before the lookahead token.\n\t this.scanner.index = this.startMarker.index;\n\t this.scanner.lineNumber = this.startMarker.line;\n\t this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t };\n\t JSXParser.prototype.finishJSX = function () {\n\t // Prime the next lookahead.\n\t this.nextToken();\n\t };\n\t JSXParser.prototype.reenterJSX = function () {\n\t this.startJSX();\n\t this.expectJSX('}');\n\t // Pop the closing '}' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t };\n\t JSXParser.prototype.createJSXNode = function () {\n\t this.collectComments();\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.createJSXChildNode = function () {\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t var result = '&';\n\t var valid = true;\n\t var terminated = false;\n\t var numeric = false;\n\t var hex = false;\n\t while (!this.scanner.eof() && valid && !terminated) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === quote) {\n\t break;\n\t }\n\t terminated = (ch === ';');\n\t result += ch;\n\t ++this.scanner.index;\n\t if (!terminated) {\n\t switch (result.length) {\n\t case 2:\n\t // e.g. '{'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. 'A'\n\t hex = (ch === 'x');\n\t valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t numeric = numeric && !hex;\n\t }\n\t break;\n\t default:\n\t valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t break;\n\t }\n\t }\n\t }\n\t if (valid && terminated && result.length > 2) {\n\t // e.g. 'A' becomes just '#x41'\n\t var str = result.substr(1, result.length - 2);\n\t if (numeric && str.length > 1) {\n\t result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t }\n\t else if (hex && str.length > 2) {\n\t result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t }\n\t else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t result = xhtml_entities_1.XHTMLEntities[str];\n\t }\n\t }\n\t return result;\n\t };\n\t // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t JSXParser.prototype.lexJSX = function () {\n\t var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t // < > / : = { }\n\t if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t var value = this.scanner.source[this.scanner.index++];\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index - 1,\n\t end: this.scanner.index\n\t };\n\t }\n\t // \" '\n\t if (cp === 34 || cp === 39) {\n\t var start = this.scanner.index;\n\t var quote = this.scanner.source[this.scanner.index++];\n\t var str = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index++];\n\t if (ch === quote) {\n\t break;\n\t }\n\t else if (ch === '&') {\n\t str += this.scanXHTMLEntity(quote);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // ... or .\n\t if (cp === 46) {\n\t var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t var start = this.scanner.index;\n\t this.scanner.index += value.length;\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // `\n\t if (cp === 96) {\n\t // Only placeholder, since it will be rescanned as a real assignment expression.\n\t return {\n\t type: 10 /* Template */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index,\n\t end: this.scanner.index\n\t };\n\t }\n\t // Identifer can not contain backslash (char code 92).\n\t if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t var start = this.scanner.index;\n\t ++this.scanner.index;\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t ++this.scanner.index;\n\t }\n\t else if (ch === 45) {\n\t // Hyphen (char code 45) can be part of an identifier.\n\t ++this.scanner.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t var id = this.scanner.source.slice(start, this.scanner.index);\n\t return {\n\t type: 100 /* Identifier */,\n\t value: id,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t return this.scanner.lex();\n\t };\n\t JSXParser.prototype.nextJSXToken = function () {\n\t this.collectComments();\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = this.lexJSX();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t if (this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.nextJSXText = function () {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var start = this.scanner.index;\n\t var text = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === '{' || ch === '<') {\n\t break;\n\t }\n\t ++this.scanner.index;\n\t text += ch;\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.scanner.lineNumber;\n\t if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t ++this.scanner.index;\n\t }\n\t this.scanner.lineStart = this.scanner.index;\n\t }\n\t }\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = {\n\t type: 101 /* Text */,\n\t value: text,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t if ((text.length > 0) && this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.peekJSXToken = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.lexJSX();\n\t this.scanner.restoreState(state);\n\t return next;\n\t };\n\t // Expect the next JSX token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t JSXParser.prototype.expectJSX = function (value) {\n\t var token = this.nextJSXToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next JSX token matches the specified punctuator.\n\t JSXParser.prototype.matchJSX = function (value) {\n\t var next = this.peekJSXToken();\n\t return next.type === 7 /* Punctuator */ && next.value === value;\n\t };\n\t JSXParser.prototype.parseJSXIdentifier = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 100 /* Identifier */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t };\n\t JSXParser.prototype.parseJSXElementName = function () {\n\t var node = this.createJSXNode();\n\t var elementName = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = elementName;\n\t this.expectJSX(':');\n\t var name_1 = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t }\n\t else if (this.matchJSX('.')) {\n\t while (this.matchJSX('.')) {\n\t var object = elementName;\n\t this.expectJSX('.');\n\t var property = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t }\n\t }\n\t return elementName;\n\t };\n\t JSXParser.prototype.parseJSXAttributeName = function () {\n\t var node = this.createJSXNode();\n\t var attributeName;\n\t var identifier = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = identifier;\n\t this.expectJSX(':');\n\t var name_2 = this.parseJSXIdentifier();\n\t attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t }\n\t else {\n\t attributeName = identifier;\n\t }\n\t return attributeName;\n\t };\n\t JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 8 /* StringLiteral */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.finishJSX();\n\t if (this.match('}')) {\n\t this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t }\n\t var expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXAttributeValue = function () {\n\t return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t };\n\t JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t var node = this.createJSXNode();\n\t var name = this.parseJSXAttributeName();\n\t var value = null;\n\t if (this.matchJSX('=')) {\n\t this.expectJSX('=');\n\t value = this.parseJSXAttributeValue();\n\t }\n\t return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t };\n\t JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.expectJSX('...');\n\t this.finishJSX();\n\t var argument = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t };\n\t JSXParser.prototype.parseJSXAttributes = function () {\n\t var attributes = [];\n\t while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t this.parseJSXNameValueAttribute();\n\t attributes.push(attribute);\n\t }\n\t return attributes;\n\t };\n\t JSXParser.prototype.parseJSXOpeningElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t if (this.matchJSX('/')) {\n\t this.expectJSX('/');\n\t var name_3 = this.parseJSXElementName();\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t }\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t var node = this.createJSXChildNode();\n\t this.collectComments();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t };\n\t JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t var expression;\n\t if (this.matchJSX('}')) {\n\t expression = this.parseJSXEmptyExpression();\n\t this.expectJSX('}');\n\t }\n\t else {\n\t this.finishJSX();\n\t expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t }\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXChildren = function () {\n\t var children = [];\n\t while (!this.scanner.eof()) {\n\t var node = this.createJSXChildNode();\n\t var token = this.nextJSXText();\n\t if (token.start < token.end) {\n\t var raw = this.getTokenRaw(token);\n\t var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t children.push(child);\n\t }\n\t if (this.scanner.source[this.scanner.index] === '{') {\n\t var container = this.parseJSXExpressionContainer();\n\t children.push(container);\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return children;\n\t };\n\t JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t var stack = [];\n\t while (!this.scanner.eof()) {\n\t el.children = el.children.concat(this.parseJSXChildren());\n\t var node = this.createJSXChildNode();\n\t var element = this.parseJSXBoundaryElement();\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t var opening = element;\n\t if (opening.selfClosing) {\n\t var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t el.children.push(child);\n\t }\n\t else {\n\t stack.push(el);\n\t el = { node: node, opening: opening, closing: null, children: [] };\n\t }\n\t }\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t el.closing = element;\n\t var open_1 = getQualifiedElementName(el.opening.name);\n\t var close_1 = getQualifiedElementName(el.closing.name);\n\t if (open_1 !== close_1) {\n\t this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t }\n\t if (stack.length > 0) {\n\t var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t el = stack[stack.length - 1];\n\t el.children.push(child);\n\t stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t }\n\t return el;\n\t };\n\t JSXParser.prototype.parseJSXElement = function () {\n\t var node = this.createJSXNode();\n\t var opening = this.parseJSXOpeningElement();\n\t var children = [];\n\t var closing = null;\n\t if (!opening.selfClosing) {\n\t var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t children = el.children;\n\t closing = el.closing;\n\t }\n\t return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t };\n\t JSXParser.prototype.parseJSXRoot = function () {\n\t // Pop the opening '<' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t this.startJSX();\n\t var element = this.parseJSXElement();\n\t this.finishJSX();\n\t return element;\n\t };\n\t JSXParser.prototype.isStartOfExpression = function () {\n\t return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t };\n\t return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t 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-\\u08B4\\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\\u0AF9\\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-\\u0C5A\\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\\u0D5F-\\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-\\u13F5\\u13F8-\\u13FD\\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\\u19B0-\\u19C9\\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-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\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-\\uAB65\\uAB70-\\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\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\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\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\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\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t 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-\\u08B4\\u08E3-\\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\\u0AF9\\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-\\u0C5A\\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\\u0D5F-\\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-\\u13F5\\u13F8-\\u13FD\\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-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\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-\\uAB65\\uAB70-\\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-\\uFE2F\\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\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\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\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\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]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\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\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t /* tslint:disable:no-bitwise */\n\t fromCodePoint: function (cp) {\n\t return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-white-space\n\t isWhiteSpace: function (cp) {\n\t return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-line-terminators\n\t isLineTerminator: function (cp) {\n\t return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t isIdentifierStart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t isIdentifierPart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp >= 0x30 && cp <= 0x39) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t isDecimalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t },\n\t isHexDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39) ||\n\t (cp >= 0x41 && cp <= 0x46) ||\n\t (cp >= 0x61 && cp <= 0x66); // a..f\n\t },\n\t isOctalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t function JSXClosingElement(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t this.name = name;\n\t }\n\t return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t function JSXElement(openingElement, children, closingElement) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t this.openingElement = openingElement;\n\t this.children = children;\n\t this.closingElement = closingElement;\n\t }\n\t return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t function JSXEmptyExpression() {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t }\n\t return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t function JSXExpressionContainer(expression) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t this.expression = expression;\n\t }\n\t return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t function JSXIdentifier(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t this.name = name;\n\t }\n\t return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t function JSXMemberExpression(object, property) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t function JSXAttribute(name, value) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t this.name = name;\n\t this.value = value;\n\t }\n\t return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t function JSXNamespacedName(namespace, name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t this.namespace = namespace;\n\t this.name = name;\n\t }\n\t return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t function JSXOpeningElement(name, selfClosing, attributes) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t this.name = name;\n\t this.selfClosing = selfClosing;\n\t this.attributes = attributes;\n\t }\n\t return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t function JSXSpreadAttribute(argument) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t this.argument = argument;\n\t }\n\t return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t function JSXText(value, raw) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t JSXAttribute: 'JSXAttribute',\n\t JSXClosingElement: 'JSXClosingElement',\n\t JSXElement: 'JSXElement',\n\t JSXEmptyExpression: 'JSXEmptyExpression',\n\t JSXExpressionContainer: 'JSXExpressionContainer',\n\t JSXIdentifier: 'JSXIdentifier',\n\t JSXMemberExpression: 'JSXMemberExpression',\n\t JSXNamespacedName: 'JSXNamespacedName',\n\t JSXOpeningElement: 'JSXOpeningElement',\n\t JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t function ArrayExpression(elements) {\n\t this.type = syntax_1.Syntax.ArrayExpression;\n\t this.elements = elements;\n\t }\n\t return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t function ArrayPattern(elements) {\n\t this.type = syntax_1.Syntax.ArrayPattern;\n\t this.elements = elements;\n\t }\n\t return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t function ArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = false;\n\t }\n\t return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t function AssignmentExpression(operator, left, right) {\n\t this.type = syntax_1.Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t function AssignmentPattern(left, right) {\n\t this.type = syntax_1.Syntax.AssignmentPattern;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t function AsyncArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = true;\n\t }\n\t return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t function AsyncFunctionDeclaration(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t function AsyncFunctionExpression(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t function AwaitExpression(argument) {\n\t this.type = syntax_1.Syntax.AwaitExpression;\n\t this.argument = argument;\n\t }\n\t return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t function BinaryExpression(operator, left, right) {\n\t var logical = (operator === '||' || operator === '&&');\n\t this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t function BlockStatement(body) {\n\t this.type = syntax_1.Syntax.BlockStatement;\n\t this.body = body;\n\t }\n\t return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t function BreakStatement(label) {\n\t this.type = syntax_1.Syntax.BreakStatement;\n\t this.label = label;\n\t }\n\t return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t function CallExpression(callee, args) {\n\t this.type = syntax_1.Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t function CatchClause(param, body) {\n\t this.type = syntax_1.Syntax.CatchClause;\n\t this.param = param;\n\t this.body = body;\n\t }\n\t return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t function ClassBody(body) {\n\t this.type = syntax_1.Syntax.ClassBody;\n\t this.body = body;\n\t }\n\t return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t function ClassDeclaration(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassDeclaration;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t function ClassExpression(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassExpression;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t function ComputedMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = true;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t function ConditionalExpression(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t function ContinueStatement(label) {\n\t this.type = syntax_1.Syntax.ContinueStatement;\n\t this.label = label;\n\t }\n\t return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t function DebuggerStatement() {\n\t this.type = syntax_1.Syntax.DebuggerStatement;\n\t }\n\t return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t function Directive(expression, directive) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.directive = directive;\n\t }\n\t return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t function DoWhileStatement(body, test) {\n\t this.type = syntax_1.Syntax.DoWhileStatement;\n\t this.body = body;\n\t this.test = test;\n\t }\n\t return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t function EmptyStatement() {\n\t this.type = syntax_1.Syntax.EmptyStatement;\n\t }\n\t return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t function ExportAllDeclaration(source) {\n\t this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t this.source = source;\n\t }\n\t return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t function ExportDefaultDeclaration(declaration) {\n\t this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t this.declaration = declaration;\n\t }\n\t return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t function ExportNamedDeclaration(declaration, specifiers, source) {\n\t this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t this.declaration = declaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t function ExportSpecifier(local, exported) {\n\t this.type = syntax_1.Syntax.ExportSpecifier;\n\t this.exported = exported;\n\t this.local = local;\n\t }\n\t return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t function ExpressionStatement(expression) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t }\n\t return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t function ForInStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForInStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t this.each = false;\n\t }\n\t return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t function ForOfStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForOfStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t }\n\t return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t function ForStatement(init, test, update, body) {\n\t this.type = syntax_1.Syntax.ForStatement;\n\t this.init = init;\n\t this.test = test;\n\t this.update = update;\n\t this.body = body;\n\t }\n\t return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t function FunctionDeclaration(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t function FunctionExpression(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t function Identifier(name) {\n\t this.type = syntax_1.Syntax.Identifier;\n\t this.name = name;\n\t }\n\t return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t function IfStatement(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.IfStatement;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t function ImportDeclaration(specifiers, source) {\n\t this.type = syntax_1.Syntax.ImportDeclaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t function ImportDefaultSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t this.local = local;\n\t }\n\t return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t function ImportNamespaceSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t this.local = local;\n\t }\n\t return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t function ImportSpecifier(local, imported) {\n\t this.type = syntax_1.Syntax.ImportSpecifier;\n\t this.local = local;\n\t this.imported = imported;\n\t }\n\t return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t function LabeledStatement(label, body) {\n\t this.type = syntax_1.Syntax.LabeledStatement;\n\t this.label = label;\n\t this.body = body;\n\t }\n\t return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t function Literal(value, raw) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t function MetaProperty(meta, property) {\n\t this.type = syntax_1.Syntax.MetaProperty;\n\t this.meta = meta;\n\t this.property = property;\n\t }\n\t return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t function MethodDefinition(key, computed, value, kind, isStatic) {\n\t this.type = syntax_1.Syntax.MethodDefinition;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.static = isStatic;\n\t }\n\t return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t function Module(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'module';\n\t }\n\t return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t function NewExpression(callee, args) {\n\t this.type = syntax_1.Syntax.NewExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t function ObjectExpression(properties) {\n\t this.type = syntax_1.Syntax.ObjectExpression;\n\t this.properties = properties;\n\t }\n\t return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t function ObjectPattern(properties) {\n\t this.type = syntax_1.Syntax.ObjectPattern;\n\t this.properties = properties;\n\t }\n\t return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t function Property(kind, key, computed, value, method, shorthand) {\n\t this.type = syntax_1.Syntax.Property;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.method = method;\n\t this.shorthand = shorthand;\n\t }\n\t return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t function RegexLiteral(value, raw, pattern, flags) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t this.regex = { pattern: pattern, flags: flags };\n\t }\n\t return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t function RestElement(argument) {\n\t this.type = syntax_1.Syntax.RestElement;\n\t this.argument = argument;\n\t }\n\t return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t function ReturnStatement(argument) {\n\t this.type = syntax_1.Syntax.ReturnStatement;\n\t this.argument = argument;\n\t }\n\t return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t function Script(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'script';\n\t }\n\t return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t function SequenceExpression(expressions) {\n\t this.type = syntax_1.Syntax.SequenceExpression;\n\t this.expressions = expressions;\n\t }\n\t return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t function SpreadElement(argument) {\n\t this.type = syntax_1.Syntax.SpreadElement;\n\t this.argument = argument;\n\t }\n\t return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t function StaticMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = false;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t function Super() {\n\t this.type = syntax_1.Syntax.Super;\n\t }\n\t return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t function SwitchCase(test, consequent) {\n\t this.type = syntax_1.Syntax.SwitchCase;\n\t this.test = test;\n\t this.consequent = consequent;\n\t }\n\t return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t function SwitchStatement(discriminant, cases) {\n\t this.type = syntax_1.Syntax.SwitchStatement;\n\t this.discriminant = discriminant;\n\t this.cases = cases;\n\t }\n\t return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t function TaggedTemplateExpression(tag, quasi) {\n\t this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t this.tag = tag;\n\t this.quasi = quasi;\n\t }\n\t return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t function TemplateElement(value, tail) {\n\t this.type = syntax_1.Syntax.TemplateElement;\n\t this.value = value;\n\t this.tail = tail;\n\t }\n\t return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t function TemplateLiteral(quasis, expressions) {\n\t this.type = syntax_1.Syntax.TemplateLiteral;\n\t this.quasis = quasis;\n\t this.expressions = expressions;\n\t }\n\t return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t function ThisExpression() {\n\t this.type = syntax_1.Syntax.ThisExpression;\n\t }\n\t return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t function ThrowStatement(argument) {\n\t this.type = syntax_1.Syntax.ThrowStatement;\n\t this.argument = argument;\n\t }\n\t return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t function TryStatement(block, handler, finalizer) {\n\t this.type = syntax_1.Syntax.TryStatement;\n\t this.block = block;\n\t this.handler = handler;\n\t this.finalizer = finalizer;\n\t }\n\t return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t function UnaryExpression(operator, argument) {\n\t this.type = syntax_1.Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t }\n\t return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t function UpdateExpression(operator, argument, prefix) {\n\t this.type = syntax_1.Syntax.UpdateExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = prefix;\n\t }\n\t return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t function VariableDeclaration(declarations, kind) {\n\t this.type = syntax_1.Syntax.VariableDeclaration;\n\t this.declarations = declarations;\n\t this.kind = kind;\n\t }\n\t return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t function VariableDeclarator(id, init) {\n\t this.type = syntax_1.Syntax.VariableDeclarator;\n\t this.id = id;\n\t this.init = init;\n\t }\n\t return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t function WhileStatement(test, body) {\n\t this.type = syntax_1.Syntax.WhileStatement;\n\t this.test = test;\n\t this.body = body;\n\t }\n\t return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t function WithStatement(object, body) {\n\t this.type = syntax_1.Syntax.WithStatement;\n\t this.object = object;\n\t this.body = body;\n\t }\n\t return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t function YieldExpression(argument, delegate) {\n\t this.type = syntax_1.Syntax.YieldExpression;\n\t this.argument = argument;\n\t this.delegate = delegate;\n\t }\n\t return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t function Parser(code, options, delegate) {\n\t if (options === void 0) { options = {}; }\n\t this.config = {\n\t range: (typeof options.range === 'boolean') && options.range,\n\t loc: (typeof options.loc === 'boolean') && options.loc,\n\t source: null,\n\t tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t comment: (typeof options.comment === 'boolean') && options.comment,\n\t tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t };\n\t if (this.config.loc && options.source && options.source !== null) {\n\t this.config.source = String(options.source);\n\t }\n\t this.delegate = delegate;\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = this.config.tolerant;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = this.config.comment;\n\t this.operatorPrecedence = {\n\t ')': 0,\n\t ';': 0,\n\t ',': 0,\n\t '=': 0,\n\t ']': 0,\n\t '||': 1,\n\t '&&': 2,\n\t '|': 3,\n\t '^': 4,\n\t '&': 5,\n\t '==': 6,\n\t '!=': 6,\n\t '===': 6,\n\t '!==': 6,\n\t '<': 7,\n\t '>': 7,\n\t '<=': 7,\n\t '>=': 7,\n\t '<<': 8,\n\t '>>': 8,\n\t '>>>': 8,\n\t '+': 9,\n\t '-': 9,\n\t '*': 11,\n\t '/': 11,\n\t '%': 11\n\t };\n\t this.lookahead = {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: 0,\n\t start: 0,\n\t end: 0\n\t };\n\t this.hasLineTerminator = false;\n\t this.context = {\n\t isModule: false,\n\t await: false,\n\t allowIn: true,\n\t allowStrictDirective: true,\n\t allowYield: true,\n\t firstCoverInitializedNameError: null,\n\t isAssignmentTarget: false,\n\t isBindingElement: false,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t labelSet: {},\n\t strict: false\n\t };\n\t this.tokens = [];\n\t this.startMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.lastMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.nextToken();\n\t this.lastMarker = {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t }\n\t Parser.prototype.throwError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t throw this.errorHandler.createError(index, line, column, msg);\n\t };\n\t Parser.prototype.tolerateError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.scanner.lineNumber;\n\t var column = this.lastMarker.column + 1;\n\t this.errorHandler.tolerateError(index, line, column, msg);\n\t };\n\t // Throw an exception because of the token.\n\t Parser.prototype.unexpectedTokenError = function (token, message) {\n\t var msg = message || messages_1.Messages.UnexpectedToken;\n\t var value;\n\t if (token) {\n\t if (!message) {\n\t msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t messages_1.Messages.UnexpectedToken;\n\t if (token.type === 4 /* Keyword */) {\n\t if (this.scanner.isFutureReservedWord(token.value)) {\n\t msg = messages_1.Messages.UnexpectedReserved;\n\t }\n\t else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t msg = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t value = token.value;\n\t }\n\t else {\n\t value = 'ILLEGAL';\n\t }\n\t msg = msg.replace('%0', value);\n\t if (token && typeof token.lineNumber === 'number') {\n\t var index = token.start;\n\t var line = token.lineNumber;\n\t var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t var column = token.start - lastMarkerLineStart + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t else {\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t };\n\t Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t throw this.unexpectedTokenError(token, message);\n\t };\n\t Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t };\n\t Parser.prototype.collectComments = function () {\n\t if (!this.config.comment) {\n\t this.scanner.scanComments();\n\t }\n\t else {\n\t var comments = this.scanner.scanComments();\n\t if (comments.length > 0 && this.delegate) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var node = void 0;\n\t node = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t };\n\t if (this.config.range) {\n\t node.range = e.range;\n\t }\n\t if (this.config.loc) {\n\t node.loc = e.loc;\n\t }\n\t var metadata = {\n\t start: {\n\t line: e.loc.start.line,\n\t column: e.loc.start.column,\n\t offset: e.range[0]\n\t },\n\t end: {\n\t line: e.loc.end.line,\n\t column: e.loc.end.column,\n\t offset: e.range[1]\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t }\n\t }\n\t };\n\t // From internal representation to an external structure\n\t Parser.prototype.getTokenRaw = function (token) {\n\t return this.scanner.source.slice(token.start, token.end);\n\t };\n\t Parser.prototype.convertToken = function (token) {\n\t var t = {\n\t type: token_1.TokenName[token.type],\n\t value: this.getTokenRaw(token)\n\t };\n\t if (this.config.range) {\n\t t.range = [token.start, token.end];\n\t }\n\t if (this.config.loc) {\n\t t.loc = {\n\t start: {\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t },\n\t end: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t }\n\t };\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t t.regex = { pattern: pattern, flags: flags };\n\t }\n\t return t;\n\t };\n\t Parser.prototype.nextToken = function () {\n\t var token = this.lookahead;\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t this.collectComments();\n\t if (this.scanner.index !== this.startMarker.index) {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t }\n\t var next = this.scanner.lex();\n\t this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t next.type = 4 /* Keyword */;\n\t }\n\t }\n\t this.lookahead = next;\n\t if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t this.tokens.push(this.convertToken(next));\n\t }\n\t return token;\n\t };\n\t Parser.prototype.nextRegexToken = function () {\n\t this.collectComments();\n\t var token = this.scanner.scanRegExp();\n\t if (this.config.tokens) {\n\t // Pop the previous token, '/' or '/='\n\t // This is added from the lookahead token.\n\t this.tokens.pop();\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t // Prime the next lookahead.\n\t this.lookahead = token;\n\t this.nextToken();\n\t return token;\n\t };\n\t Parser.prototype.createNode = function () {\n\t return {\n\t index: this.startMarker.index,\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t };\n\t };\n\t Parser.prototype.startNode = function (token, lastLineStart) {\n\t if (lastLineStart === void 0) { lastLineStart = 0; }\n\t var column = token.start - token.lineStart;\n\t var line = token.lineNumber;\n\t if (column < 0) {\n\t column += lastLineStart;\n\t line--;\n\t }\n\t return {\n\t index: token.start,\n\t line: line,\n\t column: column\n\t };\n\t };\n\t Parser.prototype.finalize = function (marker, node) {\n\t if (this.config.range) {\n\t node.range = [marker.index, this.lastMarker.index];\n\t }\n\t if (this.config.loc) {\n\t node.loc = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column\n\t }\n\t };\n\t if (this.config.source) {\n\t node.loc.source = this.config.source;\n\t }\n\t }\n\t if (this.delegate) {\n\t var metadata = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t offset: marker.index\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column,\n\t offset: this.lastMarker.index\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t return node;\n\t };\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expect = function (value) {\n\t var token = this.nextToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t Parser.prototype.expectCommaSeparator = function () {\n\t if (this.config.tolerant) {\n\t var token = this.lookahead;\n\t if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t this.nextToken();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t this.nextToken();\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t else {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t }\n\t }\n\t else {\n\t this.expect(',');\n\t }\n\t };\n\t // Expect the next token to match the specified keyword.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expectKeyword = function (keyword) {\n\t var token = this.nextToken();\n\t if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next token matches the specified punctuator.\n\t Parser.prototype.match = function (value) {\n\t return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t };\n\t // Return true if the next token matches the specified keyword\n\t Parser.prototype.matchKeyword = function (keyword) {\n\t return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token matches the specified contextual keyword\n\t // (where an identifier is sometimes a keyword depending on the context)\n\t Parser.prototype.matchContextualKeyword = function (keyword) {\n\t return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token is an assignment operator\n\t Parser.prototype.matchAssign = function () {\n\t if (this.lookahead.type !== 7 /* Punctuator */) {\n\t return false;\n\t }\n\t var op = this.lookahead.value;\n\t return op === '=' ||\n\t op === '*=' ||\n\t op === '**=' ||\n\t op === '/=' ||\n\t op === '%=' ||\n\t op === '+=' ||\n\t op === '-=' ||\n\t op === '<<=' ||\n\t op === '>>=' ||\n\t op === '>>>=' ||\n\t op === '&=' ||\n\t op === '^=' ||\n\t op === '|=';\n\t };\n\t // Cover grammar support.\n\t //\n\t // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t //\n\t // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t // after the outermost pair is closed. They are:\n\t //\n\t // 1. AssignmentExpression\n\t // 2. BindingElements\n\t // 3. AssignmentTargets\n\t //\n\t // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t // binding element or assignment target.\n\t //\n\t // The three productions have the relationship:\n\t //\n\t // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t //\n\t // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t //\n\t // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t // the CoverInitializedName check is conducted.\n\t //\n\t // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t // pattern. The CoverInitializedName check is deferred.\n\t Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t if (this.context.firstCoverInitializedNameError !== null) {\n\t this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t }\n\t this.context.isBindingElement = previousIsBindingElement;\n\t this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.consumeSemicolon = function () {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else if (!this.hasLineTerminator) {\n\t if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.lastMarker.index = this.startMarker.index;\n\t this.lastMarker.line = this.startMarker.line;\n\t this.lastMarker.column = this.startMarker.column;\n\t }\n\t };\n\t // https://tc39.github.io/ecma262/#sec-primary-expression\n\t Parser.prototype.parsePrimaryExpression = function () {\n\t var node = this.createNode();\n\t var expr;\n\t var token, raw;\n\t switch (this.lookahead.type) {\n\t case 3 /* Identifier */:\n\t if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t break;\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t if (this.context.strict && this.lookahead.octal) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 1 /* BooleanLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t break;\n\t case 5 /* NullLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(null, raw));\n\t break;\n\t case 10 /* Template */:\n\t expr = this.parseTemplateLiteral();\n\t break;\n\t case 7 /* Punctuator */:\n\t switch (this.lookahead.value) {\n\t case '(':\n\t this.context.isBindingElement = false;\n\t expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t break;\n\t case '[':\n\t expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t break;\n\t case '{':\n\t expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t break;\n\t case '/':\n\t case '/=':\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.scanner.index = this.startMarker.index;\n\t token = this.nextRegexToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t break;\n\t case 4 /* Keyword */:\n\t if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseIdentifierName();\n\t }\n\t else if (!this.context.strict && this.matchKeyword('let')) {\n\t expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t }\n\t else {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t if (this.matchKeyword('function')) {\n\t expr = this.parseFunctionExpression();\n\t }\n\t else if (this.matchKeyword('this')) {\n\t this.nextToken();\n\t expr = this.finalize(node, new Node.ThisExpression());\n\t }\n\t else if (this.matchKeyword('class')) {\n\t expr = this.parseClassExpression();\n\t }\n\t else {\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-array-initializer\n\t Parser.prototype.parseSpreadElement = function () {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t return this.finalize(node, new Node.SpreadElement(arg));\n\t };\n\t Parser.prototype.parseArrayInitializer = function () {\n\t var node = this.createNode();\n\t var elements = [];\n\t this.expect('[');\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else if (this.match('...')) {\n\t var element = this.parseSpreadElement();\n\t if (!this.match(']')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.expect(',');\n\t }\n\t elements.push(element);\n\t }\n\t else {\n\t elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayExpression(elements));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-object-initializer\n\t Parser.prototype.parsePropertyMethod = function (params) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = params.simple;\n\t var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t if (this.context.strict && params.firstRestricted) {\n\t this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t }\n\t if (this.context.strict && params.stricted) {\n\t this.tolerateUnexpectedToken(params.stricted, params.message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t return body;\n\t };\n\t Parser.prototype.parsePropertyMethodFunction = function () {\n\t var isGenerator = false;\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = false;\n\t this.context.await = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t };\n\t Parser.prototype.parseObjectPropertyKey = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var key;\n\t switch (token.type) {\n\t case 8 /* StringLiteral */:\n\t case 6 /* NumericLiteral */:\n\t if (this.context.strict && token.octal) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t key = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 3 /* Identifier */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 4 /* Keyword */:\n\t key = this.finalize(node, new Node.Identifier(token.value));\n\t break;\n\t case 7 /* Punctuator */:\n\t if (token.value === '[') {\n\t key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.expect(']');\n\t }\n\t else {\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t break;\n\t default:\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t return key;\n\t };\n\t Parser.prototype.isPropertyKey = function (key, value) {\n\t return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t };\n\t Parser.prototype.parseObjectProperty = function (hasProto) {\n\t var node = this.createNode();\n\t var token = this.lookahead;\n\t var kind;\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var shorthand = false;\n\t var isAsync = false;\n\t if (token.type === 3 /* Identifier */) {\n\t var id = token.value;\n\t this.nextToken();\n\t computed = this.match('[');\n\t isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t }\n\t else if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t else {\n\t if (!key) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t kind = 'init';\n\t if (this.match(':') && !isAsync) {\n\t if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t if (hasProto.value) {\n\t this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t }\n\t hasProto.value = true;\n\t }\n\t this.nextToken();\n\t value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (this.match('(')) {\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t else if (token.type === 3 /* Identifier */) {\n\t var id = this.finalize(node, new Node.Identifier(token.value));\n\t if (this.match('=')) {\n\t this.context.firstCoverInitializedNameError = this.lookahead;\n\t this.nextToken();\n\t shorthand = true;\n\t var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t }\n\t else {\n\t shorthand = true;\n\t value = id;\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectInitializer = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var properties = [];\n\t var hasProto = { value: false };\n\t while (!this.match('}')) {\n\t properties.push(this.parseObjectProperty(hasProto));\n\t if (!this.match('}')) {\n\t this.expectCommaSeparator();\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectExpression(properties));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literals\n\t Parser.prototype.parseTemplateHead = function () {\n\t assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateElement = function () {\n\t if (this.lookahead.type !== 10 /* Template */) {\n\t this.throwUnexpectedToken();\n\t }\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateLiteral = function () {\n\t var node = this.createNode();\n\t var expressions = [];\n\t var quasis = [];\n\t var quasi = this.parseTemplateHead();\n\t quasis.push(quasi);\n\t while (!quasi.tail) {\n\t expressions.push(this.parseExpression());\n\t quasi = this.parseTemplateElement();\n\t quasis.push(quasi);\n\t }\n\t return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t case syntax_1.Syntax.MemberExpression:\n\t case syntax_1.Syntax.RestElement:\n\t case syntax_1.Syntax.AssignmentPattern:\n\t break;\n\t case syntax_1.Syntax.SpreadElement:\n\t expr.type = syntax_1.Syntax.RestElement;\n\t this.reinterpretExpressionAsPattern(expr.argument);\n\t break;\n\t case syntax_1.Syntax.ArrayExpression:\n\t expr.type = syntax_1.Syntax.ArrayPattern;\n\t for (var i = 0; i < expr.elements.length; i++) {\n\t if (expr.elements[i] !== null) {\n\t this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectExpression:\n\t expr.type = syntax_1.Syntax.ObjectPattern;\n\t for (var i = 0; i < expr.properties.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t }\n\t break;\n\t case syntax_1.Syntax.AssignmentExpression:\n\t expr.type = syntax_1.Syntax.AssignmentPattern;\n\t delete expr.operator;\n\t this.reinterpretExpressionAsPattern(expr.left);\n\t break;\n\t default:\n\t // Allow other node type for tolerant parsing.\n\t break;\n\t }\n\t };\n\t Parser.prototype.parseGroupExpression = function () {\n\t var expr;\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.nextToken();\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [],\n\t async: false\n\t };\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var params = [];\n\t if (this.match('...')) {\n\t expr = this.parseRestElement(params);\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t else {\n\t var arrow = false;\n\t this.context.isBindingElement = true;\n\t expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t this.context.isAssignmentTarget = false;\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t if (this.match(')')) {\n\t this.nextToken();\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else if (this.match('...')) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t expressions.push(this.parseRestElement(params));\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t this.context.isBindingElement = false;\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else {\n\t expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t if (arrow) {\n\t break;\n\t }\n\t }\n\t if (!arrow) {\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t }\n\t if (!arrow) {\n\t this.expect(')');\n\t if (this.match('=>')) {\n\t if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t if (!arrow) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t for (var i = 0; i < expr.expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t }\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: parameters,\n\t async: false\n\t };\n\t }\n\t }\n\t this.context.isBindingElement = false;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t Parser.prototype.parseArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.isIdentifierName = function (token) {\n\t return token.type === 3 /* Identifier */ ||\n\t token.type === 4 /* Keyword */ ||\n\t token.type === 1 /* BooleanLiteral */ ||\n\t token.type === 5 /* NullLiteral */;\n\t };\n\t Parser.prototype.parseIdentifierName = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (!this.isIdentifierName(token)) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseNewExpression = function () {\n\t var node = this.createNode();\n\t var id = this.parseIdentifierName();\n\t assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t var expr;\n\t if (this.match('.')) {\n\t this.nextToken();\n\t if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t var property = this.parseIdentifierName();\n\t expr = new Node.MetaProperty(id, property);\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t var args = this.match('(') ? this.parseArguments() : [];\n\t expr = new Node.NewExpression(callee, args);\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return this.finalize(node, expr);\n\t };\n\t Parser.prototype.parseAsyncArgument = function () {\n\t var arg = this.parseAssignmentExpression();\n\t this.context.firstCoverInitializedNameError = null;\n\t return arg;\n\t };\n\t Parser.prototype.parseAsyncArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAsyncArgument);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t var startToken = this.lookahead;\n\t var maybeAsync = this.matchContextualKeyword('async');\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var expr;\n\t if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t expr = this.createNode();\n\t this.nextToken();\n\t expr = this.finalize(expr, new Node.Super());\n\t if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t }\n\t while (true) {\n\t if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.match('(')) {\n\t var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = false;\n\t var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t if (asyncArrow && this.match('=>')) {\n\t for (var i = 0; i < args.length; ++i) {\n\t this.reinterpretExpressionAsPattern(args[i]);\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: args,\n\t async: true\n\t };\n\t }\n\t }\n\t else if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t this.context.allowIn = previousAllowIn;\n\t return expr;\n\t };\n\t Parser.prototype.parseSuper = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('super');\n\t if (!this.match('[') && !this.match('.')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return this.finalize(node, new Node.Super());\n\t };\n\t Parser.prototype.parseLeftHandSideExpression = function () {\n\t assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t var node = this.startNode(this.lookahead);\n\t var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t while (true) {\n\t if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-update-expressions\n\t Parser.prototype.parseUpdateExpression = function () {\n\t var expr;\n\t var startToken = this.lookahead;\n\t if (this.match('++') || this.match('--')) {\n\t var node = this.startNode(startToken);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t var prefix = true;\n\t expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t if (this.match('++') || this.match('--')) {\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var operator = this.nextToken().value;\n\t var prefix = false;\n\t expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-unary-operators\n\t Parser.prototype.parseAwaitExpression = function () {\n\t var node = this.createNode();\n\t this.nextToken();\n\t var argument = this.parseUnaryExpression();\n\t return this.finalize(node, new Node.AwaitExpression(argument));\n\t };\n\t Parser.prototype.parseUnaryExpression = function () {\n\t var expr;\n\t if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t var node = this.startNode(this.lookahead);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t this.tolerateError(messages_1.Messages.StrictDelete);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else if (this.context.await && this.matchContextualKeyword('await')) {\n\t expr = this.parseAwaitExpression();\n\t }\n\t else {\n\t expr = this.parseUpdateExpression();\n\t }\n\t return expr;\n\t };\n\t Parser.prototype.parseExponentiationExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exp-operator\n\t // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t // https://tc39.github.io/ecma262/#sec-additive-operators\n\t // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t // https://tc39.github.io/ecma262/#sec-relational-operators\n\t // https://tc39.github.io/ecma262/#sec-equality-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t Parser.prototype.binaryPrecedence = function (token) {\n\t var op = token.value;\n\t var precedence;\n\t if (token.type === 7 /* Punctuator */) {\n\t precedence = this.operatorPrecedence[op] || 0;\n\t }\n\t else if (token.type === 4 /* Keyword */) {\n\t precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t }\n\t else {\n\t precedence = 0;\n\t }\n\t return precedence;\n\t };\n\t Parser.prototype.parseBinaryExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t var token = this.lookahead;\n\t var prec = this.binaryPrecedence(token);\n\t if (prec > 0) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var markers = [startToken, this.lookahead];\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t var stack = [left, token.value, right];\n\t var precedences = [prec];\n\t while (true) {\n\t prec = this.binaryPrecedence(this.lookahead);\n\t if (prec <= 0) {\n\t break;\n\t }\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t right = stack.pop();\n\t var operator = stack.pop();\n\t precedences.pop();\n\t left = stack.pop();\n\t markers.pop();\n\t var node = this.startNode(markers[markers.length - 1]);\n\t stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t }\n\t // Shift.\n\t stack.push(this.nextToken().value);\n\t precedences.push(prec);\n\t markers.push(this.lookahead);\n\t stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t }\n\t // Final reduce to clean-up the stack.\n\t var i = stack.length - 1;\n\t expr = stack[i];\n\t var lastMarker = markers.pop();\n\t while (i > 1) {\n\t var marker = markers.pop();\n\t var lastLineStart = lastMarker && lastMarker.lineStart;\n\t var node = this.startNode(marker, lastLineStart);\n\t var operator = stack[i - 1];\n\t expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t i -= 2;\n\t lastMarker = marker;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t Parser.prototype.parseConditionalExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t if (this.match('?')) {\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t this.expect(':');\n\t var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t Parser.prototype.checkPatternParam = function (options, param) {\n\t switch (param.type) {\n\t case syntax_1.Syntax.Identifier:\n\t this.validateParam(options, param, param.name);\n\t break;\n\t case syntax_1.Syntax.RestElement:\n\t this.checkPatternParam(options, param.argument);\n\t break;\n\t case syntax_1.Syntax.AssignmentPattern:\n\t this.checkPatternParam(options, param.left);\n\t break;\n\t case syntax_1.Syntax.ArrayPattern:\n\t for (var i = 0; i < param.elements.length; i++) {\n\t if (param.elements[i] !== null) {\n\t this.checkPatternParam(options, param.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectPattern:\n\t for (var i = 0; i < param.properties.length; i++) {\n\t this.checkPatternParam(options, param.properties[i].value);\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t };\n\t Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t var params = [expr];\n\t var options;\n\t var asyncArrow = false;\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t break;\n\t case ArrowParameterPlaceHolder:\n\t params = expr.params;\n\t asyncArrow = expr.async;\n\t break;\n\t default:\n\t return null;\n\t }\n\t options = {\n\t simple: true,\n\t paramSet: {}\n\t };\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t if (param.right.argument) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t param.right.type = syntax_1.Syntax.Identifier;\n\t param.right.name = 'yield';\n\t delete param.right.argument;\n\t delete param.right.delegate;\n\t }\n\t }\n\t else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.checkPatternParam(options, param);\n\t params[i] = param;\n\t }\n\t if (this.context.strict || !this.context.allowYield) {\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.YieldExpression) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t if (options.message === messages_1.Messages.StrictParamDupe) {\n\t var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t this.throwUnexpectedToken(token, options.message);\n\t }\n\t return {\n\t simple: options.simple,\n\t params: params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.parseAssignmentExpression = function () {\n\t var expr;\n\t if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseYieldExpression();\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var token = startToken;\n\t expr = this.parseConditionalExpression();\n\t if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t var arg = this.parsePrimaryExpression();\n\t this.reinterpretExpressionAsPattern(arg);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [arg],\n\t async: true\n\t };\n\t }\n\t }\n\t if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var isAsync = expr.async;\n\t var list = this.reinterpretAsCoverFormalsList(expr);\n\t if (list) {\n\t if (this.hasLineTerminator) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t this.context.firstCoverInitializedNameError = null;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = list.simple;\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = true;\n\t this.context.await = isAsync;\n\t var node = this.startNode(startToken);\n\t this.expect('=>');\n\t var body = void 0;\n\t if (this.match('{')) {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t body = this.parseFunctionSourceElements();\n\t this.context.allowIn = previousAllowIn;\n\t }\n\t else {\n\t body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t if (this.context.strict && list.firstRestricted) {\n\t this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t }\n\t if (this.context.strict && list.stricted) {\n\t this.tolerateUnexpectedToken(list.stricted, list.message);\n\t }\n\t expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t }\n\t }\n\t else {\n\t if (this.matchAssign()) {\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t var id = expr;\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t }\n\t if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t }\n\t if (!this.match('=')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t token = this.nextToken();\n\t var operator = token.value;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t this.context.firstCoverInitializedNameError = null;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comma-operator\n\t Parser.prototype.parseExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-block\n\t Parser.prototype.parseStatementListItem = function () {\n\t var statement;\n\t this.context.isAssignmentTarget = true;\n\t this.context.isBindingElement = true;\n\t if (this.lookahead.type === 4 /* Keyword */) {\n\t switch (this.lookahead.value) {\n\t case 'export':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t statement = this.parseExportDeclaration();\n\t break;\n\t case 'import':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t statement = this.parseImportDeclaration();\n\t break;\n\t case 'const':\n\t statement = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'class':\n\t statement = this.parseClassDeclaration();\n\t break;\n\t case 'let':\n\t statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t break;\n\t default:\n\t statement = this.parseStatement();\n\t break;\n\t }\n\t }\n\t else {\n\t statement = this.parseStatement();\n\t }\n\t return statement;\n\t };\n\t Parser.prototype.parseBlock = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var block = [];\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t block.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.BlockStatement(block));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, kind);\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (kind === 'const') {\n\t if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else {\n\t this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t }\n\t }\n\t }\n\t else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t this.expect('=');\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseBindingList = function (kind, options) {\n\t var list = [this.parseLexicalBinding(kind, options)];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseLexicalBinding(kind, options));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.isLexicalDeclaration = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t return (next.type === 3 /* Identifier */) ||\n\t (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t };\n\t Parser.prototype.parseLexicalDeclaration = function (options) {\n\t var node = this.createNode();\n\t var kind = this.nextToken().value;\n\t assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t var declarations = this.parseBindingList(kind, options);\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params, kind);\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseArrayPattern = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('[');\n\t var elements = [];\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else {\n\t if (this.match('...')) {\n\t elements.push(this.parseBindingRestElement(params, kind));\n\t break;\n\t }\n\t else {\n\t elements.push(this.parsePatternWithDefault(params, kind));\n\t }\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayPattern(elements));\n\t };\n\t Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var computed = false;\n\t var shorthand = false;\n\t var method = false;\n\t var key;\n\t var value;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t var keyToken = this.lookahead;\n\t key = this.parseVariableIdentifier();\n\t var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t if (this.match('=')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t this.nextToken();\n\t var expr = this.parseAssignmentExpression();\n\t value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t }\n\t else if (!this.match(':')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t value = init;\n\t }\n\t else {\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var properties = [];\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t properties.push(this.parsePropertyPattern(params, kind));\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectPattern(properties));\n\t };\n\t Parser.prototype.parsePattern = function (params, kind) {\n\t var pattern;\n\t if (this.match('[')) {\n\t pattern = this.parseArrayPattern(params, kind);\n\t }\n\t else if (this.match('{')) {\n\t pattern = this.parseObjectPattern(params, kind);\n\t }\n\t else {\n\t if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t }\n\t params.push(this.lookahead);\n\t pattern = this.parseVariableIdentifier(kind);\n\t }\n\t return pattern;\n\t };\n\t Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t var startToken = this.lookahead;\n\t var pattern = this.parsePattern(params, kind);\n\t if (this.match('=')) {\n\t this.nextToken();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowYield = previousAllowYield;\n\t pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t }\n\t return pattern;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-variable-statement\n\t Parser.prototype.parseVariableIdentifier = function (kind) {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else if (!this.context.allowYield) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t else if (token.type !== 3 /* Identifier */) {\n\t if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else {\n\t if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t }\n\t else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseVariableDeclaration = function (options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, 'var');\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t this.expect('=');\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseVariableDeclarationList = function (options) {\n\t var opt = { inFor: options.inFor };\n\t var list = [];\n\t list.push(this.parseVariableDeclaration(opt));\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseVariableDeclaration(opt));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.parseVariableStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('var');\n\t var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-empty-statement\n\t Parser.prototype.parseEmptyStatement = function () {\n\t var node = this.createNode();\n\t this.expect(';');\n\t return this.finalize(node, new Node.EmptyStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-expression-statement\n\t Parser.prototype.parseExpressionStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ExpressionStatement(expr));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-if-statement\n\t Parser.prototype.parseIfClause = function () {\n\t if (this.context.strict && this.matchKeyword('function')) {\n\t this.tolerateError(messages_1.Messages.StrictFunction);\n\t }\n\t return this.parseStatement();\n\t };\n\t Parser.prototype.parseIfStatement = function () {\n\t var node = this.createNode();\n\t var consequent;\n\t var alternate = null;\n\t this.expectKeyword('if');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t consequent = this.parseIfClause();\n\t if (this.matchKeyword('else')) {\n\t this.nextToken();\n\t alternate = this.parseIfClause();\n\t }\n\t }\n\t return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t Parser.prototype.parseDoWhileStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('do');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t var body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t }\n\t else {\n\t this.expect(')');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t }\n\t return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-while-statement\n\t Parser.prototype.parseWhileStatement = function () {\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return this.finalize(node, new Node.WhileStatement(test, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-for-statement\n\t // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t Parser.prototype.parseForStatement = function () {\n\t var init = null;\n\t var test = null;\n\t var update = null;\n\t var forIn = true;\n\t var left, right;\n\t var node = this.createNode();\n\t this.expectKeyword('for');\n\t this.expect('(');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t if (this.matchKeyword('var')) {\n\t init = this.createNode();\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && this.matchKeyword('in')) {\n\t var decl = declarations[0];\n\t if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t }\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.expect(';');\n\t }\n\t }\n\t else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t init = this.createNode();\n\t var kind = this.nextToken().value;\n\t if (!this.context.strict && this.lookahead.value === 'in') {\n\t init = this.finalize(init, new Node.Identifier(kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseBindingList(kind, { inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t }\n\t }\n\t }\n\t else {\n\t var initStartToken = this.lookahead;\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t if (this.matchKeyword('in')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (this.matchContextualKeyword('of')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t if (this.match(',')) {\n\t var initSeq = [init];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t }\n\t this.expect(';');\n\t }\n\t }\n\t }\n\t if (typeof left === 'undefined') {\n\t if (!this.match(';')) {\n\t test = this.parseExpression();\n\t }\n\t this.expect(';');\n\t if (!this.match(')')) {\n\t update = this.parseExpression();\n\t }\n\t }\n\t var body;\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.isolateCoverGrammar(this.parseStatement);\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return (typeof left === 'undefined') ?\n\t this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-continue-statement\n\t Parser.prototype.parseContinueStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('continue');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t label = id;\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration) {\n\t this.throwError(messages_1.Messages.IllegalContinue);\n\t }\n\t return this.finalize(node, new Node.ContinueStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-break-statement\n\t Parser.prototype.parseBreakStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('break');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t label = id;\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t this.throwError(messages_1.Messages.IllegalBreak);\n\t }\n\t return this.finalize(node, new Node.BreakStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-return-statement\n\t Parser.prototype.parseReturnStatement = function () {\n\t if (!this.context.inFunctionBody) {\n\t this.tolerateError(messages_1.Messages.IllegalReturn);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('return');\n\t var hasArgument = (!this.match(';') && !this.match('}') &&\n\t !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t this.lookahead.type === 8 /* StringLiteral */ ||\n\t this.lookahead.type === 10 /* Template */;\n\t var argument = hasArgument ? this.parseExpression() : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ReturnStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-with-statement\n\t Parser.prototype.parseWithStatement = function () {\n\t if (this.context.strict) {\n\t this.tolerateError(messages_1.Messages.StrictModeWith);\n\t }\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('with');\n\t this.expect('(');\n\t var object = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t body = this.parseStatement();\n\t }\n\t return this.finalize(node, new Node.WithStatement(object, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-switch-statement\n\t Parser.prototype.parseSwitchCase = function () {\n\t var node = this.createNode();\n\t var test;\n\t if (this.matchKeyword('default')) {\n\t this.nextToken();\n\t test = null;\n\t }\n\t else {\n\t this.expectKeyword('case');\n\t test = this.parseExpression();\n\t }\n\t this.expect(':');\n\t var consequent = [];\n\t while (true) {\n\t if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t break;\n\t }\n\t consequent.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t };\n\t Parser.prototype.parseSwitchStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('switch');\n\t this.expect('(');\n\t var discriminant = this.parseExpression();\n\t this.expect(')');\n\t var previousInSwitch = this.context.inSwitch;\n\t this.context.inSwitch = true;\n\t var cases = [];\n\t var defaultFound = false;\n\t this.expect('{');\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t var clause = this.parseSwitchCase();\n\t if (clause.test === null) {\n\t if (defaultFound) {\n\t this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t }\n\t defaultFound = true;\n\t }\n\t cases.push(clause);\n\t }\n\t this.expect('}');\n\t this.context.inSwitch = previousInSwitch;\n\t return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t Parser.prototype.parseLabelledStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var statement;\n\t if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t this.nextToken();\n\t var id = expr;\n\t var key = '$' + id.name;\n\t if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t }\n\t this.context.labelSet[key] = true;\n\t var body = void 0;\n\t if (this.matchKeyword('class')) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t body = this.parseClassDeclaration();\n\t }\n\t else if (this.matchKeyword('function')) {\n\t var token = this.lookahead;\n\t var declaration = this.parseFunctionDeclaration();\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t }\n\t else if (declaration.generator) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t }\n\t body = declaration;\n\t }\n\t else {\n\t body = this.parseStatement();\n\t }\n\t delete this.context.labelSet[key];\n\t statement = new Node.LabeledStatement(id, body);\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t statement = new Node.ExpressionStatement(expr);\n\t }\n\t return this.finalize(node, statement);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-throw-statement\n\t Parser.prototype.parseThrowStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('throw');\n\t if (this.hasLineTerminator) {\n\t this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t }\n\t var argument = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ThrowStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-try-statement\n\t Parser.prototype.parseCatchClause = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('catch');\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t var params = [];\n\t var param = this.parsePattern(params);\n\t var paramMap = {};\n\t for (var i = 0; i < params.length; i++) {\n\t var key = '$' + params[i].value;\n\t if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t }\n\t paramMap[key] = true;\n\t }\n\t if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(param.name)) {\n\t this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t }\n\t }\n\t this.expect(')');\n\t var body = this.parseBlock();\n\t return this.finalize(node, new Node.CatchClause(param, body));\n\t };\n\t Parser.prototype.parseFinallyClause = function () {\n\t this.expectKeyword('finally');\n\t return this.parseBlock();\n\t };\n\t Parser.prototype.parseTryStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('try');\n\t var block = this.parseBlock();\n\t var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t if (!handler && !finalizer) {\n\t this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t }\n\t return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t Parser.prototype.parseDebuggerStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('debugger');\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.DebuggerStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t Parser.prototype.parseStatement = function () {\n\t var statement;\n\t switch (this.lookahead.type) {\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t case 10 /* Template */:\n\t case 9 /* RegularExpression */:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t case 7 /* Punctuator */:\n\t var value = this.lookahead.value;\n\t if (value === '{') {\n\t statement = this.parseBlock();\n\t }\n\t else if (value === '(') {\n\t statement = this.parseExpressionStatement();\n\t }\n\t else if (value === ';') {\n\t statement = this.parseEmptyStatement();\n\t }\n\t else {\n\t statement = this.parseExpressionStatement();\n\t }\n\t break;\n\t case 3 /* Identifier */:\n\t statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t break;\n\t case 4 /* Keyword */:\n\t switch (this.lookahead.value) {\n\t case 'break':\n\t statement = this.parseBreakStatement();\n\t break;\n\t case 'continue':\n\t statement = this.parseContinueStatement();\n\t break;\n\t case 'debugger':\n\t statement = this.parseDebuggerStatement();\n\t break;\n\t case 'do':\n\t statement = this.parseDoWhileStatement();\n\t break;\n\t case 'for':\n\t statement = this.parseForStatement();\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'if':\n\t statement = this.parseIfStatement();\n\t break;\n\t case 'return':\n\t statement = this.parseReturnStatement();\n\t break;\n\t case 'switch':\n\t statement = this.parseSwitchStatement();\n\t break;\n\t case 'throw':\n\t statement = this.parseThrowStatement();\n\t break;\n\t case 'try':\n\t statement = this.parseTryStatement();\n\t break;\n\t case 'var':\n\t statement = this.parseVariableStatement();\n\t break;\n\t case 'while':\n\t statement = this.parseWhileStatement();\n\t break;\n\t case 'with':\n\t statement = this.parseWithStatement();\n\t break;\n\t default:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t }\n\t break;\n\t default:\n\t statement = this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return statement;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-function-definitions\n\t Parser.prototype.parseFunctionSourceElements = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var body = this.parseDirectivePrologues();\n\t var previousLabelSet = this.context.labelSet;\n\t var previousInIteration = this.context.inIteration;\n\t var previousInSwitch = this.context.inSwitch;\n\t var previousInFunctionBody = this.context.inFunctionBody;\n\t this.context.labelSet = {};\n\t this.context.inIteration = false;\n\t this.context.inSwitch = false;\n\t this.context.inFunctionBody = true;\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t body.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t this.context.labelSet = previousLabelSet;\n\t this.context.inIteration = previousInIteration;\n\t this.context.inSwitch = previousInSwitch;\n\t this.context.inFunctionBody = previousInFunctionBody;\n\t return this.finalize(node, new Node.BlockStatement(body));\n\t };\n\t Parser.prototype.validateParam = function (options, param, name) {\n\t var key = '$' + name;\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t else if (!options.firstRestricted) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictReservedWord;\n\t }\n\t else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t /* istanbul ignore next */\n\t if (typeof Object.defineProperty === 'function') {\n\t Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t }\n\t else {\n\t options.paramSet[key] = true;\n\t }\n\t };\n\t Parser.prototype.parseRestElement = function (params) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params);\n\t if (this.match('=')) {\n\t this.throwError(messages_1.Messages.DefaultRestParameter);\n\t }\n\t if (!this.match(')')) {\n\t this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t }\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseFormalParameter = function (options) {\n\t var params = [];\n\t var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t for (var i = 0; i < params.length; i++) {\n\t this.validateParam(options, params[i], params[i].value);\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t options.params.push(param);\n\t };\n\t Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t var options;\n\t options = {\n\t simple: true,\n\t params: [],\n\t firstRestricted: firstRestricted\n\t };\n\t this.expect('(');\n\t if (!this.match(')')) {\n\t options.paramSet = {};\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t this.parseFormalParameter(options);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expect(',');\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return {\n\t simple: options.simple,\n\t params: options.params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.matchAsyncFunction = function () {\n\t var match = this.matchContextualKeyword('async');\n\t if (match) {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t }\n\t return match;\n\t };\n\t Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted = null;\n\t if (!identifierIsOptional || !this.match('(')) {\n\t var token = this.lookahead;\n\t id = this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t };\n\t Parser.prototype.parseFunctionExpression = function () {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted;\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t if (!this.match('(')) {\n\t var token = this.lookahead;\n\t id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t Parser.prototype.parseDirective = function () {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t };\n\t Parser.prototype.parseDirectivePrologues = function () {\n\t var firstRestricted = null;\n\t var body = [];\n\t while (true) {\n\t var token = this.lookahead;\n\t if (token.type !== 8 /* StringLiteral */) {\n\t break;\n\t }\n\t var statement = this.parseDirective();\n\t body.push(statement);\n\t var directive = statement.directive;\n\t if (typeof directive !== 'string') {\n\t break;\n\t }\n\t if (directive === 'use strict') {\n\t this.context.strict = true;\n\t if (firstRestricted) {\n\t this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t if (!this.context.allowStrictDirective) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t }\n\t }\n\t else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t return body;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-method-definitions\n\t Parser.prototype.qualifiedPropertyName = function (token) {\n\t switch (token.type) {\n\t case 3 /* Identifier */:\n\t case 8 /* StringLiteral */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 4 /* Keyword */:\n\t return true;\n\t case 7 /* Punctuator */:\n\t return token.value === '[';\n\t default:\n\t break;\n\t }\n\t return false;\n\t };\n\t Parser.prototype.parseGetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length > 0) {\n\t this.tolerateError(messages_1.Messages.BadGetterArity);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseSetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length !== 1) {\n\t this.tolerateError(messages_1.Messages.BadSetterArity);\n\t }\n\t else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseGeneratorMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = true;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t this.context.allowYield = false;\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t Parser.prototype.isStartOfExpression = function () {\n\t var start = true;\n\t var value = this.lookahead.value;\n\t switch (this.lookahead.type) {\n\t case 7 /* Punctuator */:\n\t start = (value === '[') || (value === '(') || (value === '{') ||\n\t (value === '+') || (value === '-') ||\n\t (value === '!') || (value === '~') ||\n\t (value === '++') || (value === '--') ||\n\t (value === '/') || (value === '/='); // regular expression literal\n\t break;\n\t case 4 /* Keyword */:\n\t start = (value === 'class') || (value === 'delete') ||\n\t (value === 'function') || (value === 'let') || (value === 'new') ||\n\t (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t (value === 'void') || (value === 'yield');\n\t break;\n\t default:\n\t break;\n\t }\n\t return start;\n\t };\n\t Parser.prototype.parseYieldExpression = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('yield');\n\t var argument = null;\n\t var delegate = false;\n\t if (!this.hasLineTerminator) {\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = false;\n\t delegate = this.match('*');\n\t if (delegate) {\n\t this.nextToken();\n\t argument = this.parseAssignmentExpression();\n\t }\n\t else if (this.isStartOfExpression()) {\n\t argument = this.parseAssignmentExpression();\n\t }\n\t this.context.allowYield = previousAllowYield;\n\t }\n\t return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-class-definitions\n\t Parser.prototype.parseClassElement = function (hasConstructor) {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var kind = '';\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var isStatic = false;\n\t var isAsync = false;\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t var id = key;\n\t if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t token = this.lookahead;\n\t isStatic = true;\n\t computed = this.match('[');\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t key = this.parseObjectPropertyKey();\n\t }\n\t }\n\t if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t var punctuator = this.lookahead.value;\n\t if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t isAsync = true;\n\t token = this.lookahead;\n\t key = this.parseObjectPropertyKey();\n\t if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t }\n\t }\n\t }\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */) {\n\t if (token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t if (!kind && key && this.match('(')) {\n\t kind = 'init';\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t if (!kind) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (kind === 'init') {\n\t kind = 'method';\n\t }\n\t if (!computed) {\n\t if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t }\n\t if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t if (kind !== 'method' || !method || (value && value.generator)) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t }\n\t if (hasConstructor.value) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t }\n\t else {\n\t hasConstructor.value = true;\n\t }\n\t kind = 'constructor';\n\t }\n\t }\n\t return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t };\n\t Parser.prototype.parseClassElementList = function () {\n\t var body = [];\n\t var hasConstructor = { value: false };\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t body.push(this.parseClassElement(hasConstructor));\n\t }\n\t }\n\t this.expect('}');\n\t return body;\n\t };\n\t Parser.prototype.parseClassBody = function () {\n\t var node = this.createNode();\n\t var elementList = this.parseClassElementList();\n\t return this.finalize(node, new Node.ClassBody(elementList));\n\t };\n\t Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t };\n\t Parser.prototype.parseClassExpression = function () {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-scripts\n\t // https://tc39.github.io/ecma262/#sec-modules\n\t Parser.prototype.parseModule = function () {\n\t this.context.strict = true;\n\t this.context.isModule = true;\n\t this.scanner.isModule = true;\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Module(body));\n\t };\n\t Parser.prototype.parseScript = function () {\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Script(body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-imports\n\t Parser.prototype.parseModuleSpecifier = function () {\n\t var node = this.createNode();\n\t if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t }\n\t var token = this.nextToken();\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t // import {<foo as bar>} ...;\n\t Parser.prototype.parseImportSpecifier = function () {\n\t var node = this.createNode();\n\t var imported;\n\t var local;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t imported = this.parseVariableIdentifier();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t }\n\t else {\n\t imported = this.parseIdentifierName();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t };\n\t // {foo, bar as bas}\n\t Parser.prototype.parseNamedImports = function () {\n\t this.expect('{');\n\t var specifiers = [];\n\t while (!this.match('}')) {\n\t specifiers.push(this.parseImportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return specifiers;\n\t };\n\t // import <foo> ...;\n\t Parser.prototype.parseImportDefaultSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t };\n\t // import <* as foo> ...;\n\t Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t var node = this.createNode();\n\t this.expect('*');\n\t if (!this.matchContextualKeyword('as')) {\n\t this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t }\n\t this.nextToken();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t };\n\t Parser.prototype.parseImportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('import');\n\t var src;\n\t var specifiers = [];\n\t if (this.lookahead.type === 8 /* StringLiteral */) {\n\t // import 'foo';\n\t src = this.parseModuleSpecifier();\n\t }\n\t else {\n\t if (this.match('{')) {\n\t // import {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else if (this.match('*')) {\n\t // import * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t // import foo\n\t specifiers.push(this.parseImportDefaultSpecifier());\n\t if (this.match(',')) {\n\t this.nextToken();\n\t if (this.match('*')) {\n\t // import foo, * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.match('{')) {\n\t // import foo, {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t src = this.parseModuleSpecifier();\n\t }\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exports\n\t Parser.prototype.parseExportSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t var exported = local;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t exported = this.parseIdentifierName();\n\t }\n\t return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t };\n\t Parser.prototype.parseExportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('export');\n\t var exportDeclaration;\n\t if (this.matchKeyword('default')) {\n\t // export default ...\n\t this.nextToken();\n\t if (this.matchKeyword('function')) {\n\t // export default function foo () {}\n\t // export default function () {}\n\t var declaration = this.parseFunctionDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchKeyword('class')) {\n\t // export default class foo {}\n\t var declaration = this.parseClassDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchContextualKeyword('async')) {\n\t // export default async function f () {}\n\t // export default async function () {}\n\t // export default async x => x\n\t var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else {\n\t if (this.matchContextualKeyword('from')) {\n\t this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t }\n\t // export default {};\n\t // export default [];\n\t // export default (1 + 2);\n\t var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t }\n\t else if (this.match('*')) {\n\t // export * from 'foo';\n\t this.nextToken();\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t var src = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t }\n\t else if (this.lookahead.type === 4 /* Keyword */) {\n\t // export var f = 1;\n\t var declaration = void 0;\n\t switch (this.lookahead.value) {\n\t case 'let':\n\t case 'const':\n\t declaration = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'var':\n\t case 'class':\n\t case 'function':\n\t declaration = this.parseStatementListItem();\n\t break;\n\t default:\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else if (this.matchAsyncFunction()) {\n\t var declaration = this.parseFunctionDeclaration();\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else {\n\t var specifiers = [];\n\t var source = null;\n\t var isExportFromIdentifier = false;\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t specifiers.push(this.parseExportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t if (this.matchContextualKeyword('from')) {\n\t // export {default} from 'foo';\n\t // export {foo} from 'foo';\n\t this.nextToken();\n\t source = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t }\n\t else if (isExportFromIdentifier) {\n\t // export {default}; // missing fromClause\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t else {\n\t // export {foo};\n\t this.consumeSemicolon();\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t }\n\t return exportDeclaration;\n\t };\n\t return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t /* istanbul ignore if */\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t function ErrorHandler() {\n\t this.errors = [];\n\t this.tolerant = false;\n\t }\n\t ErrorHandler.prototype.recordError = function (error) {\n\t this.errors.push(error);\n\t };\n\t ErrorHandler.prototype.tolerate = function (error) {\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t ErrorHandler.prototype.constructError = function (msg, column) {\n\t var error = new Error(msg);\n\t try {\n\t throw error;\n\t }\n\t catch (base) {\n\t /* istanbul ignore else */\n\t if (Object.create && Object.defineProperty) {\n\t error = Object.create(base);\n\t Object.defineProperty(error, 'column', { value: column });\n\t }\n\t }\n\t /* istanbul ignore next */\n\t return error;\n\t };\n\t ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t var msg = 'Line ' + line + ': ' + description;\n\t var error = this.constructError(msg, col);\n\t error.index = index;\n\t error.lineNumber = line;\n\t error.description = description;\n\t return error;\n\t };\n\t ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t throw this.createError(index, line, col, description);\n\t };\n\t ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t var error = this.createError(index, line, col, description);\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t BadGetterArity: 'Getter must not have any formal parameters',\n\t BadSetterArity: 'Setter must have exactly one formal parameter',\n\t BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t ConstructorIsAsync: 'Class constructor may not be an async method',\n\t ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t DefaultRestParameter: 'Unexpected token =',\n\t DuplicateBinding: 'Duplicate binding %0',\n\t DuplicateConstructor: 'A class may only have one constructor',\n\t DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalExportDeclaration: 'Unexpected token',\n\t IllegalImportDeclaration: 'Unexpected token',\n\t IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t IllegalReturn: 'Illegal return statement',\n\t InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t InvalidModuleSpecifier: 'Unexpected token',\n\t InvalidRegExp: 'Invalid regular expression',\n\t LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t MissingFromClause: 'Unexpected token',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t NoAsAfterImportNamespace: 'Unexpected token',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t StaticPrototype: 'Classes may not have static property named prototype',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedTemplate: 'Unexpected quasi %0',\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t function Scanner(code, handler) {\n\t this.source = code;\n\t this.errorHandler = handler;\n\t this.trackComment = false;\n\t this.isModule = false;\n\t this.length = code.length;\n\t this.index = 0;\n\t this.lineNumber = (code.length > 0) ? 1 : 0;\n\t this.lineStart = 0;\n\t this.curlyStack = [];\n\t }\n\t Scanner.prototype.saveState = function () {\n\t return {\n\t index: this.index,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart\n\t };\n\t };\n\t Scanner.prototype.restoreState = function (state) {\n\t this.index = state.index;\n\t this.lineNumber = state.lineNumber;\n\t this.lineStart = state.lineStart;\n\t };\n\t Scanner.prototype.eof = function () {\n\t return this.index >= this.length;\n\t };\n\t Scanner.prototype.throwUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comments\n\t Scanner.prototype.skipSingleLineComment = function (offset) {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - offset;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - offset\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t ++this.index;\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 1\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index - 1],\n\t range: [start, this.index - 1],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t return comments;\n\t }\n\t }\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t };\n\t Scanner.prototype.skipMultiLineComment = function () {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - 2;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 2\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t ++this.index;\n\t this.lineStart = this.index;\n\t }\n\t else if (ch === 0x2A) {\n\t // Block comment ends with '*/'.\n\t if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t this.index += 2;\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index - 2],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t }\n\t ++this.index;\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t }\n\t // Ran off the end of the file - the whole thing is a comment\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t this.tolerateUnexpectedToken();\n\t return comments;\n\t };\n\t Scanner.prototype.scanComments = function () {\n\t var comments;\n\t if (this.trackComment) {\n\t comments = [];\n\t }\n\t var start = (this.index === 0);\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isWhiteSpace(ch)) {\n\t ++this.index;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch)) {\n\t ++this.index;\n\t if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t start = true;\n\t }\n\t else if (ch === 0x2F) {\n\t ch = this.source.charCodeAt(this.index + 1);\n\t if (ch === 0x2F) {\n\t this.index += 2;\n\t var comment = this.skipSingleLineComment(2);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t start = true;\n\t }\n\t else if (ch === 0x2A) {\n\t this.index += 2;\n\t var comment = this.skipMultiLineComment();\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (start && ch === 0x2D) {\n\t // U+003E is '>'\n\t if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t // '-->' is a single-line comment\n\t this.index += 3;\n\t var comment = this.skipSingleLineComment(3);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (ch === 0x3C && !this.isModule) {\n\t if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t this.index += 4; // `<!--`\n\t var comment = this.skipSingleLineComment(4);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return comments;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t Scanner.prototype.isFutureReservedWord = function (id) {\n\t switch (id) {\n\t case 'enum':\n\t case 'export':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isRestrictedWord = function (id) {\n\t return id === 'eval' || id === 'arguments';\n\t };\n\t // https://tc39.github.io/ecma262/#sec-keywords\n\t Scanner.prototype.isKeyword = function (id) {\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.codePointAt = function (i) {\n\t var cp = this.source.charCodeAt(i);\n\t if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t var second = this.source.charCodeAt(i + 1);\n\t if (second >= 0xDC00 && second <= 0xDFFF) {\n\t var first = cp;\n\t cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t }\n\t }\n\t return cp;\n\t };\n\t Scanner.prototype.scanHexEscape = function (prefix) {\n\t var len = (prefix === 'u') ? 4 : 2;\n\t var code = 0;\n\t for (var i = 0; i < len; ++i) {\n\t if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 16 + hexValue(this.source[this.index++]);\n\t }\n\t else {\n\t return null;\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t };\n\t Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t var ch = this.source[this.index];\n\t var code = 0;\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t code = code * 16 + hexValue(ch);\n\t }\n\t if (code > 0x10FFFF || ch !== '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t return character_1.Character.fromCodePoint(code);\n\t };\n\t Scanner.prototype.getIdentifier = function () {\n\t var start = this.index++;\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t // Need to handle surrogate pairs.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t if (character_1.Character.isIdentifierPart(ch)) {\n\t ++this.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return this.source.slice(start, this.index);\n\t };\n\t Scanner.prototype.getComplexIdentifier = function () {\n\t var cp = this.codePointAt(this.index);\n\t var id = character_1.Character.fromCodePoint(cp);\n\t this.index += id.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t var ch;\n\t if (cp === 0x5C) {\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id = ch;\n\t }\n\t while (!this.eof()) {\n\t cp = this.codePointAt(this.index);\n\t if (!character_1.Character.isIdentifierPart(cp)) {\n\t break;\n\t }\n\t ch = character_1.Character.fromCodePoint(cp);\n\t id += ch;\n\t this.index += ch.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (cp === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id += ch;\n\t }\n\t }\n\t return id;\n\t };\n\t Scanner.prototype.octalToDecimal = function (ch) {\n\t // \\0 is not octal escape sequence\n\t var octal = (ch !== '0');\n\t var code = octalValue(ch);\n\t if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t octal = true;\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t }\n\t }\n\t return {\n\t code: code,\n\t octal: octal\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t Scanner.prototype.scanIdentifier = function () {\n\t var type;\n\t var start = this.index;\n\t // Backslash (U+005C) starts an escaped character.\n\t var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = 3 /* Identifier */;\n\t }\n\t else if (this.isKeyword(id)) {\n\t type = 4 /* Keyword */;\n\t }\n\t else if (id === 'null') {\n\t type = 5 /* NullLiteral */;\n\t }\n\t else if (id === 'true' || id === 'false') {\n\t type = 1 /* BooleanLiteral */;\n\t }\n\t else {\n\t type = 3 /* Identifier */;\n\t }\n\t if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t var restore = this.index;\n\t this.index = start;\n\t this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t this.index = restore;\n\t }\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-punctuators\n\t Scanner.prototype.scanPunctuator = function () {\n\t var start = this.index;\n\t // Check for most common single-character punctuators.\n\t var str = this.source[this.index];\n\t switch (str) {\n\t case '(':\n\t case '{':\n\t if (str === '{') {\n\t this.curlyStack.push('{');\n\t }\n\t ++this.index;\n\t break;\n\t case '.':\n\t ++this.index;\n\t if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t // Spread operator: ...\n\t this.index += 2;\n\t str = '...';\n\t }\n\t break;\n\t case '}':\n\t ++this.index;\n\t this.curlyStack.pop();\n\t break;\n\t case ')':\n\t case ';':\n\t case ',':\n\t case '[':\n\t case ']':\n\t case ':':\n\t case '?':\n\t case '~':\n\t ++this.index;\n\t break;\n\t default:\n\t // 4-character punctuator.\n\t str = this.source.substr(this.index, 4);\n\t if (str === '>>>=') {\n\t this.index += 4;\n\t }\n\t else {\n\t // 3-character punctuators.\n\t str = str.substr(0, 3);\n\t if (str === '===' || str === '!==' || str === '>>>' ||\n\t str === '<<=' || str === '>>=' || str === '**=') {\n\t this.index += 3;\n\t }\n\t else {\n\t // 2-character punctuators.\n\t str = str.substr(0, 2);\n\t if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t this.index += 2;\n\t }\n\t else {\n\t // 1-character punctuators.\n\t str = this.source[this.index];\n\t if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t ++this.index;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t if (this.index === start) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: str,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t Scanner.prototype.scanHexLiteral = function (start) {\n\t var num = '';\n\t while (!this.eof()) {\n\t if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt('0x' + num, 16),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanBinaryLiteral = function (start) {\n\t var num = '';\n\t var ch;\n\t while (!this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch !== '0' && ch !== '1') {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t // only 0b or 0B\n\t this.throwUnexpectedToken();\n\t }\n\t if (!this.eof()) {\n\t ch = this.source.charCodeAt(this.index);\n\t /* istanbul ignore else */\n\t if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 2),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t var num = '';\n\t var octal = false;\n\t if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t octal = true;\n\t num = '0' + this.source[this.index++];\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t while (!this.eof()) {\n\t if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (!octal && num.length === 0) {\n\t // only 0o or 0O\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 8),\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.isImplicitOctalLiteral = function () {\n\t // Implicit octal, unless there is a non-octal digit.\n\t // (Annex B.1.1 on Numeric Literals)\n\t for (var i = this.index + 1; i < this.length; ++i) {\n\t var ch = this.source[i];\n\t if (ch === '8' || ch === '9') {\n\t return false;\n\t }\n\t if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t return true;\n\t }\n\t }\n\t return true;\n\t };\n\t Scanner.prototype.scanNumericLiteral = function () {\n\t var start = this.index;\n\t var ch = this.source[start];\n\t assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t var num = '';\n\t if (ch !== '.') {\n\t num = this.source[this.index++];\n\t ch = this.source[this.index];\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t // Octal number in ES6 starts with '0o'.\n\t // Binary number in ES6 starts with '0b'.\n\t if (num === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++this.index;\n\t return this.scanHexLiteral(start);\n\t }\n\t if (ch === 'b' || ch === 'B') {\n\t ++this.index;\n\t return this.scanBinaryLiteral(start);\n\t }\n\t if (ch === 'o' || ch === 'O') {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t if (this.isImplicitOctalLiteral()) {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t }\n\t }\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === '.') {\n\t num += this.source[this.index++];\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === 'e' || ch === 'E') {\n\t num += this.source[this.index++];\n\t ch = this.source[this.index];\n\t if (ch === '+' || ch === '-') {\n\t num += this.source[this.index++];\n\t }\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseFloat(num),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t Scanner.prototype.scanStringLiteral = function () {\n\t var start = this.index;\n\t var quote = this.source[start];\n\t assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t ++this.index;\n\t var octal = false;\n\t var str = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t str += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var unescaped_1 = this.scanHexEscape(ch);\n\t if (unescaped_1 === null) {\n\t this.throwUnexpectedToken();\n\t }\n\t str += unescaped_1;\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t str += unescaped;\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t case '8':\n\t case '9':\n\t str += ch;\n\t this.tolerateUnexpectedToken();\n\t break;\n\t default:\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t var octToDec = this.octalToDecimal(ch);\n\t octal = octToDec.octal || octal;\n\t str += String.fromCharCode(octToDec.code);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t if (quote !== '') {\n\t this.index = start;\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t Scanner.prototype.scanTemplate = function () {\n\t var cooked = '';\n\t var terminated = false;\n\t var start = this.index;\n\t var head = (this.source[start] === '`');\n\t var tail = false;\n\t var rawOffset = 2;\n\t ++this.index;\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === '`') {\n\t rawOffset = 1;\n\t tail = true;\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '$') {\n\t if (this.source[this.index] === '{') {\n\t this.curlyStack.push('${');\n\t ++this.index;\n\t terminated = true;\n\t break;\n\t }\n\t cooked += ch;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'n':\n\t cooked += '\\n';\n\t break;\n\t case 'r':\n\t cooked += '\\r';\n\t break;\n\t case 't':\n\t cooked += '\\t';\n\t break;\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t cooked += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var restore = this.index;\n\t var unescaped_2 = this.scanHexEscape(ch);\n\t if (unescaped_2 !== null) {\n\t cooked += unescaped_2;\n\t }\n\t else {\n\t this.index = restore;\n\t cooked += ch;\n\t }\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t cooked += unescaped;\n\t break;\n\t case 'b':\n\t cooked += '\\b';\n\t break;\n\t case 'f':\n\t cooked += '\\f';\n\t break;\n\t case 'v':\n\t cooked += '\\v';\n\t break;\n\t default:\n\t if (ch === '0') {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t // Illegal: \\01 \\02 and so on\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t cooked += '\\0';\n\t }\n\t else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t // Illegal: \\1 \\2\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t cooked += '\\n';\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (!head) {\n\t this.curlyStack.pop();\n\t }\n\t return {\n\t type: 10 /* Template */,\n\t value: this.source.slice(start + 1, this.index - rawOffset),\n\t cooked: cooked,\n\t head: head,\n\t tail: tail,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t Scanner.prototype.testRegExp = function (pattern, flags) {\n\t // The BMP character to use as a replacement for astral symbols when\n\t // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t // approximation.\n\t // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t // pattern that would not be detected by this substitution.\n\t var astralSubstitute = '\\uFFFF';\n\t var tmp = pattern;\n\t var self = this;\n\t if (flags.indexOf('u') >= 0) {\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t var codePoint = parseInt($1 || $2, 16);\n\t if (codePoint > 0x10FFFF) {\n\t self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t if (codePoint <= 0xFFFF) {\n\t return String.fromCharCode(codePoint);\n\t }\n\t return astralSubstitute;\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t }\n\t // First, detect invalid regular expressions.\n\t try {\n\t RegExp(tmp);\n\t }\n\t catch (e) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t }\n\t catch (exception) {\n\t /* istanbul ignore next */\n\t return null;\n\t }\n\t };\n\t Scanner.prototype.scanRegExpBody = function () {\n\t var ch = this.source[this.index];\n\t assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t var str = this.source[this.index++];\n\t var classMarker = false;\n\t var terminated = false;\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t }\n\t else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t // Exclude leading and trailing slash.\n\t return str.substr(1, str.length - 2);\n\t };\n\t Scanner.prototype.scanRegExpFlags = function () {\n\t var str = '';\n\t var flags = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index];\n\t if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t ++this.index;\n\t if (ch === '\\\\' && !this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch === 'u') {\n\t ++this.index;\n\t var restore = this.index;\n\t var char = this.scanHexEscape('u');\n\t if (char !== null) {\n\t flags += char;\n\t for (str += '\\\\u'; restore < this.index; ++restore) {\n\t str += this.source[restore];\n\t }\n\t }\n\t else {\n\t this.index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t this.tolerateUnexpectedToken();\n\t }\n\t else {\n\t str += '\\\\';\n\t this.tolerateUnexpectedToken();\n\t }\n\t }\n\t else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t return flags;\n\t };\n\t Scanner.prototype.scanRegExp = function () {\n\t var start = this.index;\n\t var pattern = this.scanRegExpBody();\n\t var flags = this.scanRegExpFlags();\n\t var value = this.testRegExp(pattern, flags);\n\t return {\n\t type: 9 /* RegularExpression */,\n\t value: '',\n\t pattern: pattern,\n\t flags: flags,\n\t regex: value,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.lex = function () {\n\t if (this.eof()) {\n\t return {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: this.index,\n\t end: this.index\n\t };\n\t }\n\t var cp = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isIdentifierStart(cp)) {\n\t return this.scanIdentifier();\n\t }\n\t // Very common: ( and ) and ;\n\t if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t return this.scanPunctuator();\n\t }\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (cp === 0x27 || cp === 0x22) {\n\t return this.scanStringLiteral();\n\t }\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (cp === 0x2E) {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t return this.scanNumericLiteral();\n\t }\n\t return this.scanPunctuator();\n\t }\n\t if (character_1.Character.isDecimalDigit(cp)) {\n\t return this.scanNumericLiteral();\n\t }\n\t // Template literals start with ` (U+0060) for template head\n\t // or } (U+007D) for template middle or template tail.\n\t if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t return this.scanTemplate();\n\t }\n\t // Possible identifier start in a surrogate pair.\n\t if (cp >= 0xD800 && cp < 0xDFFF) {\n\t if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t return this.scanIdentifier();\n\t }\n\t }\n\t return this.scanPunctuator();\n\t };\n\t return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t quot: '\\u0022',\n\t amp: '\\u0026',\n\t apos: '\\u0027',\n\t gt: '\\u003E',\n\t nbsp: '\\u00A0',\n\t iexcl: '\\u00A1',\n\t cent: '\\u00A2',\n\t pound: '\\u00A3',\n\t curren: '\\u00A4',\n\t yen: '\\u00A5',\n\t brvbar: '\\u00A6',\n\t sect: '\\u00A7',\n\t uml: '\\u00A8',\n\t copy: '\\u00A9',\n\t ordf: '\\u00AA',\n\t laquo: '\\u00AB',\n\t not: '\\u00AC',\n\t shy: '\\u00AD',\n\t reg: '\\u00AE',\n\t macr: '\\u00AF',\n\t deg: '\\u00B0',\n\t plusmn: '\\u00B1',\n\t sup2: '\\u00B2',\n\t sup3: '\\u00B3',\n\t acute: '\\u00B4',\n\t micro: '\\u00B5',\n\t para: '\\u00B6',\n\t middot: '\\u00B7',\n\t cedil: '\\u00B8',\n\t sup1: '\\u00B9',\n\t ordm: '\\u00BA',\n\t raquo: '\\u00BB',\n\t frac14: '\\u00BC',\n\t frac12: '\\u00BD',\n\t frac34: '\\u00BE',\n\t iquest: '\\u00BF',\n\t Agrave: '\\u00C0',\n\t Aacute: '\\u00C1',\n\t Acirc: '\\u00C2',\n\t Atilde: '\\u00C3',\n\t Auml: '\\u00C4',\n\t Aring: '\\u00C5',\n\t AElig: '\\u00C6',\n\t Ccedil: '\\u00C7',\n\t Egrave: '\\u00C8',\n\t Eacute: '\\u00C9',\n\t Ecirc: '\\u00CA',\n\t Euml: '\\u00CB',\n\t Igrave: '\\u00CC',\n\t Iacute: '\\u00CD',\n\t Icirc: '\\u00CE',\n\t Iuml: '\\u00CF',\n\t ETH: '\\u00D0',\n\t Ntilde: '\\u00D1',\n\t Ograve: '\\u00D2',\n\t Oacute: '\\u00D3',\n\t Ocirc: '\\u00D4',\n\t Otilde: '\\u00D5',\n\t Ouml: '\\u00D6',\n\t times: '\\u00D7',\n\t Oslash: '\\u00D8',\n\t Ugrave: '\\u00D9',\n\t Uacute: '\\u00DA',\n\t Ucirc: '\\u00DB',\n\t Uuml: '\\u00DC',\n\t Yacute: '\\u00DD',\n\t THORN: '\\u00DE',\n\t szlig: '\\u00DF',\n\t agrave: '\\u00E0',\n\t aacute: '\\u00E1',\n\t acirc: '\\u00E2',\n\t atilde: '\\u00E3',\n\t auml: '\\u00E4',\n\t aring: '\\u00E5',\n\t aelig: '\\u00E6',\n\t ccedil: '\\u00E7',\n\t egrave: '\\u00E8',\n\t eacute: '\\u00E9',\n\t ecirc: '\\u00EA',\n\t euml: '\\u00EB',\n\t igrave: '\\u00EC',\n\t iacute: '\\u00ED',\n\t icirc: '\\u00EE',\n\t iuml: '\\u00EF',\n\t eth: '\\u00F0',\n\t ntilde: '\\u00F1',\n\t ograve: '\\u00F2',\n\t oacute: '\\u00F3',\n\t ocirc: '\\u00F4',\n\t otilde: '\\u00F5',\n\t ouml: '\\u00F6',\n\t divide: '\\u00F7',\n\t oslash: '\\u00F8',\n\t ugrave: '\\u00F9',\n\t uacute: '\\u00FA',\n\t ucirc: '\\u00FB',\n\t uuml: '\\u00FC',\n\t yacute: '\\u00FD',\n\t thorn: '\\u00FE',\n\t yuml: '\\u00FF',\n\t OElig: '\\u0152',\n\t oelig: '\\u0153',\n\t Scaron: '\\u0160',\n\t scaron: '\\u0161',\n\t Yuml: '\\u0178',\n\t fnof: '\\u0192',\n\t circ: '\\u02C6',\n\t tilde: '\\u02DC',\n\t Alpha: '\\u0391',\n\t Beta: '\\u0392',\n\t Gamma: '\\u0393',\n\t Delta: '\\u0394',\n\t Epsilon: '\\u0395',\n\t Zeta: '\\u0396',\n\t Eta: '\\u0397',\n\t Theta: '\\u0398',\n\t Iota: '\\u0399',\n\t Kappa: '\\u039A',\n\t Lambda: '\\u039B',\n\t Mu: '\\u039C',\n\t Nu: '\\u039D',\n\t Xi: '\\u039E',\n\t Omicron: '\\u039F',\n\t Pi: '\\u03A0',\n\t Rho: '\\u03A1',\n\t Sigma: '\\u03A3',\n\t Tau: '\\u03A4',\n\t Upsilon: '\\u03A5',\n\t Phi: '\\u03A6',\n\t Chi: '\\u03A7',\n\t Psi: '\\u03A8',\n\t Omega: '\\u03A9',\n\t alpha: '\\u03B1',\n\t beta: '\\u03B2',\n\t gamma: '\\u03B3',\n\t delta: '\\u03B4',\n\t epsilon: '\\u03B5',\n\t zeta: '\\u03B6',\n\t eta: '\\u03B7',\n\t theta: '\\u03B8',\n\t iota: '\\u03B9',\n\t kappa: '\\u03BA',\n\t lambda: '\\u03BB',\n\t mu: '\\u03BC',\n\t nu: '\\u03BD',\n\t xi: '\\u03BE',\n\t omicron: '\\u03BF',\n\t pi: '\\u03C0',\n\t rho: '\\u03C1',\n\t sigmaf: '\\u03C2',\n\t sigma: '\\u03C3',\n\t tau: '\\u03C4',\n\t upsilon: '\\u03C5',\n\t phi: '\\u03C6',\n\t chi: '\\u03C7',\n\t psi: '\\u03C8',\n\t omega: '\\u03C9',\n\t thetasym: '\\u03D1',\n\t upsih: '\\u03D2',\n\t piv: '\\u03D6',\n\t ensp: '\\u2002',\n\t emsp: '\\u2003',\n\t thinsp: '\\u2009',\n\t zwnj: '\\u200C',\n\t zwj: '\\u200D',\n\t lrm: '\\u200E',\n\t rlm: '\\u200F',\n\t ndash: '\\u2013',\n\t mdash: '\\u2014',\n\t lsquo: '\\u2018',\n\t rsquo: '\\u2019',\n\t sbquo: '\\u201A',\n\t ldquo: '\\u201C',\n\t rdquo: '\\u201D',\n\t bdquo: '\\u201E',\n\t dagger: '\\u2020',\n\t Dagger: '\\u2021',\n\t bull: '\\u2022',\n\t hellip: '\\u2026',\n\t permil: '\\u2030',\n\t prime: '\\u2032',\n\t Prime: '\\u2033',\n\t lsaquo: '\\u2039',\n\t rsaquo: '\\u203A',\n\t oline: '\\u203E',\n\t frasl: '\\u2044',\n\t euro: '\\u20AC',\n\t image: '\\u2111',\n\t weierp: '\\u2118',\n\t real: '\\u211C',\n\t trade: '\\u2122',\n\t alefsym: '\\u2135',\n\t larr: '\\u2190',\n\t uarr: '\\u2191',\n\t rarr: '\\u2192',\n\t darr: '\\u2193',\n\t harr: '\\u2194',\n\t crarr: '\\u21B5',\n\t lArr: '\\u21D0',\n\t uArr: '\\u21D1',\n\t rArr: '\\u21D2',\n\t dArr: '\\u21D3',\n\t hArr: '\\u21D4',\n\t forall: '\\u2200',\n\t part: '\\u2202',\n\t exist: '\\u2203',\n\t empty: '\\u2205',\n\t nabla: '\\u2207',\n\t isin: '\\u2208',\n\t notin: '\\u2209',\n\t ni: '\\u220B',\n\t prod: '\\u220F',\n\t sum: '\\u2211',\n\t minus: '\\u2212',\n\t lowast: '\\u2217',\n\t radic: '\\u221A',\n\t prop: '\\u221D',\n\t infin: '\\u221E',\n\t ang: '\\u2220',\n\t and: '\\u2227',\n\t or: '\\u2228',\n\t cap: '\\u2229',\n\t cup: '\\u222A',\n\t int: '\\u222B',\n\t there4: '\\u2234',\n\t sim: '\\u223C',\n\t cong: '\\u2245',\n\t asymp: '\\u2248',\n\t ne: '\\u2260',\n\t equiv: '\\u2261',\n\t le: '\\u2264',\n\t ge: '\\u2265',\n\t sub: '\\u2282',\n\t sup: '\\u2283',\n\t nsub: '\\u2284',\n\t sube: '\\u2286',\n\t supe: '\\u2287',\n\t oplus: '\\u2295',\n\t otimes: '\\u2297',\n\t perp: '\\u22A5',\n\t sdot: '\\u22C5',\n\t lceil: '\\u2308',\n\t rceil: '\\u2309',\n\t lfloor: '\\u230A',\n\t rfloor: '\\u230B',\n\t loz: '\\u25CA',\n\t spades: '\\u2660',\n\t clubs: '\\u2663',\n\t hearts: '\\u2665',\n\t diams: '\\u2666',\n\t lang: '\\u27E8',\n\t rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t function Reader() {\n\t this.values = [];\n\t this.curly = this.paren = -1;\n\t }\n\t // A function following one of those tokens is an expression.\n\t Reader.prototype.beforeFunctionExpression = function (t) {\n\t return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t 'return', 'case', 'delete', 'throw', 'void',\n\t // assignment operators\n\t '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t '&=', '|=', '^=', ',',\n\t // binary/unary operators\n\t '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t };\n\t // Determine if forward slash (/) is an operator or part of a regular expression\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t Reader.prototype.isRegexStart = function () {\n\t var previous = this.values[this.values.length - 1];\n\t var regex = (previous !== null);\n\t switch (previous) {\n\t case 'this':\n\t case ']':\n\t regex = false;\n\t break;\n\t case ')':\n\t var keyword = this.values[this.paren - 1];\n\t regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t break;\n\t case '}':\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t regex = false;\n\t if (this.values[this.curly - 3] === 'function') {\n\t // Anonymous function, e.g. function(){} /42\n\t var check = this.values[this.curly - 4];\n\t regex = check ? !this.beforeFunctionExpression(check) : false;\n\t }\n\t else if (this.values[this.curly - 4] === 'function') {\n\t // Named function, e.g. function f(){} /42/\n\t var check = this.values[this.curly - 5];\n\t regex = check ? !this.beforeFunctionExpression(check) : true;\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t return regex;\n\t };\n\t Reader.prototype.push = function (token) {\n\t if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t if (token.value === '{') {\n\t this.curly = this.values.length;\n\t }\n\t else if (token.value === '(') {\n\t this.paren = this.values.length;\n\t }\n\t this.values.push(token.value);\n\t }\n\t else {\n\t this.values.push(null);\n\t }\n\t };\n\t return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t function Tokenizer(code, config) {\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t this.buffer = [];\n\t this.reader = new Reader();\n\t }\n\t Tokenizer.prototype.errors = function () {\n\t return this.errorHandler.errors;\n\t };\n\t Tokenizer.prototype.getNextToken = function () {\n\t if (this.buffer.length === 0) {\n\t var comments = this.scanner.scanComments();\n\t if (this.scanner.trackComment) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t var comment = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: value\n\t };\n\t if (this.trackRange) {\n\t comment.range = e.range;\n\t }\n\t if (this.trackLoc) {\n\t comment.loc = e.loc;\n\t }\n\t this.buffer.push(comment);\n\t }\n\t }\n\t if (!this.scanner.eof()) {\n\t var loc = void 0;\n\t if (this.trackLoc) {\n\t loc = {\n\t start: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t },\n\t end: {}\n\t };\n\t }\n\t var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t this.reader.push(token);\n\t var entry = {\n\t type: token_1.TokenName[token.type],\n\t value: this.scanner.source.slice(token.start, token.end)\n\t };\n\t if (this.trackRange) {\n\t entry.range = [token.start, token.end];\n\t }\n\t if (this.trackLoc) {\n\t loc.end = {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t entry.loc = loc;\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t entry.regex = { pattern: pattern, flags: flags };\n\t }\n\t this.buffer.push(entry);\n\t }\n\t }\n\t return this.buffer.shift();\n\t };\n\t return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;"],"x_google_ignoreList":[0],"mappings":"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"}
|