@holydeck/cli 2026.9.2

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.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +234 -0
  3. package/dist/BrowserWebSocketTransport-H3D6MINS.js +12 -0
  4. package/dist/BrowserWebSocketTransport-H3D6MINS.js.map +1 -0
  5. package/dist/LaunchOptions-42ZS55HH.js +12 -0
  6. package/dist/LaunchOptions-42ZS55HH.js.map +1 -0
  7. package/dist/NodeWebSocketTransport-BXHQGXRM.js +15 -0
  8. package/dist/NodeWebSocketTransport-BXHQGXRM.js.map +1 -0
  9. package/dist/bidi-25S23FWJ.js +18358 -0
  10. package/dist/bidi-25S23FWJ.js.map +1 -0
  11. package/dist/chunk-2BLOYUSF.js +795 -0
  12. package/dist/chunk-2BLOYUSF.js.map +1 -0
  13. package/dist/chunk-43CZTS57.js +38 -0
  14. package/dist/chunk-43CZTS57.js.map +1 -0
  15. package/dist/chunk-DIBLSFAG.js +34 -0
  16. package/dist/chunk-DIBLSFAG.js.map +1 -0
  17. package/dist/chunk-IEJ3OX3N.js +52 -0
  18. package/dist/chunk-IEJ3OX3N.js.map +1 -0
  19. package/dist/chunk-JM4YIWBN.js +3796 -0
  20. package/dist/chunk-JM4YIWBN.js.map +1 -0
  21. package/dist/chunk-NP3DTWF7.js +23282 -0
  22. package/dist/chunk-NP3DTWF7.js.map +1 -0
  23. package/dist/chunk-SWG4X375.js +51 -0
  24. package/dist/chunk-SWG4X375.js.map +1 -0
  25. package/dist/chunk-UC6TFXMD.js +2821 -0
  26. package/dist/chunk-UC6TFXMD.js.map +1 -0
  27. package/dist/chunk-V4BIHFVZ.js +2287 -0
  28. package/dist/chunk-V4BIHFVZ.js.map +1 -0
  29. package/dist/chunk-V77AQPDK.js +20 -0
  30. package/dist/chunk-V77AQPDK.js.map +1 -0
  31. package/dist/chunk-XAENXL52.js +101 -0
  32. package/dist/chunk-XAENXL52.js.map +1 -0
  33. package/dist/cli.js +64101 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/dist-3ZE2HBJQ.js +20447 -0
  36. package/dist/dist-3ZE2HBJQ.js.map +1 -0
  37. package/dist/dist-575AQY5L.js +1161 -0
  38. package/dist/dist-575AQY5L.js.map +1 -0
  39. package/dist/dist-DL5M2SDJ.js +117 -0
  40. package/dist/dist-DL5M2SDJ.js.map +1 -0
  41. package/dist/dist-OMWR53J4.js +4713 -0
  42. package/dist/dist-OMWR53J4.js.map +1 -0
  43. package/dist/dist-UT6HKKCD.js +281 -0
  44. package/dist/dist-UT6HKKCD.js.map +1 -0
  45. package/dist/fs-P6GYHPGZ.js +1685 -0
  46. package/dist/fs-P6GYHPGZ.js.map +1 -0
  47. package/dist/helpers-64DWIL6C.js +21 -0
  48. package/dist/helpers-64DWIL6C.js.map +1 -0
  49. package/dist/main-IQ64YDOJ.js +61 -0
  50. package/dist/main-IQ64YDOJ.js.map +1 -0
  51. package/dist/puppeteer-RDWY6FSG.js +2386 -0
  52. package/dist/puppeteer-RDWY6FSG.js.map +1 -0
  53. package/dist/yargs-KMQWKLG6.js +3264 -0
  54. package/dist/yargs-KMQWKLG6.js.map +1 -0
  55. package/dist/yauzl-7KG7KPPF.js +1355 -0
  56. package/dist/yauzl-7KG7KPPF.js.map +1 -0
  57. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/parseControlResponse.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/FtpContext.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/netUtils.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/FileInfo.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/parseListDOS.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/parseListUnix.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/parseListMLSD.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/parseList.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/ProgressTracker.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/StringWriter.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/transfer.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/Client.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/StringEncoding.js","../../../node_modules/.pnpm/basic-ftp@5.3.1/node_modules/basic-ftp/dist/index.js","../../../node_modules/.pnpm/estraverse@5.3.0/node_modules/estraverse/estraverse.js","../../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/ast.js","../../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/code.js","../../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/keyword.js","../../../node_modules/.pnpm/esutils@2.0.3/node_modules/esutils/lib/utils.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/util.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/array-set.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/binary-search.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-node.js","../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.js","../../../node_modules/.pnpm/escodegen@2.1.0/node_modules/escodegen/package.json","../../../node_modules/.pnpm/escodegen@2.1.0/node_modules/escodegen/escodegen.js","../../../node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/dist/esprima.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/types.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/path.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/scope.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/node-path.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/path-visitor.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/equiv.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/fork.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/lib/shared.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/core.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es6.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es7.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es2020.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/jsx.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/type-annotations.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/flow.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/esprima.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/babel-core.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/babel.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/typescript.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/def/es-proposals.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/gen/namedTypes.js","../../../node_modules/.pnpm/ast-types@0.13.4/node_modules/ast-types/main.js","../../../node_modules/.pnpm/netmask@2.1.1/node_modules/netmask/dist/netmask4.js","../../../node_modules/.pnpm/netmask@2.1.1/node_modules/netmask/dist/netmask6.js","../../../node_modules/.pnpm/netmask@2.1.1/node_modules/netmask/dist/netmask.js","../../../node_modules/.pnpm/pac-proxy-agent@9.1.0/node_modules/pac-proxy-agent/src/index.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/index.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/data.ts","../../../node_modules/.pnpm/data-uri-to-buffer@8.0.0/node_modules/data-uri-to-buffer/src/common.ts","../../../node_modules/.pnpm/data-uri-to-buffer@8.0.0/node_modules/data-uri-to-buffer/src/node.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/notmodified.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/file.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/notfound.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/ftp.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/http.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/http-error.ts","../../../node_modules/.pnpm/get-uri@8.0.1/node_modules/get-uri/src/https.ts","../../../node_modules/.pnpm/degenerator@7.0.1_quickjs-wasi@2.2.0/node_modules/degenerator/src/degenerator.ts","../../../node_modules/.pnpm/degenerator@7.0.1_quickjs-wasi@2.2.0/node_modules/degenerator/src/compile.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/dateRange.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/dnsDomainIs.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/dnsDomainLevels.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/util.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/dnsResolve.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/isInNet.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/isPlainHostName.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/isResolvable.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/localHostOrDomainIs.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/ip.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/myIpAddress.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/shExpMatch.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/timeRange.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/weekdayRange.ts","../../../node_modules/.pnpm/pac-resolver@9.0.1_quickjs-wasi@2.2.0/node_modules/pac-resolver/src/index.ts","../../../node_modules/.pnpm/quickjs-wasi@2.2.0/node_modules/quickjs-wasi/src/wasi-shim.ts","../../../node_modules/.pnpm/quickjs-wasi@2.2.0/node_modules/quickjs-wasi/src/extensions.ts","../../../node_modules/.pnpm/quickjs-wasi@2.2.0/node_modules/quickjs-wasi/src/version.ts","../../../node_modules/.pnpm/quickjs-wasi@2.2.0/node_modules/quickjs-wasi/src/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseControlResponse = parseControlResponse;\nexports.isSingleLine = isSingleLine;\nexports.isMultiline = isMultiline;\nexports.positiveCompletion = positiveCompletion;\nexports.positiveIntermediate = positiveIntermediate;\nconst LF = \"\\n\";\n/**\n * Parse an FTP control response as a collection of messages. A message is a complete\n * single- or multiline response. A response can also contain multiple multiline responses\n * that will each be represented by a message. A response can also be incomplete\n * and be completed on the next incoming data chunk for which case this function also\n * describes a `rest`. This function converts all CRLF to LF.\n */\nfunction parseControlResponse(text) {\n const lines = text.split(/\\r?\\n/).filter(isNotBlank);\n const messages = [];\n let startAt = 0;\n let tokenRegex;\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n // No group has been opened.\n if (!tokenRegex) {\n if (isMultiline(line)) {\n // Open a group by setting an expected token.\n const token = line.substr(0, 3);\n tokenRegex = new RegExp(`^${token}(?:$| )`);\n startAt = i;\n }\n else if (isSingleLine(line)) {\n // Single lines can be grouped immediately.\n messages.push(line);\n }\n }\n // Group has been opened, expect closing token.\n else if (tokenRegex.test(line)) {\n tokenRegex = undefined;\n messages.push(lines.slice(startAt, i + 1).join(LF));\n }\n }\n // The last group might not have been closed, report it as a rest.\n const rest = tokenRegex ? lines.slice(startAt).join(LF) + LF : \"\";\n return { messages, rest };\n}\nfunction isSingleLine(line) {\n return /^\\d\\d\\d(?:$| )/.test(line);\n}\nfunction isMultiline(line) {\n return /^\\d\\d\\d-/.test(line);\n}\n/**\n * Return true if an FTP return code describes a positive completion.\n */\nfunction positiveCompletion(code) {\n return code >= 200 && code < 300;\n}\n/**\n * Return true if an FTP return code describes a positive intermediate response.\n */\nfunction positiveIntermediate(code) {\n return code >= 300 && code < 400;\n}\nfunction isNotBlank(str) {\n return str.trim() !== \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FTPContext = exports.FTPError = void 0;\nconst net_1 = require(\"net\");\nconst parseControlResponse_1 = require(\"./parseControlResponse\");\n/**\n * Describes an FTP server error response including the FTP response code.\n */\nclass FTPError extends Error {\n constructor(res) {\n super(res.message);\n this.name = this.constructor.name;\n this.code = res.code;\n }\n}\nexports.FTPError = FTPError;\nfunction doNothing() {\n /** Do nothing */\n}\n// Limit the accepted size of the control response.\nconst maxControlResponseLength = 2 ** 16;\n/**\n * FTPContext holds the control and data sockets of an FTP connection and provides a\n * simplified way to interact with an FTP server, handle responses, errors and timeouts.\n *\n * It doesn't implement or use any FTP commands. It's only a foundation to make writing an FTP\n * client as easy as possible. You won't usually instantiate this, but use `Client`.\n */\nclass FTPContext {\n /**\n * Instantiate an FTP context.\n *\n * @param timeout - Timeout in milliseconds to apply to control and data connections. Use 0 for no timeout.\n * @param encoding - Encoding to use for control connection. UTF-8 by default. Use \"latin1\" for older servers.\n */\n constructor(timeout = 0, encoding = \"utf8\") {\n this.timeout = timeout;\n /** Debug-level logging of all socket communication. */\n this.verbose = false;\n /** IP version to prefer (4: IPv4, 6: IPv6, undefined: automatic). */\n this.ipFamily = undefined;\n /** Options for TLS connections. */\n this.tlsOptions = {};\n /** A multiline response might be received as multiple chunks. */\n this._partialResponse = \"\";\n this._encoding = encoding;\n // Help Typescript understand that we do indeed set _socket in the constructor but use the setter method to do so.\n this._socket = this.socket = this._newSocket();\n this._dataSocket = undefined;\n }\n /**\n * Close the context.\n */\n close() {\n // Internally, closing a context is always described with an error. If there is still a task running, it will\n // abort with an exception that the user closed the client during a task. If no task is running, no exception is\n // thrown but all newly submitted tasks after that will abort the exception that the client has been closed.\n // In addition the user will get a stack trace pointing to where exactly the client has been closed. So in any\n // case use _closingError to determine whether a context is closed. This also allows us to have a single code-path\n // for closing a context making the implementation easier.\n const message = this._task ? \"User closed client during task\" : \"User closed client\";\n const err = new Error(message);\n this.closeWithError(err);\n }\n /**\n * Close the context with an error.\n */\n closeWithError(err) {\n // If this context already has been closed, don't overwrite the reason.\n if (this._closingError) {\n return;\n }\n this._closingError = err;\n // Close the sockets but don't fully reset this context to preserve `this._closingError`.\n this._closeControlSocket();\n this._closeSocket(this._dataSocket);\n // Give the user's task a chance to react, maybe cleanup resources.\n this._passToHandler(err);\n // The task might not have been rejected by the user after receiving the error.\n this._stopTrackingTask();\n }\n /**\n * Returns true if this context has been closed or hasn't been connected yet. You can reopen it with `access`.\n */\n get closed() {\n return this.socket.remoteAddress === undefined || this._closingError !== undefined;\n }\n /**\n * Reset this contex and all of its state.\n */\n reset() {\n this.socket = this._newSocket();\n }\n /**\n * Get the FTP control socket.\n */\n get socket() {\n return this._socket;\n }\n /**\n * Set the socket for the control connection. This will only close the current control socket\n * if the new one is not an upgrade to the current one.\n */\n set socket(socket) {\n // No data socket should be open in any case where the control socket is set or upgraded.\n this.dataSocket = undefined;\n // This being a reset, reset any other state apart from the socket.\n this.tlsOptions = {};\n this._partialResponse = \"\";\n if (this._socket) {\n const newSocketUpgradesExisting = socket.localPort === this._socket.localPort;\n if (newSocketUpgradesExisting) {\n this._removeSocketListeners(this.socket);\n }\n else {\n this._closeControlSocket();\n }\n }\n if (socket) {\n // Setting a completely new control socket is in essence something like a reset. That's\n // why we also close any open data connection above. We can go one step further and reset\n // a possible closing error. That means that a closed FTPContext can be \"reopened\" by\n // setting a new control socket.\n this._closingError = undefined;\n // Don't set a timeout yet. Timeout for control sockets is only active during a task, see handle() below.\n socket.setTimeout(0);\n socket.setEncoding(this._encoding);\n socket.setKeepAlive(true);\n socket.on(\"data\", data => this._onControlSocketData(data));\n // Server sending a FIN packet is treated as an error.\n socket.on(\"end\", () => this.closeWithError(new Error(\"Server sent FIN packet unexpectedly, closing connection.\")));\n // Control being closed without error by server is treated as an error.\n socket.on(\"close\", hadError => { if (!hadError)\n this.closeWithError(new Error(\"Server closed connection unexpectedly.\")); });\n this._setupDefaultErrorHandlers(socket, \"control socket\");\n }\n this._socket = socket;\n }\n /**\n * Get the current FTP data connection if present.\n */\n get dataSocket() {\n return this._dataSocket;\n }\n /**\n * Set the socket for the data connection. This will automatically close the former data socket.\n */\n set dataSocket(socket) {\n this._closeSocket(this._dataSocket);\n if (socket) {\n // Don't set a timeout yet. Timeout data socket should be activated when data transmission starts\n // and timeout on control socket is deactivated.\n socket.setTimeout(0);\n this._setupDefaultErrorHandlers(socket, \"data socket\");\n }\n this._dataSocket = socket;\n }\n /**\n * Get the currently used encoding.\n */\n get encoding() {\n return this._encoding;\n }\n /**\n * Set the encoding used for the control socket.\n *\n * See https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings for what encodings\n * are supported by Node.\n */\n set encoding(encoding) {\n this._encoding = encoding;\n if (this.socket) {\n this.socket.setEncoding(encoding);\n }\n }\n /**\n * Send an FTP command without waiting for or handling the result.\n */\n send(command) {\n // Reject control character injection attempts.\n if (/[\\r\\n\\0]/.test(command)) {\n throw new Error(`Invalid command: Contains control characters. (${command})`);\n }\n const containsPassword = command.startsWith(\"PASS\");\n const message = containsPassword ? \"> PASS ###\" : `> ${command}`;\n this.log(message);\n this._socket.write(command + \"\\r\\n\", this.encoding);\n }\n /**\n * Send an FTP command and handle the first response. Use this if you have a simple\n * request-response situation.\n */\n request(command) {\n return this.handle(command, (res, task) => {\n if (res instanceof Error) {\n task.reject(res);\n }\n else {\n task.resolve(res);\n }\n });\n }\n /**\n * Send an FTP command and handle any response until you resolve/reject. Use this if you expect multiple responses\n * to a request. This returns a Promise that will hold whatever the response handler passed on when resolving/rejecting its task.\n */\n handle(command, responseHandler) {\n if (this._task) {\n const err = new Error(\"User launched a task while another one is still running. Forgot to use 'await' or '.then()'?\");\n err.stack += `\\nRunning task launched at: ${this._task.stack}`;\n this.closeWithError(err);\n // Don't return here, continue with returning the Promise that will then be rejected\n // because the context closed already. That way, users will receive an exception where\n // they called this method by mistake.\n }\n return new Promise((resolveTask, rejectTask) => {\n this._task = {\n stack: new Error().stack || \"Unknown call stack\",\n responseHandler,\n resolver: {\n resolve: arg => {\n this._stopTrackingTask();\n resolveTask(arg);\n },\n reject: err => {\n this._stopTrackingTask();\n rejectTask(err);\n }\n }\n };\n if (this._closingError) {\n // This client has been closed. Provide an error that describes this one as being caused\n // by `_closingError`, include stack traces for both.\n const err = new Error(`Client is closed because ${this._closingError.message}`); // Type 'Error' is not correctly defined, doesn't have 'code'.\n err.stack += `\\nClosing reason: ${this._closingError.stack}`;\n err.code = this._closingError.code !== undefined ? this._closingError.code : \"0\";\n this._passToHandler(err);\n return;\n }\n // Only track control socket timeout during the lifecycle of a task. This avoids timeouts on idle sockets,\n // the default socket behaviour which is not expected by most users.\n this.socket.setTimeout(this.timeout);\n if (command) {\n this.send(command);\n }\n });\n }\n /**\n * Log message if set to be verbose.\n */\n log(message) {\n if (this.verbose) {\n // tslint:disable-next-line no-console\n console.log(message);\n }\n }\n /**\n * Return true if the control socket is using TLS. This does not mean that a session\n * has already been negotiated.\n */\n get hasTLS() {\n return \"encrypted\" in this._socket;\n }\n /**\n * Removes reference to current task and handler. This won't resolve or reject the task.\n * @protected\n */\n _stopTrackingTask() {\n // Disable timeout on control socket if there is no task active.\n this.socket.setTimeout(0);\n this._task = undefined;\n }\n /**\n * Handle incoming data on the control socket. The chunk is going to be of type `string`\n * because we let `socket` handle encoding with `setEncoding`.\n * @protected\n */\n _onControlSocketData(chunk) {\n this.log(`< ${chunk}`);\n // This chunk might complete an earlier partial response. Protect against unbounded response attack.\n if (this._partialResponse.length + chunk.length > maxControlResponseLength) {\n this.closeWithError(new Error(\"FTP control response exceeded maximum allowed size\"));\n return;\n }\n const completeResponse = this._partialResponse + chunk;\n const parsed = (0, parseControlResponse_1.parseControlResponse)(completeResponse);\n // Remember any incomplete remainder.\n this._partialResponse = parsed.rest;\n // Each response group is passed along individually.\n for (const message of parsed.messages) {\n const code = parseInt(message.substr(0, 3), 10);\n const response = { code, message };\n const err = code >= 400 ? new FTPError(response) : undefined;\n this._passToHandler(err ? err : response);\n }\n }\n /**\n * Send the current handler a response. This is usually a control socket response\n * or a socket event, like an error or timeout.\n * @protected\n */\n _passToHandler(response) {\n if (this._task) {\n this._task.responseHandler(response, this._task.resolver);\n }\n // Errors other than FTPError always close the client. If there isn't an active task to handle the error,\n // the next one submitted will receive it using `_closingError`.\n // There is only one edge-case: If there is an FTPError while no task is active, the error will be dropped.\n // But that means that the user sent an FTP command with no intention of handling the result. So why should the\n // error be handled? Maybe log it at least? Debug logging will already do that and the client stays useable after\n // FTPError. So maybe no need to do anything here.\n }\n /**\n * Setup all error handlers for a socket.\n * @protected\n */\n _setupDefaultErrorHandlers(socket, identifier) {\n socket.once(\"error\", error => {\n error.message += ` (${identifier})`;\n this.closeWithError(error);\n });\n socket.once(\"close\", hadError => {\n if (hadError) {\n this.closeWithError(new Error(`Socket closed due to transmission error (${identifier})`));\n }\n });\n socket.once(\"timeout\", () => {\n socket.destroy();\n this.closeWithError(new Error(`Timeout (${identifier})`));\n });\n }\n /**\n * Close the control socket. Sends QUIT, then FIN, and ignores any response or error.\n */\n _closeControlSocket() {\n this._removeSocketListeners(this._socket);\n this._socket.on(\"error\", doNothing);\n this.send(\"QUIT\");\n this._closeSocket(this._socket);\n }\n /**\n * Close a socket, ignores any error.\n * @protected\n */\n _closeSocket(socket) {\n if (socket) {\n this._removeSocketListeners(socket);\n socket.on(\"error\", doNothing);\n socket.destroy();\n }\n }\n /**\n * Remove all default listeners for socket.\n * @protected\n */\n _removeSocketListeners(socket) {\n socket.removeAllListeners();\n // Before Node.js 10.3.0, using `socket.removeAllListeners()` without any name did not work: https://github.com/nodejs/node/issues/20923.\n socket.removeAllListeners(\"timeout\");\n socket.removeAllListeners(\"data\");\n socket.removeAllListeners(\"end\");\n socket.removeAllListeners(\"error\");\n socket.removeAllListeners(\"close\");\n socket.removeAllListeners(\"connect\");\n }\n /**\n * Provide a new socket instance.\n *\n * Internal use only, replaced for unit tests.\n */\n _newSocket() {\n return new net_1.Socket();\n }\n}\nexports.FTPContext = FTPContext;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.describeTLS = describeTLS;\nexports.describeAddress = describeAddress;\nexports.upgradeSocket = upgradeSocket;\nexports.ipIsPrivateV4Address = ipIsPrivateV4Address;\nconst tls_1 = require(\"tls\");\n/**\n * Returns a string describing the encryption on a given socket instance.\n */\nfunction describeTLS(socket) {\n if (socket instanceof tls_1.TLSSocket) {\n const protocol = socket.getProtocol();\n return protocol ? protocol : \"Server socket or disconnected client socket\";\n }\n return \"No encryption\";\n}\n/**\n * Returns a string describing the remote address of a socket.\n */\nfunction describeAddress(socket) {\n if (socket.remoteFamily === \"IPv6\") {\n return `[${socket.remoteAddress}]:${socket.remotePort}`;\n }\n return `${socket.remoteAddress}:${socket.remotePort}`;\n}\n/**\n * Upgrade a socket connection with TLS.\n */\nfunction upgradeSocket(socket, options) {\n return new Promise((resolve, reject) => {\n const tlsOptions = Object.assign({}, options, {\n socket\n });\n const tlsSocket = (0, tls_1.connect)(tlsOptions, () => {\n const expectCertificate = tlsOptions.rejectUnauthorized !== false;\n if (expectCertificate && !tlsSocket.authorized) {\n reject(tlsSocket.authorizationError);\n }\n else {\n // Remove error listener added below.\n tlsSocket.removeAllListeners(\"error\");\n resolve(tlsSocket);\n }\n }).once(\"error\", error => {\n reject(error);\n });\n });\n}\n/**\n * Returns true if an IP is a private address according to https://tools.ietf.org/html/rfc1918#section-3.\n * This will handle IPv4-mapped IPv6 addresses correctly but return false for all other IPv6 addresses.\n *\n * @param ip The IP as a string, e.g. \"192.168.0.1\"\n */\nfunction ipIsPrivateV4Address(ip = \"\") {\n // Handle IPv4-mapped IPv6 addresses like ::ffff:192.168.0.1\n if (ip.startsWith(\"::ffff:\")) {\n ip = ip.substr(7); // Strip ::ffff: prefix\n }\n const octets = ip.split(\".\").map(o => parseInt(o, 10));\n return octets[0] === 10 // 10.0.0.0 - 10.255.255.255\n || (octets[0] === 172 && octets[1] >= 16 && octets[1] <= 31) // 172.16.0.0 - 172.31.255.255\n || (octets[0] === 192 && octets[1] === 168) // 192.168.0.0 - 192.168.255.255\n || ip === \"127.0.0.1\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileInfo = exports.FileType = void 0;\nvar FileType;\n(function (FileType) {\n FileType[FileType[\"Unknown\"] = 0] = \"Unknown\";\n FileType[FileType[\"File\"] = 1] = \"File\";\n FileType[FileType[\"Directory\"] = 2] = \"Directory\";\n FileType[FileType[\"SymbolicLink\"] = 3] = \"SymbolicLink\";\n})(FileType || (exports.FileType = FileType = {}));\n/**\n * Describes a file, directory or symbolic link.\n */\nclass FileInfo {\n constructor(name) {\n this.name = name;\n this.type = FileType.Unknown;\n this.size = 0;\n /**\n * Unparsed, raw modification date as a string.\n *\n * If `modifiedAt` is undefined, the FTP server you're connected to doesn't support the more modern\n * MLSD command for machine-readable directory listings. The older command LIST is then used returning\n * results that vary a lot between servers as the format hasn't been standardized. Here, directory listings\n * and especially modification dates were meant to be human-readable first.\n *\n * Be careful when still trying to parse this by yourself. Parsing dates from listings using LIST is\n * unreliable. This library decides to offer parsed dates only when they're absolutely reliable and safe to\n * use e.g. for comparisons.\n */\n this.rawModifiedAt = \"\";\n /**\n * Parsed modification date.\n *\n * Available if the FTP server supports the MLSD command. Only MLSD guarantees dates than can be reliably\n * parsed with the correct timezone and a resolution down to seconds. See `rawModifiedAt` property for the unparsed\n * date that is always available.\n */\n this.modifiedAt = undefined;\n /**\n * Unix permissions if present. If the underlying FTP server is not running on Unix this will be undefined.\n * If set, you might be able to edit permissions with the FTP command `SITE CHMOD`.\n */\n this.permissions = undefined;\n /**\n * Hard link count if available.\n */\n this.hardLinkCount = undefined;\n /**\n * Link name for symbolic links if available.\n */\n this.link = undefined;\n /**\n * Unix group if available.\n */\n this.group = undefined;\n /**\n * Unix user if available.\n */\n this.user = undefined;\n /**\n * Unique ID if available.\n */\n this.uniqueID = undefined;\n this.name = name;\n }\n get isDirectory() {\n return this.type === FileType.Directory;\n }\n get isSymbolicLink() {\n return this.type === FileType.SymbolicLink;\n }\n get isFile() {\n return this.type === FileType.File;\n }\n /**\n * Deprecated, legacy API. Use `rawModifiedAt` instead.\n * @deprecated\n */\n get date() {\n return this.rawModifiedAt;\n }\n set date(rawModifiedAt) {\n this.rawModifiedAt = rawModifiedAt;\n }\n}\nexports.FileInfo = FileInfo;\nFileInfo.UnixPermission = {\n Read: 4,\n Write: 2,\n Execute: 1\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.testLine = testLine;\nexports.parseLine = parseLine;\nexports.transformList = transformList;\nconst FileInfo_1 = require(\"./FileInfo\");\n/**\n * This parser is based on the FTP client library source code in Apache Commons Net provided\n * under the Apache 2.0 license. It has been simplified and rewritten to better fit the Javascript language.\n *\n * https://github.com/apache/commons-net/blob/master/src/main/java/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java\n */\nconst RE_LINE = new RegExp(\"(\\\\S+)\\\\s+(\\\\S+)\\\\s+\" // MM-dd-yy whitespace hh:mma|kk:mm swallow trailing spaces\n + \"(?:(<DIR>)|([0-9]+))\\\\s+\" // <DIR> or ddddd swallow trailing spaces\n + \"(\\\\S.*)\" // First non-space followed by rest of line (name)\n);\n/**\n * Returns true if a given line might be a DOS-style listing.\n *\n * - Example: `12-05-96 05:03PM <DIR> myDir`\n */\nfunction testLine(line) {\n return /^\\d{2}/.test(line) && RE_LINE.test(line);\n}\n/**\n * Parse a single line of a DOS-style directory listing.\n */\nfunction parseLine(line) {\n const groups = line.match(RE_LINE);\n if (groups === null) {\n return undefined;\n }\n const name = groups[5];\n if (name === \".\" || name === \"..\") { // Ignore parent directory links\n return undefined;\n }\n const file = new FileInfo_1.FileInfo(name);\n const fileType = groups[3];\n if (fileType === \"<DIR>\") {\n file.type = FileInfo_1.FileType.Directory;\n file.size = 0;\n }\n else {\n file.type = FileInfo_1.FileType.File;\n file.size = parseInt(groups[4], 10);\n }\n file.rawModifiedAt = groups[1] + \" \" + groups[2];\n return file;\n}\nfunction transformList(files) {\n return files;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.testLine = testLine;\nexports.parseLine = parseLine;\nexports.transformList = transformList;\nconst FileInfo_1 = require(\"./FileInfo\");\nconst JA_MONTH = \"\\u6708\";\nconst JA_DAY = \"\\u65e5\";\nconst JA_YEAR = \"\\u5e74\";\n/**\n * This parser is based on the FTP client library source code in Apache Commons Net provided\n * under the Apache 2.0 license. It has been simplified and rewritten to better fit the Javascript language.\n *\n * https://github.com/apache/commons-net/blob/master/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java\n *\n * Below is the regular expression used by this parser.\n *\n * Permissions:\n * r the file is readable\n * w the file is writable\n * x the file is executable\n * - the indicated permission is not granted\n * L mandatory locking occurs during access (the set-group-ID bit is\n * on and the group execution bit is off)\n * s the set-user-ID or set-group-ID bit is on, and the corresponding\n * user or group execution bit is also on\n * S undefined bit-state (the set-user-ID bit is on and the user\n * execution bit is off)\n * t the 1000 (octal) bit, or sticky bit, is on [see chmod(1)], and\n * execution is on\n * T the 1000 bit is turned on, and execution is off (undefined bit-\n * state)\n * e z/OS external link bit\n * Final letter may be appended:\n * + file has extended security attributes (e.g. ACL)\n * Note: local listings on MacOSX also use '@'\n * this is not allowed for here as does not appear to be shown by FTP servers\n * {@code @} file has extended attributes\n */\nconst RE_LINE = new RegExp(\"([bcdelfmpSs-])\" // file type\n + \"(((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]?)))\\\\+?\" // permissions\n + \"\\\\s*\" // separator TODO why allow it to be omitted??\n + \"(\\\\d+)\" // link count\n + \"\\\\s+\" // separator\n + \"(?:(\\\\S+(?:\\\\s\\\\S+)*?)\\\\s+)?\" // owner name (optional spaces)\n + \"(?:(\\\\S+(?:\\\\s\\\\S+)*)\\\\s+)?\" // group name (optional spaces)\n + \"(\\\\d+(?:,\\\\s*\\\\d+)?)\" // size or n,m\n + \"\\\\s+\" // separator\n /**\n * numeric or standard format date:\n * yyyy-mm-dd (expecting hh:mm to follow)\n * MMM [d]d\n * [d]d MMM\n * N.B. use non-space for MMM to allow for languages such as German which use\n * diacritics (e.g. umlaut) in some abbreviations.\n * Japanese uses numeric day and month with suffixes to distinguish them\n * [d]dXX [d]dZZ\n */\n + \"(\" +\n \"(?:\\\\d+[-/]\\\\d+[-/]\\\\d+)\" + // yyyy-mm-dd\n \"|(?:\\\\S{3}\\\\s+\\\\d{1,2})\" + // MMM [d]d\n \"|(?:\\\\d{1,2}\\\\s+\\\\S{3})\" + // [d]d MMM\n \"|(?:\\\\d{1,2}\" + JA_MONTH + \"\\\\s+\\\\d{1,2}\" + JA_DAY + \")\" +\n \")\"\n + \"\\\\s+\" // separator\n /**\n * year (for non-recent standard format) - yyyy\n * or time (for numeric or recent standard format) [h]h:mm\n * or Japanese year - yyyyXX\n */\n + \"((?:\\\\d+(?::\\\\d+)?)|(?:\\\\d{4}\" + JA_YEAR + \"))\" // (20)\n + \"\\\\s\" // separator\n + \"(.*)\"); // the rest (21)\n/**\n * Returns true if a given line might be a Unix-style listing.\n *\n * - Example: `-rw-r--r--+ 1 patrick staff 1057 Dec 11 14:35 test.txt`\n */\nfunction testLine(line) {\n return RE_LINE.test(line);\n}\n/**\n * Parse a single line of a Unix-style directory listing.\n */\nfunction parseLine(line) {\n const groups = line.match(RE_LINE);\n if (groups === null) {\n return undefined;\n }\n const name = groups[21];\n if (name === \".\" || name === \"..\") { // Ignore parent directory links\n return undefined;\n }\n const file = new FileInfo_1.FileInfo(name);\n file.size = parseInt(groups[18], 10);\n file.user = groups[16];\n file.group = groups[17];\n file.hardLinkCount = parseInt(groups[15], 10);\n file.rawModifiedAt = groups[19] + \" \" + groups[20];\n file.permissions = {\n user: parseMode(groups[4], groups[5], groups[6]),\n group: parseMode(groups[8], groups[9], groups[10]),\n world: parseMode(groups[12], groups[13], groups[14]),\n };\n // Set file type\n switch (groups[1].charAt(0)) {\n case \"d\":\n file.type = FileInfo_1.FileType.Directory;\n break;\n case \"e\": // NET-39 => z/OS external link\n file.type = FileInfo_1.FileType.SymbolicLink;\n break;\n case \"l\":\n file.type = FileInfo_1.FileType.SymbolicLink;\n break;\n case \"b\":\n case \"c\":\n file.type = FileInfo_1.FileType.File; // TODO change this if DEVICE_TYPE implemented\n break;\n case \"f\":\n case \"-\":\n file.type = FileInfo_1.FileType.File;\n break;\n default:\n // A 'whiteout' file is an ARTIFICIAL entry in any of several types of\n // 'translucent' filesystems, of which a 'union' filesystem is one.\n file.type = FileInfo_1.FileType.Unknown;\n }\n // Separate out the link name for symbolic links\n if (file.isSymbolicLink) {\n const end = name.indexOf(\" -> \");\n if (end !== -1) {\n file.name = name.substring(0, end);\n file.link = name.substring(end + 4);\n }\n }\n return file;\n}\nfunction transformList(files) {\n return files;\n}\nfunction parseMode(r, w, x) {\n let value = 0;\n if (r !== \"-\") {\n value += FileInfo_1.FileInfo.UnixPermission.Read;\n }\n if (w !== \"-\") {\n value += FileInfo_1.FileInfo.UnixPermission.Write;\n }\n const execToken = x.charAt(0);\n if (execToken !== \"-\" && execToken.toUpperCase() !== execToken) {\n value += FileInfo_1.FileInfo.UnixPermission.Execute;\n }\n return value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.testLine = testLine;\nexports.parseLine = parseLine;\nexports.transformList = transformList;\nexports.parseMLSxDate = parseMLSxDate;\nconst FileInfo_1 = require(\"./FileInfo\");\nfunction parseSize(value, info) {\n info.size = parseInt(value, 10);\n}\n/**\n * Parsers for MLSD facts.\n */\nconst factHandlersByName = {\n \"size\": parseSize, // File size\n \"sizd\": parseSize, // Directory size\n \"unique\": (value, info) => {\n info.uniqueID = value;\n },\n \"modify\": (value, info) => {\n info.modifiedAt = parseMLSxDate(value);\n info.rawModifiedAt = info.modifiedAt.toISOString();\n },\n \"type\": (value, info) => {\n // There seems to be confusion on how to handle symbolic links for Unix. RFC 3659 doesn't describe\n // this but mentions some examples using the syntax `type=OS.unix=slink:<target>`. But according to\n // an entry in the Errata (https://www.rfc-editor.org/errata/eid1500) this syntax can't be valid.\n // Instead it proposes to use `type=OS.unix=symlink` and to then list the actual target of the\n // symbolic link as another entry in the directory listing. The unique identifiers can then be used\n // to derive the connection between link(s) and target. We'll have to handle both cases as there\n // are differing opinions on how to deal with this. Here are some links on this topic:\n // - ProFTPD source: https://github.com/proftpd/proftpd/blob/56e6dfa598cbd4ef5c6cba439bcbcd53a63e3b21/modules/mod_facts.c#L531\n // - ProFTPD bug: http://bugs.proftpd.org/show_bug.cgi?id=3318\n // - ProFTPD statement: http://www.proftpd.org/docs/modules/mod_facts.html\n // – FileZilla bug: https://trac.filezilla-project.org/ticket/9310\n if (value.startsWith(\"OS.unix=slink\")) {\n info.type = FileInfo_1.FileType.SymbolicLink;\n info.link = value.substr(value.indexOf(\":\") + 1);\n return 1 /* FactHandlerResult.Continue */;\n }\n switch (value) {\n case \"file\":\n info.type = FileInfo_1.FileType.File;\n break;\n case \"dir\":\n info.type = FileInfo_1.FileType.Directory;\n break;\n case \"OS.unix=symlink\":\n info.type = FileInfo_1.FileType.SymbolicLink;\n // The target of the symbolic link might be defined in another line in the directory listing.\n // We'll handle this in `transformList()` below.\n break;\n case \"cdir\": // Current directory being listed\n case \"pdir\": // Parent directory\n return 2 /* FactHandlerResult.IgnoreFile */; // Don't include these entries in the listing\n default:\n info.type = FileInfo_1.FileType.Unknown;\n }\n return 1 /* FactHandlerResult.Continue */;\n },\n \"unix.mode\": (value, info) => {\n const digits = value.substr(-3);\n info.permissions = {\n user: parseInt(digits[0], 10),\n group: parseInt(digits[1], 10),\n world: parseInt(digits[2], 10)\n };\n },\n \"unix.ownername\": (value, info) => {\n info.user = value;\n },\n \"unix.owner\": (value, info) => {\n if (info.user === undefined)\n info.user = value;\n },\n get \"unix.uid\"() {\n return this[\"unix.owner\"];\n },\n \"unix.groupname\": (value, info) => {\n info.group = value;\n },\n \"unix.group\": (value, info) => {\n if (info.group === undefined)\n info.group = value;\n },\n get \"unix.gid\"() {\n return this[\"unix.group\"];\n }\n // Regarding the fact \"perm\":\n // We don't handle permission information stored in \"perm\" because its information is conceptually\n // different from what users of FTP clients usually associate with \"permissions\". Those that have\n // some expectations (and probably want to edit them with a SITE command) often unknowingly expect\n // the Unix permission system. The information passed by \"perm\" describes what FTP commands can be\n // executed with a file/directory. But even this can be either incomplete or just meant as a \"guide\"\n // as the spec mentions. From https://tools.ietf.org/html/rfc3659#section-7.5.5: \"The permissions are\n // described here as they apply to FTP commands. They may not map easily into particular permissions\n // available on the server's operating system.\" The parser by Apache Commons tries to translate these\n // to Unix permissions – this is misleading users and might not even be correct.\n};\n/**\n * Split a string once at the first position of a delimiter. For example\n * `splitStringOnce(\"a b c d\", \" \")` returns `[\"a\", \"b c d\"]`.\n */\nfunction splitStringOnce(str, delimiter) {\n const pos = str.indexOf(delimiter);\n const a = str.substr(0, pos);\n const b = str.substr(pos + delimiter.length);\n return [a, b];\n}\n/**\n * Returns true if a given line might be part of an MLSD listing.\n *\n * - Example 1: `size=15227;type=dir;perm=el;modify=20190419065730; test one`\n * - Example 2: ` file name` (leading space)\n */\nfunction testLine(line) {\n return /^\\S+=\\S+;/.test(line) || line.startsWith(\" \");\n}\n/**\n * Parse single line as MLSD listing, see specification at https://tools.ietf.org/html/rfc3659#section-7.\n */\nfunction parseLine(line) {\n const [packedFacts, name] = splitStringOnce(line, \" \");\n if (name === \"\" || name === \".\" || name === \"..\") {\n return undefined;\n }\n const info = new FileInfo_1.FileInfo(name);\n const facts = packedFacts.split(\";\");\n for (const fact of facts) {\n const [factName, factValue] = splitStringOnce(fact, \"=\");\n if (!factValue) {\n continue;\n }\n const factHandler = factHandlersByName[factName.toLowerCase()];\n if (!factHandler) {\n continue;\n }\n const result = factHandler(factValue, info);\n if (result === 2 /* FactHandlerResult.IgnoreFile */) {\n return undefined;\n }\n }\n return info;\n}\nfunction transformList(files) {\n // Create a map of all files that are not symbolic links by their unique ID\n const nonLinksByID = new Map();\n for (const file of files) {\n if (!file.isSymbolicLink && file.uniqueID !== undefined) {\n nonLinksByID.set(file.uniqueID, file);\n }\n }\n const resolvedFiles = [];\n for (const file of files) {\n // Try to associate unresolved symbolic links with a target file/directory.\n if (file.isSymbolicLink && file.uniqueID !== undefined && file.link === undefined) {\n const target = nonLinksByID.get(file.uniqueID);\n if (target !== undefined) {\n file.link = target.name;\n }\n }\n // The target of a symbolic link is listed as an entry in the directory listing but might\n // have a path pointing outside of this directory. In that case we don't want this entry\n // to be part of the listing. We generally don't want these kind of entries at all.\n const isPartOfDirectory = !file.name.includes(\"/\");\n if (isPartOfDirectory) {\n resolvedFiles.push(file);\n }\n }\n return resolvedFiles;\n}\n/**\n * Parse date as specified in https://tools.ietf.org/html/rfc3659#section-2.3.\n *\n * Message contains response code and modified time in the format: YYYYMMDDHHMMSS[.sss]\n * For example `19991005213102` or `19980615100045.014`.\n */\nfunction parseMLSxDate(fact) {\n return new Date(Date.UTC(+fact.slice(0, 4), // Year\n +fact.slice(4, 6) - 1, // Month\n +fact.slice(6, 8), // Date\n +fact.slice(8, 10), // Hours\n +fact.slice(10, 12), // Minutes\n +fact.slice(12, 14), // Seconds\n +fact.slice(15, 18) // Milliseconds\n ));\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseList = parseList;\nconst dosParser = __importStar(require(\"./parseListDOS\"));\nconst unixParser = __importStar(require(\"./parseListUnix\"));\nconst mlsdParser = __importStar(require(\"./parseListMLSD\"));\n/**\n * Available directory listing parsers. These are candidates that will be tested\n * in the order presented. The first candidate will be used to parse the whole list.\n */\nconst availableParsers = [\n dosParser,\n unixParser,\n mlsdParser // Keep MLSD last, may accept filename only\n];\nfunction firstCompatibleParser(line, parsers) {\n return parsers.find(parser => parser.testLine(line) === true);\n}\nfunction isNotBlank(str) {\n return str.trim() !== \"\";\n}\nfunction isNotMeta(str) {\n return !str.startsWith(\"total\");\n}\nconst REGEX_NEWLINE = /\\r?\\n/;\n/**\n * Parse raw directory listing.\n */\nfunction parseList(rawList) {\n const lines = rawList\n .split(REGEX_NEWLINE)\n .filter(isNotBlank)\n .filter(isNotMeta);\n if (lines.length === 0) {\n return [];\n }\n const testLine = lines[lines.length - 1];\n const parser = firstCompatibleParser(testLine, availableParsers);\n if (!parser) {\n throw new Error(\"This library only supports MLSD, Unix- or DOS-style directory listing. Your FTP server seems to be using another format. You can see the transmitted listing when setting `client.ftp.verbose = true`. You can then provide a custom parser to `client.parseList`, see the documentation for details.\");\n }\n const files = lines\n .map(parser.parseLine)\n .filter((info) => info !== undefined);\n return parser.transformList(files);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressTracker = void 0;\n/**\n * Tracks progress of one socket data transfer at a time.\n */\nclass ProgressTracker {\n constructor() {\n this.bytesOverall = 0;\n this.intervalMs = 500;\n this.onStop = noop;\n this.onHandle = noop;\n }\n /**\n * Register a new handler for progress info. Use `undefined` to disable reporting.\n */\n reportTo(onHandle = noop) {\n this.onHandle = onHandle;\n }\n /**\n * Start tracking transfer progress of a socket.\n *\n * @param socket The socket to observe.\n * @param name A name associated with this progress tracking, e.g. a filename.\n * @param type The type of the transfer, typically \"upload\" or \"download\".\n */\n start(socket, name, type) {\n let lastBytes = 0;\n this.onStop = poll(this.intervalMs, () => {\n const bytes = socket.bytesRead + socket.bytesWritten;\n this.bytesOverall += bytes - lastBytes;\n lastBytes = bytes;\n this.onHandle({\n name,\n type,\n bytes,\n bytesOverall: this.bytesOverall\n });\n });\n }\n /**\n * Stop tracking transfer progress.\n */\n stop() {\n this.onStop(false);\n }\n /**\n * Call the progress handler one more time, then stop tracking.\n */\n updateAndStop() {\n this.onStop(true);\n }\n}\nexports.ProgressTracker = ProgressTracker;\n/**\n * Starts calling a callback function at a regular interval. The first call will go out\n * immediately. The function returns a function to stop the polling.\n */\nfunction poll(intervalMs, updateFunc) {\n const id = setInterval(updateFunc, intervalMs);\n const stopFunc = (stopWithUpdate) => {\n clearInterval(id);\n if (stopWithUpdate) {\n updateFunc();\n }\n // Prevent repeated calls to stop calling handler.\n updateFunc = noop;\n };\n updateFunc();\n return stopFunc;\n}\nfunction noop() { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringWriter = void 0;\nconst stream_1 = require(\"stream\");\nclass StringWriter extends stream_1.Writable {\n constructor(maxByteLength = 1 * 1024 * 1024) {\n super();\n this.maxByteLength = maxByteLength;\n this.byteLength = 0;\n this.bufs = [];\n }\n _write(chunk, _, callback) {\n if (!(chunk instanceof Buffer)) {\n callback(new Error(\"StringWriter: expects chunks of type 'Buffer'.\"));\n return;\n }\n if (this.byteLength + chunk.byteLength > this.maxByteLength) {\n callback(new Error(`StringWriter: Maximum bytes exceeded, maxByteLength=${this.maxByteLength}.`));\n return;\n }\n this.byteLength += chunk.byteLength;\n this.bufs.push(chunk);\n callback(null);\n }\n getText(encoding) {\n return Buffer.concat(this.bufs).toString(encoding);\n }\n}\nexports.StringWriter = StringWriter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enterPassiveModeIPv6 = enterPassiveModeIPv6;\nexports.parseEpsvResponse = parseEpsvResponse;\nexports.enterPassiveModeIPv4 = enterPassiveModeIPv4;\nexports.enterPassiveModeIPv4_forceControlHostIP = enterPassiveModeIPv4_forceControlHostIP;\nexports.parsePasvResponse = parsePasvResponse;\nexports.connectForPassiveTransfer = connectForPassiveTransfer;\nexports.uploadFrom = uploadFrom;\nexports.downloadTo = downloadTo;\nconst netUtils_1 = require(\"./netUtils\");\nconst stream_1 = require(\"stream\");\nconst tls_1 = require(\"tls\");\nconst parseControlResponse_1 = require(\"./parseControlResponse\");\n/**\n * Prepare a data socket using passive mode over IPv6.\n */\nasync function enterPassiveModeIPv6(ftp) {\n const res = await ftp.request(\"EPSV\");\n const port = parseEpsvResponse(res.message);\n if (!port) {\n throw new Error(\"Can't parse EPSV response: \" + res.message);\n }\n const controlHost = ftp.socket.remoteAddress;\n if (controlHost === undefined) {\n throw new Error(\"Control socket is disconnected, can't get remote address.\");\n }\n await connectForPassiveTransfer(controlHost, port, ftp);\n return res;\n}\n/**\n * Parse an EPSV response. Returns only the port as in EPSV the host of the control connection is used.\n */\nfunction parseEpsvResponse(message) {\n // Get port from EPSV response, e.g. \"229 Entering Extended Passive Mode (|||6446|)\"\n // Some FTP Servers such as the one on IBM i (OS/400) use ! instead of | in their EPSV response.\n const groups = message.match(/[|!]{3}(.+)[|!]/);\n if (groups === null || groups[1] === undefined) {\n throw new Error(`Can't parse response to 'EPSV': ${message}`);\n }\n const port = parseInt(groups[1], 10);\n if (Number.isNaN(port)) {\n throw new Error(`Can't parse response to 'EPSV', port is not a number: ${message}`);\n }\n return port;\n}\n/**\n * Prepare a data socket using passive mode over IPv4.\n */\nasync function enterPassiveModeIPv4(ftp) {\n const res = await ftp.request(\"PASV\");\n const target = parsePasvResponse(res.message);\n if (!target) {\n throw new Error(\"Can't parse PASV response: \" + res.message);\n }\n // If the host in the PASV response has a local address while the control connection hasn't,\n // we assume a NAT issue and use the IP of the control connection as the target for the data connection.\n // We can't always perform this replacement because it's possible (although unlikely) that the FTP server\n // indeed uses a different host for data connections.\n const controlHost = ftp.socket.remoteAddress;\n if ((0, netUtils_1.ipIsPrivateV4Address)(target.host) && controlHost && !(0, netUtils_1.ipIsPrivateV4Address)(controlHost)) {\n target.host = controlHost;\n }\n await connectForPassiveTransfer(target.host, target.port, ftp);\n return res;\n}\n/**\n * Prepare a data socket using passive mode over IPv4. Ignore the IP provided by the PASV response,\n * and use the control host IP. This is the same behaviour as with the more modern variant EPSV. Use\n * this to fix issues around NAT or provide more security by preventing FTP bounce attacks.\n */\nasync function enterPassiveModeIPv4_forceControlHostIP(ftp) {\n const res = await ftp.request(\"PASV\");\n const target = parsePasvResponse(res.message);\n if (!target) {\n throw new Error(\"Can't parse PASV response: \" + res.message);\n }\n const controlHost = ftp.socket.remoteAddress;\n if (controlHost === undefined) {\n throw new Error(\"Control socket is disconnected, can't get remote address.\");\n }\n await connectForPassiveTransfer(controlHost, target.port, ftp);\n return res;\n}\n/**\n * Parse a PASV response.\n */\nfunction parsePasvResponse(message) {\n // Get host and port from PASV response, e.g. \"227 Entering Passive Mode (192,168,1,100,10,229)\"\n const groups = message.match(/([-\\d]+,[-\\d]+,[-\\d]+,[-\\d]+),([-\\d]+),([-\\d]+)/);\n if (groups === null || groups.length !== 4) {\n throw new Error(`Can't parse response to 'PASV': ${message}`);\n }\n return {\n host: groups[1].replace(/,/g, \".\"),\n port: (parseInt(groups[2], 10) & 255) * 256 + (parseInt(groups[3], 10) & 255)\n };\n}\nfunction connectForPassiveTransfer(host, port, ftp) {\n return new Promise((resolve, reject) => {\n let socket = ftp._newSocket();\n const handleConnErr = function (err) {\n err.message = \"Can't open data connection in passive mode: \" + err.message;\n reject(err);\n };\n const handleTimeout = function () {\n socket.destroy();\n reject(new Error(`Timeout when trying to open data connection to ${host}:${port}`));\n };\n socket.setTimeout(ftp.timeout);\n socket.on(\"error\", handleConnErr);\n socket.on(\"timeout\", handleTimeout);\n socket.connect({ port, host, family: ftp.ipFamily }, () => {\n if (ftp.socket instanceof tls_1.TLSSocket) {\n socket = (0, tls_1.connect)(Object.assign({}, ftp.tlsOptions, {\n socket,\n // Reuse the TLS session negotiated earlier when the control connection\n // was upgraded. Servers expect this because it provides additional\n // security: If a completely new session would be negotiated, a hacker\n // could guess the port and connect to the new data connection before we do\n // by just starting his/her own TLS session.\n session: ftp.socket.getSession()\n }));\n // It's the responsibility of the transfer task to wait until the\n // TLS socket issued the event 'secureConnect'. We can't do this\n // here because some servers will start upgrading after the\n // specific transfer request has been made. List and download don't\n // have to wait for this event because the server sends whenever it\n // is ready. But for upload this has to be taken into account,\n // see the details in the upload() function below.\n }\n // Let the FTPContext listen to errors from now on, remove local handler.\n socket.removeListener(\"error\", handleConnErr);\n socket.removeListener(\"timeout\", handleTimeout);\n ftp.dataSocket = socket;\n resolve();\n });\n });\n}\n/**\n * Helps resolving/rejecting transfers.\n *\n * This is used internally for all FTP transfers. For example when downloading, the server might confirm\n * with \"226 Transfer complete\" when in fact the download on the data connection has not finished\n * yet. With all transfers we make sure that a) the result arrived and b) has been confirmed by\n * e.g. the control connection. We just don't know in which order this will happen.\n */\nclass TransferResolver {\n /**\n * Instantiate a TransferResolver\n */\n constructor(ftp, progress) {\n this.ftp = ftp;\n this.progress = progress;\n this.response = undefined;\n this.dataTransferDone = false;\n }\n /**\n * Mark the beginning of a transfer.\n *\n * @param name - Name of the transfer, usually the filename.\n * @param type - Type of transfer, usually \"upload\" or \"download\".\n */\n onDataStart(name, type) {\n // Let the data socket be in charge of tracking timeouts during transfer.\n // The control socket sits idle during this time anyway and might provoke\n // a timeout unnecessarily. The control connection will take care\n // of timeouts again once data transfer is complete or failed.\n if (this.ftp.dataSocket === undefined) {\n throw new Error(\"Data transfer should start but there is no data connection.\");\n }\n this.ftp.socket.setTimeout(0);\n this.ftp.dataSocket.setTimeout(this.ftp.timeout);\n this.progress.start(this.ftp.dataSocket, name, type);\n }\n /**\n * The data connection has finished the transfer.\n */\n onDataDone(task) {\n this.progress.updateAndStop();\n // Hand-over timeout tracking back to the control connection. It's possible that\n // we don't receive the response over the control connection that the transfer is\n // done. In this case, we want to correctly associate the resulting timeout with\n // the control connection.\n this.ftp.socket.setTimeout(this.ftp.timeout);\n if (this.ftp.dataSocket) {\n this.ftp.dataSocket.setTimeout(0);\n }\n this.dataTransferDone = true;\n this.tryResolve(task);\n }\n /**\n * The control connection reports the transfer as finished.\n */\n onControlDone(task, response) {\n this.response = response;\n this.tryResolve(task);\n }\n /**\n * An error has been reported and the task should be rejected.\n */\n onError(task, err) {\n this.progress.updateAndStop();\n this.ftp.socket.setTimeout(this.ftp.timeout);\n this.ftp.dataSocket = undefined;\n task.reject(err);\n }\n /**\n * Control connection sent an unexpected request requiring a response from our part. We\n * can't provide that (because unknown) and have to close the contrext with an error because\n * the FTP server is now caught up in a state we can't resolve.\n */\n onUnexpectedRequest(response) {\n const err = new Error(`Unexpected FTP response is requesting an answer: ${response.message}`);\n this.ftp.closeWithError(err);\n }\n tryResolve(task) {\n // To resolve, we need both control and data connection to report that the transfer is done.\n const canResolve = this.dataTransferDone && this.response !== undefined;\n if (canResolve) {\n this.ftp.dataSocket = undefined;\n task.resolve(this.response);\n }\n }\n}\nfunction uploadFrom(source, config) {\n const resolver = new TransferResolver(config.ftp, config.tracker);\n const fullCommand = `${config.command} ${config.remotePath}`;\n return config.ftp.handle(fullCommand, (res, task) => {\n if (res instanceof Error) {\n resolver.onError(task, res);\n }\n else if (res.code === 150 || res.code === 125) { // Ready to upload\n const dataSocket = config.ftp.dataSocket;\n if (!dataSocket) {\n resolver.onError(task, new Error(\"Upload should begin but no data connection is available.\"));\n return;\n }\n // If we are using TLS, we have to wait until the dataSocket issued\n // 'secureConnect'. If this hasn't happened yet, getCipher() returns undefined.\n const canUpload = \"getCipher\" in dataSocket ? dataSocket.getCipher() !== undefined : true;\n onConditionOrEvent(canUpload, dataSocket, \"secureConnect\", () => {\n config.ftp.log(`Uploading to ${(0, netUtils_1.describeAddress)(dataSocket)} (${(0, netUtils_1.describeTLS)(dataSocket)})`);\n resolver.onDataStart(config.remotePath, config.type);\n (0, stream_1.pipeline)(source, dataSocket, err => {\n if (err) {\n resolver.onError(task, err);\n }\n else {\n resolver.onDataDone(task);\n }\n });\n });\n }\n else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) { // Transfer complete\n resolver.onControlDone(task, res);\n }\n else if ((0, parseControlResponse_1.positiveIntermediate)(res.code)) {\n resolver.onUnexpectedRequest(res);\n }\n // Ignore all other positive preliminary response codes (< 200)\n });\n}\nfunction downloadTo(destination, config) {\n if (!config.ftp.dataSocket) {\n throw new Error(\"Download will be initiated but no data connection is available.\");\n }\n const resolver = new TransferResolver(config.ftp, config.tracker);\n return config.ftp.handle(config.command, (res, task) => {\n if (res instanceof Error) {\n resolver.onError(task, res);\n }\n else if (res.code === 150 || res.code === 125) { // Ready to download\n const dataSocket = config.ftp.dataSocket;\n if (!dataSocket) {\n resolver.onError(task, new Error(\"Download should begin but no data connection is available.\"));\n return;\n }\n config.ftp.log(`Downloading from ${(0, netUtils_1.describeAddress)(dataSocket)} (${(0, netUtils_1.describeTLS)(dataSocket)})`);\n resolver.onDataStart(config.remotePath, config.type);\n (0, stream_1.pipeline)(dataSocket, destination, err => {\n if (err) {\n resolver.onError(task, err);\n }\n else {\n resolver.onDataDone(task);\n }\n });\n }\n else if (res.code === 350) { // Restarting at startAt.\n config.ftp.send(\"RETR \" + config.remotePath);\n }\n else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) { // Transfer complete\n resolver.onControlDone(task, res);\n }\n else if ((0, parseControlResponse_1.positiveIntermediate)(res.code)) {\n resolver.onUnexpectedRequest(res);\n }\n // Ignore all other positive preliminary response codes (< 200)\n });\n}\n/**\n * Calls a function immediately if a condition is met or subscribes to an event and calls\n * it once the event is emitted.\n *\n * @param condition The condition to test.\n * @param emitter The emitter to use if the condition is not met.\n * @param eventName The event to subscribe to if the condition is not met.\n * @param action The function to call.\n */\nfunction onConditionOrEvent(condition, emitter, eventName, action) {\n if (condition === true) {\n action();\n }\n else {\n emitter.once(eventName, () => action());\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nconst fs_1 = require(\"fs\");\nconst path_1 = require(\"path\");\nconst tls_1 = require(\"tls\");\nconst util_1 = require(\"util\");\nconst FtpContext_1 = require(\"./FtpContext\");\nconst netUtils_1 = require(\"./netUtils\");\nconst parseControlResponse_1 = require(\"./parseControlResponse\");\nconst parseList_1 = require(\"./parseList\");\nconst parseListMLSD_1 = require(\"./parseListMLSD\");\nconst ProgressTracker_1 = require(\"./ProgressTracker\");\nconst StringWriter_1 = require(\"./StringWriter\");\nconst transfer_1 = require(\"./transfer\");\n// Use promisify to keep the library compatible with Node 8.\nconst fsReadDir = (0, util_1.promisify)(fs_1.readdir);\nconst fsMkDir = (0, util_1.promisify)(fs_1.mkdir);\nconst fsStat = (0, util_1.promisify)(fs_1.stat);\nconst fsOpen = (0, util_1.promisify)(fs_1.open);\nconst fsClose = (0, util_1.promisify)(fs_1.close);\nconst fsUnlink = (0, util_1.promisify)(fs_1.unlink);\nconst defaultClientOptions = {\n allowSeparateTransferHost: true,\n maxListingBytes: 40 * 1024 * 1024\n};\nconst LIST_COMMANDS_DEFAULT = () => [\"LIST -a\", \"LIST\"];\nconst LIST_COMMANDS_MLSD = () => [\"MLSD\", \"LIST -a\", \"LIST\"];\n/**\n * High-level API to interact with an FTP server.\n */\nclass Client {\n /**\n * Instantiate an FTP client.\n *\n * @param timeout Timeout in milliseconds, use 0 for no timeout. Optional, default is 30 seconds.\n */\n constructor(timeout = 30000, userOptions = defaultClientOptions) {\n this.availableListCommands = LIST_COMMANDS_DEFAULT();\n const options = { ...defaultClientOptions, ...userOptions };\n this.ftp = new FtpContext_1.FTPContext(timeout);\n this.prepareTransfer = this._enterFirstCompatibleMode([\n transfer_1.enterPassiveModeIPv6,\n options.allowSeparateTransferHost ? transfer_1.enterPassiveModeIPv4 : transfer_1.enterPassiveModeIPv4_forceControlHostIP\n ]);\n this.options = options;\n this.parseList = parseList_1.parseList;\n this._progressTracker = new ProgressTracker_1.ProgressTracker();\n }\n /**\n * Close the client and all open socket connections.\n *\n * Close the client and all open socket connections. The client can’t be used anymore after calling this method,\n * you have to either reconnect with `access` or `connect` or instantiate a new instance to continue any work.\n * A client is also closed automatically if any timeout or connection error occurs.\n */\n close() {\n this.ftp.close();\n this._progressTracker.stop();\n }\n /**\n * Returns true if the client is closed and can't be used anymore.\n */\n get closed() {\n return this.ftp.closed;\n }\n /**\n * Connect (or reconnect) to an FTP server.\n *\n * This is an instance method and thus can be called multiple times during the lifecycle of a `Client`\n * instance. Whenever you do, the client is reset with a new control connection. This also implies that\n * you can reopen a `Client` instance that has been closed due to an error when reconnecting with this\n * method. In fact, reconnecting is the only way to continue using a closed `Client`.\n *\n * @param host Host the client should connect to. Optional, default is \"localhost\".\n * @param port Port the client should connect to. Optional, default is 21.\n */\n connect(host = \"localhost\", port = 21) {\n this.ftp.reset();\n this.ftp.socket.connect({\n host,\n port,\n family: this.ftp.ipFamily\n }, () => this.ftp.log(`Connected to ${(0, netUtils_1.describeAddress)(this.ftp.socket)} (${(0, netUtils_1.describeTLS)(this.ftp.socket)})`));\n return this._handleConnectResponse();\n }\n /**\n * As `connect` but using implicit TLS. Implicit TLS is not an FTP standard and has been replaced by\n * explicit TLS. There are still FTP servers that support only implicit TLS, though.\n */\n connectImplicitTLS(host = \"localhost\", port = 21, tlsOptions = {}) {\n this.ftp.reset();\n this.ftp.socket = (0, tls_1.connect)(port, host, tlsOptions, () => this.ftp.log(`Connected to ${(0, netUtils_1.describeAddress)(this.ftp.socket)} (${(0, netUtils_1.describeTLS)(this.ftp.socket)})`));\n this.ftp.tlsOptions = tlsOptions;\n return this._handleConnectResponse();\n }\n /**\n * Handles the first reponse by an FTP server after the socket connection has been established.\n */\n _handleConnectResponse() {\n return this.ftp.handle(undefined, (res, task) => {\n if (res instanceof Error) {\n // The connection has been destroyed by the FTPContext at this point.\n task.reject(res);\n }\n else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) {\n task.resolve(res);\n }\n // Reject all other codes, including 120 \"Service ready in nnn minutes\".\n else {\n // Don't stay connected but don't replace the socket yet by using reset()\n // so the user can inspect properties of this instance.\n task.reject(new FtpContext_1.FTPError(res));\n }\n });\n }\n /**\n * Send an FTP command and handle the first response.\n */\n send(command, ignoreErrorCodesDEPRECATED = false) {\n if (ignoreErrorCodesDEPRECATED) { // Deprecated starting from 3.9.0\n this.ftp.log(\"Deprecated call using send(command, flag) with boolean flag to ignore errors. Use sendIgnoringError(command).\");\n return this.sendIgnoringError(command);\n }\n return this.ftp.request(command);\n }\n /**\n * Send an FTP command and ignore an FTP error response. Any other kind of error or timeout will still reject the Promise.\n *\n * @param command\n */\n sendIgnoringError(command) {\n return this.ftp.handle(command, (res, task) => {\n if (res instanceof FtpContext_1.FTPError) {\n task.resolve({ code: res.code, message: res.message });\n }\n else if (res instanceof Error) {\n task.reject(res);\n }\n else {\n task.resolve(res);\n }\n });\n }\n /**\n * Upgrade the current socket connection to TLS.\n *\n * @param options TLS options as in `tls.connect(options)`, optional.\n * @param command Set the authentication command. Optional, default is \"AUTH TLS\".\n */\n async useTLS(options = {}, command = \"AUTH TLS\") {\n const ret = await this.send(command);\n this.ftp.socket = await (0, netUtils_1.upgradeSocket)(this.ftp.socket, options);\n this.ftp.tlsOptions = options; // Keep the TLS options for later data connections that should use the same options.\n this.ftp.log(`Control socket is using: ${(0, netUtils_1.describeTLS)(this.ftp.socket)}`);\n return ret;\n }\n /**\n * Login a user with a password.\n *\n * @param user Username to use for login. Optional, default is \"anonymous\".\n * @param password Password to use for login. Optional, default is \"guest\".\n */\n login(user = \"anonymous\", password = \"guest\") {\n this.ftp.log(`Login security: ${(0, netUtils_1.describeTLS)(this.ftp.socket)}`);\n return this.ftp.handle(\"USER \" + user, (res, task) => {\n if (res instanceof Error) {\n task.reject(res);\n }\n else if ((0, parseControlResponse_1.positiveCompletion)(res.code)) { // User logged in proceed OR Command superfluous\n task.resolve(res);\n }\n else if (res.code === 331) { // User name okay, need password\n this.ftp.send(\"PASS \" + password);\n }\n else { // Also report error on 332 (Need account)\n task.reject(new FtpContext_1.FTPError(res));\n }\n });\n }\n /**\n * Set the usual default settings.\n *\n * Settings used:\n * * Binary mode (TYPE I)\n * * File structure (STRU F)\n * * Additional settings for FTPS (PBSZ 0, PROT P)\n */\n async useDefaultSettings() {\n const features = await this.features();\n // Use MLSD directory listing if possible. See https://tools.ietf.org/html/rfc3659#section-7.8:\n // \"The presence of the MLST feature indicates that both MLST and MLSD are supported.\"\n const supportsMLSD = features.has(\"MLST\");\n this.availableListCommands = supportsMLSD ? LIST_COMMANDS_MLSD() : LIST_COMMANDS_DEFAULT();\n await this.send(\"TYPE I\"); // Binary mode\n await this.sendIgnoringError(\"STRU F\"); // Use file structure\n await this.sendIgnoringError(\"OPTS UTF8 ON\"); // Some servers expect UTF-8 to be enabled explicitly and setting before login might not have worked.\n if (supportsMLSD) {\n await this.sendIgnoringError(\"OPTS MLST type;size;modify;unique;unix.mode;unix.owner;unix.group;unix.ownername;unix.groupname;\"); // Make sure MLSD listings include all we can parse\n }\n if (this.ftp.hasTLS) {\n await this.sendIgnoringError(\"PBSZ 0\"); // Set to 0 for TLS\n await this.sendIgnoringError(\"PROT P\"); // Protect channel (also for data connections)\n }\n }\n /**\n * Convenience method that calls `connect`, `useTLS`, `login` and `useDefaultSettings`.\n *\n * This is an instance method and thus can be called multiple times during the lifecycle of a `Client`\n * instance. Whenever you do, the client is reset with a new control connection. This also implies that\n * you can reopen a `Client` instance that has been closed due to an error when reconnecting with this\n * method. In fact, reconnecting is the only way to continue using a closed `Client`.\n */\n async access(options = {}) {\n var _a, _b;\n const useExplicitTLS = options.secure === true;\n const useImplicitTLS = options.secure === \"implicit\";\n let welcome;\n if (useImplicitTLS) {\n welcome = await this.connectImplicitTLS(options.host, options.port, options.secureOptions);\n }\n else {\n welcome = await this.connect(options.host, options.port);\n }\n if (useExplicitTLS) {\n // Fixes https://github.com/patrickjuchli/basic-ftp/issues/166 by making sure\n // host is set for any future data connection as well.\n const secureOptions = (_a = options.secureOptions) !== null && _a !== void 0 ? _a : {};\n secureOptions.host = (_b = secureOptions.host) !== null && _b !== void 0 ? _b : options.host;\n await this.useTLS(secureOptions);\n }\n // Set UTF-8 on before login in case there are non-ascii characters in user or password.\n // Note that this might not work before login depending on server.\n await this.sendIgnoringError(\"OPTS UTF8 ON\");\n await this.login(options.user, options.password);\n await this.useDefaultSettings();\n return welcome;\n }\n /**\n * Get the current working directory.\n */\n async pwd() {\n const res = await this.send(\"PWD\");\n // The directory is part of the return message, for example:\n // 257 \"/this/that\" is current directory.\n const parsed = res.message.match(/\"(.+)\"/);\n if (parsed === null || parsed[1] === undefined) {\n throw new Error(`Can't parse response to command 'PWD': ${res.message}`);\n }\n return parsed[1];\n }\n /**\n * Get a description of supported features.\n *\n * This sends the FEAT command and parses the result into a Map where keys correspond to available commands\n * and values hold further information. Be aware that your FTP servers might not support this\n * command in which case this method will not throw an exception but just return an empty Map.\n */\n async features() {\n const res = await this.sendIgnoringError(\"FEAT\");\n const features = new Map();\n // Not supporting any special features will be reported with a single line.\n if (res.code < 400 && (0, parseControlResponse_1.isMultiline)(res.message)) {\n // The first and last line wrap the multiline response, ignore them.\n res.message.split(\"\\n\").slice(1, -1).forEach(line => {\n // A typical lines looks like: \" REST STREAM\" or \" MDTM\".\n // Servers might not use an indentation though.\n const entry = line.trim().split(\" \");\n features.set(entry[0], entry[1] || \"\");\n });\n }\n return features;\n }\n /**\n * Set the working directory.\n */\n async cd(path) {\n const validPath = await this.protectWhitespace(path);\n return this.send(\"CWD \" + validPath);\n }\n /**\n * Switch to the parent directory of the working directory.\n */\n async cdup() {\n return this.send(\"CDUP\");\n }\n /**\n * Get the last modified time of a file. This is not supported by every FTP server, in which case\n * calling this method will throw an exception.\n */\n async lastMod(path) {\n const validPath = await this.protectWhitespace(path);\n const res = await this.send(`MDTM ${validPath}`);\n const date = res.message.slice(4);\n return (0, parseListMLSD_1.parseMLSxDate)(date);\n }\n /**\n * Get the size of a file.\n */\n async size(path) {\n const validPath = await this.protectWhitespace(path);\n const command = `SIZE ${validPath}`;\n const res = await this.send(command);\n // The size is part of the response message, for example: \"213 555555\". It's\n // possible that there is a commmentary appended like \"213 5555, some commentary\".\n const size = parseInt(res.message.slice(4), 10);\n if (Number.isNaN(size)) {\n throw new Error(`Can't parse response to command '${command}' as a numerical value: ${res.message}`);\n }\n return size;\n }\n /**\n * Rename a file.\n *\n * Depending on the FTP server this might also be used to move a file from one\n * directory to another by providing full paths.\n */\n async rename(srcPath, destPath) {\n const validSrc = await this.protectWhitespace(srcPath);\n const validDest = await this.protectWhitespace(destPath);\n await this.send(\"RNFR \" + validSrc);\n return this.send(\"RNTO \" + validDest);\n }\n /**\n * Remove a file from the current working directory.\n *\n * You can ignore FTP error return codes which won't throw an exception if e.g.\n * the file doesn't exist.\n */\n async remove(path, ignoreErrorCodes = false) {\n const validPath = await this.protectWhitespace(path);\n if (ignoreErrorCodes) {\n return this.sendIgnoringError(`DELE ${validPath}`);\n }\n return this.send(`DELE ${validPath}`);\n }\n /**\n * Report transfer progress for any upload or download to a given handler.\n *\n * This will also reset the overall transfer counter that can be used for multiple transfers. You can\n * also call the function without a handler to stop reporting to an earlier one.\n *\n * @param handler Handler function to call on transfer progress.\n */\n trackProgress(handler) {\n this._progressTracker.bytesOverall = 0;\n this._progressTracker.reportTo(handler);\n }\n /**\n * Upload data from a readable stream or a local file to a remote file.\n *\n * @param source Readable stream or path to a local file.\n * @param toRemotePath Path to a remote file to write to.\n */\n async uploadFrom(source, toRemotePath, options = {}) {\n return this._uploadWithCommand(source, toRemotePath, \"STOR\", options);\n }\n /**\n * Upload data from a readable stream or a local file by appending it to an existing file. If the file doesn't\n * exist the FTP server should create it.\n *\n * @param source Readable stream or path to a local file.\n * @param toRemotePath Path to a remote file to write to.\n */\n async appendFrom(source, toRemotePath, options = {}) {\n return this._uploadWithCommand(source, toRemotePath, \"APPE\", options);\n }\n /**\n * @protected\n */\n async _uploadWithCommand(source, remotePath, command, options) {\n if (typeof source === \"string\") {\n return this._uploadLocalFile(source, remotePath, command, options);\n }\n return this._uploadFromStream(source, remotePath, command);\n }\n /**\n * @protected\n */\n async _uploadLocalFile(localPath, remotePath, command, options) {\n const fd = await fsOpen(localPath, \"r\");\n const source = (0, fs_1.createReadStream)(\"\", {\n fd,\n start: options.localStart,\n end: options.localEndInclusive,\n autoClose: false\n });\n try {\n return await this._uploadFromStream(source, remotePath, command);\n }\n finally {\n await ignoreError(() => fsClose(fd));\n }\n }\n /**\n * @protected\n */\n async _uploadFromStream(source, remotePath, command) {\n const onError = (err) => this.ftp.closeWithError(err);\n source.once(\"error\", onError);\n try {\n const validPath = await this.protectWhitespace(remotePath);\n await this.prepareTransfer(this.ftp);\n // Keep the keyword `await` or the `finally` clause below runs too early\n // and removes the event listener for the source stream too early.\n return await (0, transfer_1.uploadFrom)(source, {\n ftp: this.ftp,\n tracker: this._progressTracker,\n command,\n remotePath: validPath,\n type: \"upload\"\n });\n }\n finally {\n source.removeListener(\"error\", onError);\n }\n }\n /**\n * Download a remote file and pipe its data to a writable stream or to a local file.\n *\n * You can optionally define at which position of the remote file you'd like to start\n * downloading. If the destination you provide is a file, the offset will be applied\n * to it as well. For example: To resume a failed download, you'd request the size of\n * the local, partially downloaded file and use that as the offset. Assuming the size\n * is 23, you'd download the rest using `downloadTo(\"local.txt\", \"remote.txt\", 23)`.\n *\n * @param destination Stream or path for a local file to write to.\n * @param fromRemotePath Path of the remote file to read from.\n * @param startAt Position within the remote file to start downloading at. If the destination is a file, this offset is also applied to it.\n */\n async downloadTo(destination, fromRemotePath, startAt = 0) {\n if (typeof destination === \"string\") {\n return this._downloadToFile(destination, fromRemotePath, startAt);\n }\n return this._downloadToStream(destination, fromRemotePath, startAt);\n }\n /**\n * @protected\n */\n async _downloadToFile(localPath, remotePath, startAt) {\n const appendingToLocalFile = startAt > 0;\n const fileSystemFlags = appendingToLocalFile ? \"r+\" : \"w\";\n const fd = await fsOpen(localPath, fileSystemFlags);\n const destination = (0, fs_1.createWriteStream)(\"\", {\n fd,\n start: startAt,\n autoClose: false\n });\n try {\n return await this._downloadToStream(destination, remotePath, startAt);\n }\n catch (err) {\n const localFileStats = await ignoreError(() => fsStat(localPath));\n const hasDownloadedData = localFileStats && localFileStats.size > 0;\n const shouldRemoveLocalFile = !appendingToLocalFile && !hasDownloadedData;\n if (shouldRemoveLocalFile) {\n await ignoreError(() => fsUnlink(localPath));\n }\n throw err;\n }\n finally {\n await ignoreError(() => fsClose(fd));\n }\n }\n /**\n * @protected\n */\n async _downloadToStream(destination, remotePath, startAt) {\n const onError = (err) => this.ftp.closeWithError(err);\n destination.once(\"error\", onError);\n try {\n const validPath = await this.protectWhitespace(remotePath);\n await this.prepareTransfer(this.ftp);\n // Keep the keyword `await` or the `finally` clause below runs too early\n // and removes the event listener for the source stream too early.\n return await (0, transfer_1.downloadTo)(destination, {\n ftp: this.ftp,\n tracker: this._progressTracker,\n command: startAt > 0 ? `REST ${startAt}` : `RETR ${validPath}`,\n remotePath: validPath,\n type: \"download\"\n });\n }\n finally {\n destination.removeListener(\"error\", onError);\n destination.end();\n }\n }\n /**\n * List files and directories in the current working directory, or from `path` if specified.\n *\n * @param [path] Path to remote file or directory.\n */\n async list(path = \"\") {\n const validPath = await this.protectWhitespace(path);\n let lastError;\n for (const candidate of this.availableListCommands) {\n const command = validPath === \"\" ? candidate : `${candidate} ${validPath}`;\n await this.prepareTransfer(this.ftp);\n try {\n const parsedList = await this._requestListWithCommand(command);\n // Use successful candidate for all subsequent requests.\n this.availableListCommands = [candidate];\n return parsedList;\n }\n catch (err) {\n const shouldTryNext = err instanceof FtpContext_1.FTPError;\n if (!shouldTryNext) {\n throw err;\n }\n lastError = err;\n }\n }\n throw lastError;\n }\n /**\n * @protected\n */\n async _requestListWithCommand(command) {\n const buffer = new StringWriter_1.StringWriter(this.options.maxListingBytes);\n await (0, transfer_1.downloadTo)(buffer, {\n ftp: this.ftp,\n tracker: this._progressTracker,\n command,\n remotePath: \"\",\n type: \"list\"\n });\n const text = buffer.getText(this.ftp.encoding);\n this.ftp.log(text);\n return this.parseList(text);\n }\n /**\n * Remove a directory and all of its content.\n *\n * @param remoteDirPath The path of the remote directory to delete.\n * @example client.removeDir(\"foo\") // Remove directory 'foo' using a relative path.\n * @example client.removeDir(\"foo/bar\") // Remove directory 'bar' using a relative path.\n * @example client.removeDir(\"/foo/bar\") // Remove directory 'bar' using an absolute path.\n * @example client.removeDir(\"/\") // Remove everything.\n */\n async removeDir(remoteDirPath) {\n return this._exitAtCurrentDirectory(async () => {\n await this.cd(remoteDirPath);\n // Get the absolute path of the target because remoteDirPath might be a relative path, even `../` is possible.\n const absoluteDirPath = await this.pwd();\n await this.clearWorkingDir();\n const dirIsRoot = absoluteDirPath === \"/\";\n if (!dirIsRoot) {\n await this.cdup();\n await this.removeEmptyDir(absoluteDirPath);\n }\n });\n }\n /**\n * Remove all files and directories in the working directory without removing\n * the working directory itself.\n */\n async clearWorkingDir() {\n for (const file of await this.list()) {\n if (file.isDirectory) {\n await this.cd(file.name);\n await this.clearWorkingDir();\n await this.cdup();\n await this.removeEmptyDir(file.name);\n }\n else {\n await this.remove(file.name);\n }\n }\n }\n /**\n * Upload the contents of a local directory to the remote working directory.\n *\n * This will overwrite existing files with the same names and reuse existing directories.\n * Unrelated files and directories will remain untouched. You can optionally provide a `remoteDirPath`\n * to put the contents inside a directory which will be created if necessary including all\n * intermediate directories. If you did provide a remoteDirPath the working directory will stay\n * the same as before calling this method.\n *\n * @param localDirPath Local path, e.g. \"foo/bar\" or \"../test\"\n * @param [remoteDirPath] Remote path of a directory to upload to. Working directory if undefined.\n */\n async uploadFromDir(localDirPath, remoteDirPath) {\n return this._exitAtCurrentDirectory(async () => {\n if (remoteDirPath) {\n await this.ensureDir(remoteDirPath);\n }\n return await this._uploadToWorkingDir(localDirPath);\n });\n }\n /**\n * @protected\n */\n async _uploadToWorkingDir(localDirPath) {\n const files = await fsReadDir(localDirPath);\n for (const file of files) {\n const fullPath = (0, path_1.join)(localDirPath, file);\n const stats = await fsStat(fullPath);\n if (stats.isFile()) {\n await this.uploadFrom(fullPath, file);\n }\n else if (stats.isDirectory()) {\n await this._openDir(file);\n await this._uploadToWorkingDir(fullPath);\n await this.cdup();\n }\n }\n }\n /**\n * Download all files and directories of the working directory to a local directory.\n *\n * @param localDirPath The local directory to download to.\n * @param remoteDirPath Remote directory to download. Current working directory if not specified.\n */\n async downloadToDir(localDirPath, remoteDirPath) {\n return this._exitAtCurrentDirectory(async () => {\n if (remoteDirPath) {\n await this.cd(remoteDirPath);\n }\n return await this._downloadFromWorkingDir(localDirPath);\n });\n }\n /**\n * @protected\n */\n async _downloadFromWorkingDir(localDirPath) {\n await ensureLocalDirectory(localDirPath);\n for (const file of await this.list()) {\n const hasInvalidName = !file.name || (0, path_1.basename)(file.name) !== file.name;\n if (hasInvalidName) {\n const safeName = JSON.stringify(file.name);\n this.ftp.log(`Invalid filename from server listing, will skip file. (${safeName})`);\n continue;\n }\n const localPath = (0, path_1.join)(localDirPath, file.name);\n if (file.isDirectory) {\n await this.cd(file.name);\n await this._downloadFromWorkingDir(localPath);\n await this.cdup();\n }\n else if (file.isFile) {\n await this.downloadTo(localPath, file.name);\n }\n }\n }\n /**\n * Make sure a given remote path exists, creating all directories as necessary.\n * This function also changes the current working directory to the given path.\n */\n async ensureDir(remoteDirPath) {\n // If the remoteDirPath was absolute go to root directory.\n if (remoteDirPath.startsWith(\"/\")) {\n await this.cd(\"/\");\n }\n const names = remoteDirPath.split(\"/\").filter(name => name !== \"\");\n for (const name of names) {\n await this._openDir(name);\n }\n }\n /**\n * Try to create a directory and enter it. This will not raise an exception if the directory\n * couldn't be created if for example it already exists.\n * @protected\n */\n async _openDir(dirName) {\n await this.sendIgnoringError(\"MKD \" + dirName);\n await this.cd(dirName);\n }\n /**\n * Remove an empty directory, will fail if not empty.\n */\n async removeEmptyDir(path) {\n const validPath = await this.protectWhitespace(path);\n return this.send(`RMD ${validPath}`);\n }\n /**\n * FTP servers can't handle filenames that have leading whitespace. This method transforms\n * a given path to fix that issue for most cases.\n */\n async protectWhitespace(path) {\n if (!path.startsWith(\" \")) {\n return path;\n }\n // Handle leading whitespace by prepending the absolute path:\n // \" test.txt\" while being in the root directory becomes \"/ test.txt\".\n const pwd = await this.pwd();\n const absolutePathPrefix = pwd.endsWith(\"/\") ? pwd : pwd + \"/\";\n return absolutePathPrefix + path;\n }\n async _exitAtCurrentDirectory(func) {\n const userDir = await this.pwd();\n try {\n return await func();\n }\n finally {\n if (!this.closed) {\n await ignoreError(() => this.cd(userDir));\n }\n }\n }\n /**\n * Try all available transfer strategies and pick the first one that works. Update `client` to\n * use the working strategy for all successive transfer requests.\n *\n * @returns a function that will try the provided strategies.\n */\n _enterFirstCompatibleMode(strategies) {\n return async (ftp) => {\n ftp.log(\"Trying to find optimal transfer strategy...\");\n let lastError = undefined;\n for (const strategy of strategies) {\n try {\n const res = await strategy(ftp);\n ftp.log(\"Optimal transfer strategy found.\");\n this.prepareTransfer = strategy;\n return res;\n }\n catch (err) {\n // Try the next candidate no matter the exact error. It's possible that a server\n // answered incorrectly to a strategy, for example a PASV answer to an EPSV.\n lastError = err;\n }\n }\n throw new Error(`None of the available transfer strategies work. Last error response was '${lastError}'.`);\n };\n }\n /**\n * DEPRECATED, use `uploadFrom`.\n * @deprecated\n */\n async upload(source, toRemotePath, options = {}) {\n this.ftp.log(\"Warning: upload() has been deprecated, use uploadFrom().\");\n return this.uploadFrom(source, toRemotePath, options);\n }\n /**\n * DEPRECATED, use `appendFrom`.\n * @deprecated\n */\n async append(source, toRemotePath, options = {}) {\n this.ftp.log(\"Warning: append() has been deprecated, use appendFrom().\");\n return this.appendFrom(source, toRemotePath, options);\n }\n /**\n * DEPRECATED, use `downloadTo`.\n * @deprecated\n */\n async download(destination, fromRemotePath, startAt = 0) {\n this.ftp.log(\"Warning: download() has been deprecated, use downloadTo().\");\n return this.downloadTo(destination, fromRemotePath, startAt);\n }\n /**\n * DEPRECATED, use `uploadFromDir`.\n * @deprecated\n */\n async uploadDir(localDirPath, remoteDirPath) {\n this.ftp.log(\"Warning: uploadDir() has been deprecated, use uploadFromDir().\");\n return this.uploadFromDir(localDirPath, remoteDirPath);\n }\n /**\n * DEPRECATED, use `downloadToDir`.\n * @deprecated\n */\n async downloadDir(localDirPath) {\n this.ftp.log(\"Warning: downloadDir() has been deprecated, use downloadToDir().\");\n return this.downloadToDir(localDirPath);\n }\n}\nexports.Client = Client;\nasync function ensureLocalDirectory(path) {\n try {\n await fsStat(path);\n }\n catch (_a) {\n await fsMkDir(path, { recursive: true });\n }\n}\nasync function ignoreError(func) {\n try {\n return await func();\n }\n catch (_a) {\n // Ignore\n return undefined;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enterPassiveModeIPv6 = exports.enterPassiveModeIPv4 = void 0;\n/**\n * Public API\n */\n__exportStar(require(\"./Client\"), exports);\n__exportStar(require(\"./FtpContext\"), exports);\n__exportStar(require(\"./FileInfo\"), exports);\n__exportStar(require(\"./parseList\"), exports);\n__exportStar(require(\"./StringEncoding\"), exports);\nvar transfer_1 = require(\"./transfer\");\nObject.defineProperty(exports, \"enterPassiveModeIPv4\", { enumerable: true, get: function () { return transfer_1.enterPassiveModeIPv4; } });\nObject.defineProperty(exports, \"enterPassiveModeIPv6\", { enumerable: true, get: function () { return transfer_1.enterPassiveModeIPv6; } });\n","/*\n Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*jslint vars:false, bitwise:true*/\n/*jshint indent:4*/\n/*global exports:true*/\n(function clone(exports) {\n 'use strict';\n\n var Syntax,\n VisitorOption,\n VisitorKeys,\n BREAK,\n SKIP,\n REMOVE;\n\n function deepCopy(obj) {\n var ret = {}, key, val;\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n val = obj[key];\n if (typeof val === 'object' && val !== null) {\n ret[key] = deepCopy(val);\n } else {\n ret[key] = val;\n }\n }\n }\n return ret;\n }\n\n // based on LLVM libc++ upper_bound / lower_bound\n // MIT License\n\n function upperBound(array, func) {\n var diff, len, i, current;\n\n len = array.length;\n i = 0;\n\n while (len) {\n diff = len >>> 1;\n current = i + diff;\n if (func(array[current])) {\n len = diff;\n } else {\n i = current + 1;\n len -= diff + 1;\n }\n }\n return i;\n }\n\n Syntax = {\n AssignmentExpression: 'AssignmentExpression',\n AssignmentPattern: 'AssignmentPattern',\n ArrayExpression: 'ArrayExpression',\n ArrayPattern: 'ArrayPattern',\n ArrowFunctionExpression: 'ArrowFunctionExpression',\n AwaitExpression: 'AwaitExpression', // CAUTION: It's deferred to ES7.\n BlockStatement: 'BlockStatement',\n BinaryExpression: 'BinaryExpression',\n BreakStatement: 'BreakStatement',\n CallExpression: 'CallExpression',\n CatchClause: 'CatchClause',\n ChainExpression: 'ChainExpression',\n ClassBody: 'ClassBody',\n ClassDeclaration: 'ClassDeclaration',\n ClassExpression: 'ClassExpression',\n ComprehensionBlock: 'ComprehensionBlock', // CAUTION: It's deferred to ES7.\n ComprehensionExpression: 'ComprehensionExpression', // CAUTION: It's deferred to ES7.\n ConditionalExpression: 'ConditionalExpression',\n ContinueStatement: 'ContinueStatement',\n DebuggerStatement: 'DebuggerStatement',\n DirectiveStatement: 'DirectiveStatement',\n DoWhileStatement: 'DoWhileStatement',\n EmptyStatement: 'EmptyStatement',\n ExportAllDeclaration: 'ExportAllDeclaration',\n ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n ExportNamedDeclaration: 'ExportNamedDeclaration',\n ExportSpecifier: 'ExportSpecifier',\n ExpressionStatement: 'ExpressionStatement',\n ForStatement: 'ForStatement',\n ForInStatement: 'ForInStatement',\n ForOfStatement: 'ForOfStatement',\n FunctionDeclaration: 'FunctionDeclaration',\n FunctionExpression: 'FunctionExpression',\n GeneratorExpression: 'GeneratorExpression', // CAUTION: It's deferred to ES7.\n Identifier: 'Identifier',\n IfStatement: 'IfStatement',\n ImportExpression: 'ImportExpression',\n ImportDeclaration: 'ImportDeclaration',\n ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n ImportSpecifier: 'ImportSpecifier',\n Literal: 'Literal',\n LabeledStatement: 'LabeledStatement',\n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'MemberExpression',\n MetaProperty: 'MetaProperty',\n MethodDefinition: 'MethodDefinition',\n ModuleSpecifier: 'ModuleSpecifier',\n NewExpression: 'NewExpression',\n ObjectExpression: 'ObjectExpression',\n ObjectPattern: 'ObjectPattern',\n PrivateIdentifier: 'PrivateIdentifier',\n Program: 'Program',\n Property: 'Property',\n PropertyDefinition: 'PropertyDefinition',\n RestElement: 'RestElement',\n ReturnStatement: 'ReturnStatement',\n SequenceExpression: 'SequenceExpression',\n SpreadElement: 'SpreadElement',\n Super: 'Super',\n SwitchStatement: 'SwitchStatement',\n SwitchCase: 'SwitchCase',\n TaggedTemplateExpression: 'TaggedTemplateExpression',\n TemplateElement: 'TemplateElement',\n TemplateLiteral: 'TemplateLiteral',\n ThisExpression: 'ThisExpression',\n ThrowStatement: 'ThrowStatement',\n TryStatement: 'TryStatement',\n UnaryExpression: 'UnaryExpression',\n UpdateExpression: 'UpdateExpression',\n VariableDeclaration: 'VariableDeclaration',\n VariableDeclarator: 'VariableDeclarator',\n WhileStatement: 'WhileStatement',\n WithStatement: 'WithStatement',\n YieldExpression: 'YieldExpression'\n };\n\n VisitorKeys = {\n AssignmentExpression: ['left', 'right'],\n AssignmentPattern: ['left', 'right'],\n ArrayExpression: ['elements'],\n ArrayPattern: ['elements'],\n ArrowFunctionExpression: ['params', 'body'],\n AwaitExpression: ['argument'], // CAUTION: It's deferred to ES7.\n BlockStatement: ['body'],\n BinaryExpression: ['left', 'right'],\n BreakStatement: ['label'],\n CallExpression: ['callee', 'arguments'],\n CatchClause: ['param', 'body'],\n ChainExpression: ['expression'],\n ClassBody: ['body'],\n ClassDeclaration: ['id', 'superClass', 'body'],\n ClassExpression: ['id', 'superClass', 'body'],\n ComprehensionBlock: ['left', 'right'], // CAUTION: It's deferred to ES7.\n ComprehensionExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7.\n ConditionalExpression: ['test', 'consequent', 'alternate'],\n ContinueStatement: ['label'],\n DebuggerStatement: [],\n DirectiveStatement: [],\n DoWhileStatement: ['body', 'test'],\n EmptyStatement: [],\n ExportAllDeclaration: ['source'],\n ExportDefaultDeclaration: ['declaration'],\n ExportNamedDeclaration: ['declaration', 'specifiers', 'source'],\n ExportSpecifier: ['exported', 'local'],\n ExpressionStatement: ['expression'],\n ForStatement: ['init', 'test', 'update', 'body'],\n ForInStatement: ['left', 'right', 'body'],\n ForOfStatement: ['left', 'right', 'body'],\n FunctionDeclaration: ['id', 'params', 'body'],\n FunctionExpression: ['id', 'params', 'body'],\n GeneratorExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7.\n Identifier: [],\n IfStatement: ['test', 'consequent', 'alternate'],\n ImportExpression: ['source'],\n ImportDeclaration: ['specifiers', 'source'],\n ImportDefaultSpecifier: ['local'],\n ImportNamespaceSpecifier: ['local'],\n ImportSpecifier: ['imported', 'local'],\n Literal: [],\n LabeledStatement: ['label', 'body'],\n LogicalExpression: ['left', 'right'],\n MemberExpression: ['object', 'property'],\n MetaProperty: ['meta', 'property'],\n MethodDefinition: ['key', 'value'],\n ModuleSpecifier: [],\n NewExpression: ['callee', 'arguments'],\n ObjectExpression: ['properties'],\n ObjectPattern: ['properties'],\n PrivateIdentifier: [],\n Program: ['body'],\n Property: ['key', 'value'],\n PropertyDefinition: ['key', 'value'],\n RestElement: [ 'argument' ],\n ReturnStatement: ['argument'],\n SequenceExpression: ['expressions'],\n SpreadElement: ['argument'],\n Super: [],\n SwitchStatement: ['discriminant', 'cases'],\n SwitchCase: ['test', 'consequent'],\n TaggedTemplateExpression: ['tag', 'quasi'],\n TemplateElement: [],\n TemplateLiteral: ['quasis', 'expressions'],\n ThisExpression: [],\n ThrowStatement: ['argument'],\n TryStatement: ['block', 'handler', 'finalizer'],\n UnaryExpression: ['argument'],\n UpdateExpression: ['argument'],\n VariableDeclaration: ['declarations'],\n VariableDeclarator: ['id', 'init'],\n WhileStatement: ['test', 'body'],\n WithStatement: ['object', 'body'],\n YieldExpression: ['argument']\n };\n\n // unique id\n BREAK = {};\n SKIP = {};\n REMOVE = {};\n\n VisitorOption = {\n Break: BREAK,\n Skip: SKIP,\n Remove: REMOVE\n };\n\n function Reference(parent, key) {\n this.parent = parent;\n this.key = key;\n }\n\n Reference.prototype.replace = function replace(node) {\n this.parent[this.key] = node;\n };\n\n Reference.prototype.remove = function remove() {\n if (Array.isArray(this.parent)) {\n this.parent.splice(this.key, 1);\n return true;\n } else {\n this.replace(null);\n return false;\n }\n };\n\n function Element(node, path, wrap, ref) {\n this.node = node;\n this.path = path;\n this.wrap = wrap;\n this.ref = ref;\n }\n\n function Controller() { }\n\n // API:\n // return property path array from root to current node\n Controller.prototype.path = function path() {\n var i, iz, j, jz, result, element;\n\n function addToPath(result, path) {\n if (Array.isArray(path)) {\n for (j = 0, jz = path.length; j < jz; ++j) {\n result.push(path[j]);\n }\n } else {\n result.push(path);\n }\n }\n\n // root node\n if (!this.__current.path) {\n return null;\n }\n\n // first node is sentinel, second node is root element\n result = [];\n for (i = 2, iz = this.__leavelist.length; i < iz; ++i) {\n element = this.__leavelist[i];\n addToPath(result, element.path);\n }\n addToPath(result, this.__current.path);\n return result;\n };\n\n // API:\n // return type of current node\n Controller.prototype.type = function () {\n var node = this.current();\n return node.type || this.__current.wrap;\n };\n\n // API:\n // return array of parent elements\n Controller.prototype.parents = function parents() {\n var i, iz, result;\n\n // first node is sentinel\n result = [];\n for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {\n result.push(this.__leavelist[i].node);\n }\n\n return result;\n };\n\n // API:\n // return current node\n Controller.prototype.current = function current() {\n return this.__current.node;\n };\n\n Controller.prototype.__execute = function __execute(callback, element) {\n var previous, result;\n\n result = undefined;\n\n previous = this.__current;\n this.__current = element;\n this.__state = null;\n if (callback) {\n result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node);\n }\n this.__current = previous;\n\n return result;\n };\n\n // API:\n // notify control skip / break\n Controller.prototype.notify = function notify(flag) {\n this.__state = flag;\n };\n\n // API:\n // skip child nodes of current node\n Controller.prototype.skip = function () {\n this.notify(SKIP);\n };\n\n // API:\n // break traversals\n Controller.prototype['break'] = function () {\n this.notify(BREAK);\n };\n\n // API:\n // remove node\n Controller.prototype.remove = function () {\n this.notify(REMOVE);\n };\n\n Controller.prototype.__initialize = function(root, visitor) {\n this.visitor = visitor;\n this.root = root;\n this.__worklist = [];\n this.__leavelist = [];\n this.__current = null;\n this.__state = null;\n this.__fallback = null;\n if (visitor.fallback === 'iteration') {\n this.__fallback = Object.keys;\n } else if (typeof visitor.fallback === 'function') {\n this.__fallback = visitor.fallback;\n }\n\n this.__keys = VisitorKeys;\n if (visitor.keys) {\n this.__keys = Object.assign(Object.create(this.__keys), visitor.keys);\n }\n };\n\n function isNode(node) {\n if (node == null) {\n return false;\n }\n return typeof node === 'object' && typeof node.type === 'string';\n }\n\n function isProperty(nodeType, key) {\n return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === key;\n }\n \n function candidateExistsInLeaveList(leavelist, candidate) {\n for (var i = leavelist.length - 1; i >= 0; --i) {\n if (leavelist[i].node === candidate) {\n return true;\n }\n }\n return false;\n }\n\n Controller.prototype.traverse = function traverse(root, visitor) {\n var worklist,\n leavelist,\n element,\n node,\n nodeType,\n ret,\n key,\n current,\n current2,\n candidates,\n candidate,\n sentinel;\n\n this.__initialize(root, visitor);\n\n sentinel = {};\n\n // reference\n worklist = this.__worklist;\n leavelist = this.__leavelist;\n\n // initialize\n worklist.push(new Element(root, null, null, null));\n leavelist.push(new Element(null, null, null, null));\n\n while (worklist.length) {\n element = worklist.pop();\n\n if (element === sentinel) {\n element = leavelist.pop();\n\n ret = this.__execute(visitor.leave, element);\n\n if (this.__state === BREAK || ret === BREAK) {\n return;\n }\n continue;\n }\n\n if (element.node) {\n\n ret = this.__execute(visitor.enter, element);\n\n if (this.__state === BREAK || ret === BREAK) {\n return;\n }\n\n worklist.push(sentinel);\n leavelist.push(element);\n\n if (this.__state === SKIP || ret === SKIP) {\n continue;\n }\n\n node = element.node;\n nodeType = node.type || element.wrap;\n candidates = this.__keys[nodeType];\n if (!candidates) {\n if (this.__fallback) {\n candidates = this.__fallback(node);\n } else {\n throw new Error('Unknown node type ' + nodeType + '.');\n }\n }\n\n current = candidates.length;\n while ((current -= 1) >= 0) {\n key = candidates[current];\n candidate = node[key];\n if (!candidate) {\n continue;\n }\n\n if (Array.isArray(candidate)) {\n current2 = candidate.length;\n while ((current2 -= 1) >= 0) {\n if (!candidate[current2]) {\n continue;\n }\n\n if (candidateExistsInLeaveList(leavelist, candidate[current2])) {\n continue;\n }\n\n if (isProperty(nodeType, candidates[current])) {\n element = new Element(candidate[current2], [key, current2], 'Property', null);\n } else if (isNode(candidate[current2])) {\n element = new Element(candidate[current2], [key, current2], null, null);\n } else {\n continue;\n }\n worklist.push(element);\n }\n } else if (isNode(candidate)) {\n if (candidateExistsInLeaveList(leavelist, candidate)) {\n continue;\n }\n\n worklist.push(new Element(candidate, key, null, null));\n }\n }\n }\n }\n };\n\n Controller.prototype.replace = function replace(root, visitor) {\n var worklist,\n leavelist,\n node,\n nodeType,\n target,\n element,\n current,\n current2,\n candidates,\n candidate,\n sentinel,\n outer,\n key;\n\n function removeElem(element) {\n var i,\n key,\n nextElem,\n parent;\n\n if (element.ref.remove()) {\n // When the reference is an element of an array.\n key = element.ref.key;\n parent = element.ref.parent;\n\n // If removed from array, then decrease following items' keys.\n i = worklist.length;\n while (i--) {\n nextElem = worklist[i];\n if (nextElem.ref && nextElem.ref.parent === parent) {\n if (nextElem.ref.key < key) {\n break;\n }\n --nextElem.ref.key;\n }\n }\n }\n }\n\n this.__initialize(root, visitor);\n\n sentinel = {};\n\n // reference\n worklist = this.__worklist;\n leavelist = this.__leavelist;\n\n // initialize\n outer = {\n root: root\n };\n element = new Element(root, null, null, new Reference(outer, 'root'));\n worklist.push(element);\n leavelist.push(element);\n\n while (worklist.length) {\n element = worklist.pop();\n\n if (element === sentinel) {\n element = leavelist.pop();\n\n target = this.__execute(visitor.leave, element);\n\n // node may be replaced with null,\n // so distinguish between undefined and null in this place\n if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {\n // replace\n element.ref.replace(target);\n }\n\n if (this.__state === REMOVE || target === REMOVE) {\n removeElem(element);\n }\n\n if (this.__state === BREAK || target === BREAK) {\n return outer.root;\n }\n continue;\n }\n\n target = this.__execute(visitor.enter, element);\n\n // node may be replaced with null,\n // so distinguish between undefined and null in this place\n if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {\n // replace\n element.ref.replace(target);\n element.node = target;\n }\n\n if (this.__state === REMOVE || target === REMOVE) {\n removeElem(element);\n element.node = null;\n }\n\n if (this.__state === BREAK || target === BREAK) {\n return outer.root;\n }\n\n // node may be null\n node = element.node;\n if (!node) {\n continue;\n }\n\n worklist.push(sentinel);\n leavelist.push(element);\n\n if (this.__state === SKIP || target === SKIP) {\n continue;\n }\n\n nodeType = node.type || element.wrap;\n candidates = this.__keys[nodeType];\n if (!candidates) {\n if (this.__fallback) {\n candidates = this.__fallback(node);\n } else {\n throw new Error('Unknown node type ' + nodeType + '.');\n }\n }\n\n current = candidates.length;\n while ((current -= 1) >= 0) {\n key = candidates[current];\n candidate = node[key];\n if (!candidate) {\n continue;\n }\n\n if (Array.isArray(candidate)) {\n current2 = candidate.length;\n while ((current2 -= 1) >= 0) {\n if (!candidate[current2]) {\n continue;\n }\n if (isProperty(nodeType, candidates[current])) {\n element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2));\n } else if (isNode(candidate[current2])) {\n element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2));\n } else {\n continue;\n }\n worklist.push(element);\n }\n } else if (isNode(candidate)) {\n worklist.push(new Element(candidate, key, null, new Reference(node, key)));\n }\n }\n }\n\n return outer.root;\n };\n\n function traverse(root, visitor) {\n var controller = new Controller();\n return controller.traverse(root, visitor);\n }\n\n function replace(root, visitor) {\n var controller = new Controller();\n return controller.replace(root, visitor);\n }\n\n function extendCommentRange(comment, tokens) {\n var target;\n\n target = upperBound(tokens, function search(token) {\n return token.range[0] > comment.range[0];\n });\n\n comment.extendedRange = [comment.range[0], comment.range[1]];\n\n if (target !== tokens.length) {\n comment.extendedRange[1] = tokens[target].range[0];\n }\n\n target -= 1;\n if (target >= 0) {\n comment.extendedRange[0] = tokens[target].range[1];\n }\n\n return comment;\n }\n\n function attachComments(tree, providedComments, tokens) {\n // At first, we should calculate extended comment ranges.\n var comments = [], comment, len, i, cursor;\n\n if (!tree.range) {\n throw new Error('attachComments needs range information');\n }\n\n // tokens array is empty, we attach comments to tree as 'leadingComments'\n if (!tokens.length) {\n if (providedComments.length) {\n for (i = 0, len = providedComments.length; i < len; i += 1) {\n comment = deepCopy(providedComments[i]);\n comment.extendedRange = [0, tree.range[0]];\n comments.push(comment);\n }\n tree.leadingComments = comments;\n }\n return tree;\n }\n\n for (i = 0, len = providedComments.length; i < len; i += 1) {\n comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens));\n }\n\n // This is based on John Freeman's implementation.\n cursor = 0;\n traverse(tree, {\n enter: function (node) {\n var comment;\n\n while (cursor < comments.length) {\n comment = comments[cursor];\n if (comment.extendedRange[1] > node.range[0]) {\n break;\n }\n\n if (comment.extendedRange[1] === node.range[0]) {\n if (!node.leadingComments) {\n node.leadingComments = [];\n }\n node.leadingComments.push(comment);\n comments.splice(cursor, 1);\n } else {\n cursor += 1;\n }\n }\n\n // already out of owned node\n if (cursor === comments.length) {\n return VisitorOption.Break;\n }\n\n if (comments[cursor].extendedRange[0] > node.range[1]) {\n return VisitorOption.Skip;\n }\n }\n });\n\n cursor = 0;\n traverse(tree, {\n leave: function (node) {\n var comment;\n\n while (cursor < comments.length) {\n comment = comments[cursor];\n if (node.range[1] < comment.extendedRange[0]) {\n break;\n }\n\n if (node.range[1] === comment.extendedRange[0]) {\n if (!node.trailingComments) {\n node.trailingComments = [];\n }\n node.trailingComments.push(comment);\n comments.splice(cursor, 1);\n } else {\n cursor += 1;\n }\n }\n\n // already out of owned node\n if (cursor === comments.length) {\n return VisitorOption.Break;\n }\n\n if (comments[cursor].extendedRange[0] > node.range[1]) {\n return VisitorOption.Skip;\n }\n }\n });\n\n return tree;\n }\n\n exports.Syntax = Syntax;\n exports.traverse = traverse;\n exports.replace = replace;\n exports.attachComments = attachComments;\n exports.VisitorKeys = VisitorKeys;\n exports.VisitorOption = VisitorOption;\n exports.Controller = Controller;\n exports.cloneEnvironment = function () { return clone({}); };\n\n return exports;\n}(exports));\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n function isExpression(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'ArrayExpression':\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'CallExpression':\n case 'ConditionalExpression':\n case 'FunctionExpression':\n case 'Identifier':\n case 'Literal':\n case 'LogicalExpression':\n case 'MemberExpression':\n case 'NewExpression':\n case 'ObjectExpression':\n case 'SequenceExpression':\n case 'ThisExpression':\n case 'UnaryExpression':\n case 'UpdateExpression':\n return true;\n }\n return false;\n }\n\n function isIterationStatement(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'DoWhileStatement':\n case 'ForInStatement':\n case 'ForStatement':\n case 'WhileStatement':\n return true;\n }\n return false;\n }\n\n function isStatement(node) {\n if (node == null) { return false; }\n switch (node.type) {\n case 'BlockStatement':\n case 'BreakStatement':\n case 'ContinueStatement':\n case 'DebuggerStatement':\n case 'DoWhileStatement':\n case 'EmptyStatement':\n case 'ExpressionStatement':\n case 'ForInStatement':\n case 'ForStatement':\n case 'IfStatement':\n case 'LabeledStatement':\n case 'ReturnStatement':\n case 'SwitchStatement':\n case 'ThrowStatement':\n case 'TryStatement':\n case 'VariableDeclaration':\n case 'WhileStatement':\n case 'WithStatement':\n return true;\n }\n return false;\n }\n\n function isSourceElement(node) {\n return isStatement(node) || node != null && node.type === 'FunctionDeclaration';\n }\n\n function trailingStatement(node) {\n switch (node.type) {\n case 'IfStatement':\n if (node.alternate != null) {\n return node.alternate;\n }\n return node.consequent;\n\n case 'LabeledStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'WhileStatement':\n case 'WithStatement':\n return node.body;\n }\n return null;\n }\n\n function isProblematicIfStatement(node) {\n var current;\n\n if (node.type !== 'IfStatement') {\n return false;\n }\n if (node.alternate == null) {\n return false;\n }\n current = node.consequent;\n do {\n if (current.type === 'IfStatement') {\n if (current.alternate == null) {\n return true;\n }\n }\n current = trailingStatement(current);\n } while (current);\n\n return false;\n }\n\n module.exports = {\n isExpression: isExpression,\n isStatement: isStatement,\n isIterationStatement: isIterationStatement,\n isSourceElement: isSourceElement,\n isProblematicIfStatement: isProblematicIfStatement,\n\n trailingStatement: trailingStatement\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>\n Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch;\n\n // See `tools/generate-identifier-regex.js`.\n ES5Regex = {\n // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart:\n 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\\u08B6-\\u08BD\\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\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\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-\\u1884\\u1887-\\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\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\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]/,\n // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart:\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\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\\u0C80-\\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\\u0D54-\\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\\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-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\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]/\n };\n\n ES6Regex = {\n // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart:\n 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\\u08B6-\\u08BD\\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\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\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\\u1C80-\\u1C88\\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-\\uA7AE\\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\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\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[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\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\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\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\\uDD00-\\uDD43]|\\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 // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart:\n 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\\u08B6-\\u08BD\\u08D4-\\u08E1\\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\\u0C80-\\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\\u0D54-\\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\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFB-\\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-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\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\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\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\\uDE3E\\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[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\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]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\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\\uDFE0]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\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]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\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 };\n\n function isDecimalDigit(ch) {\n return 0x30 <= ch && ch <= 0x39; // 0..9\n }\n\n function isHexDigit(ch) {\n return 0x30 <= ch && ch <= 0x39 || // 0..9\n 0x61 <= ch && ch <= 0x66 || // a..f\n 0x41 <= ch && ch <= 0x46; // A..F\n }\n\n function isOctalDigit(ch) {\n return ch >= 0x30 && ch <= 0x37; // 0..7\n }\n\n // 7.2 White Space\n\n NON_ASCII_WHITESPACES = [\n 0x1680,\n 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A,\n 0x202F, 0x205F,\n 0x3000,\n 0xFEFF\n ];\n\n function isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 ||\n ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;\n }\n\n // 7.3 Line Terminators\n\n function isLineTerminator(ch) {\n return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n }\n\n // 7.6 Identifier Names and Identifiers\n\n function fromCodePoint(cp) {\n if (cp <= 0xFFFF) { return String.fromCharCode(cp); }\n var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);\n var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00);\n return cu1 + cu2;\n }\n\n IDENTIFIER_START = new Array(0x80);\n for(ch = 0; ch < 0x80; ++ch) {\n IDENTIFIER_START[ch] =\n ch >= 0x61 && ch <= 0x7A || // a..z\n ch >= 0x41 && ch <= 0x5A || // A..Z\n ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)\n }\n\n IDENTIFIER_PART = new Array(0x80);\n for(ch = 0; ch < 0x80; ++ch) {\n IDENTIFIER_PART[ch] =\n ch >= 0x61 && ch <= 0x7A || // a..z\n ch >= 0x41 && ch <= 0x5A || // A..Z\n ch >= 0x30 && ch <= 0x39 || // 0..9\n ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)\n }\n\n function isIdentifierStartES5(ch) {\n return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n }\n\n function isIdentifierPartES5(ch) {\n return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n }\n\n function isIdentifierStartES6(ch) {\n return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));\n }\n\n function isIdentifierPartES6(ch) {\n return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));\n }\n\n module.exports = {\n isDecimalDigit: isDecimalDigit,\n isHexDigit: isHexDigit,\n isOctalDigit: isOctalDigit,\n isWhiteSpace: isWhiteSpace,\n isLineTerminator: isLineTerminator,\n isIdentifierStartES5: isIdentifierStartES5,\n isIdentifierPartES5: isIdentifierPartES5,\n isIdentifierStartES6: isIdentifierStartES6,\n isIdentifierPartES6: isIdentifierPartES6\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function () {\n 'use strict';\n\n var code = require('./code');\n\n function isStrictModeReservedWordES6(id) {\n switch (id) {\n case 'implements':\n case 'interface':\n case 'package':\n case 'private':\n case 'protected':\n case 'public':\n case 'static':\n case 'let':\n return true;\n default:\n return false;\n }\n }\n\n function isKeywordES5(id, strict) {\n // yield should not be treated as keyword under non-strict mode.\n if (!strict && id === 'yield') {\n return false;\n }\n return isKeywordES6(id, strict);\n }\n\n function isKeywordES6(id, strict) {\n if (strict && isStrictModeReservedWordES6(id)) {\n return true;\n }\n\n switch (id.length) {\n case 2:\n return (id === 'if') || (id === 'in') || (id === 'do');\n case 3:\n return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');\n case 4:\n return (id === 'this') || (id === 'else') || (id === 'case') ||\n (id === 'void') || (id === 'with') || (id === 'enum');\n case 5:\n return (id === 'while') || (id === 'break') || (id === 'catch') ||\n (id === 'throw') || (id === 'const') || (id === 'yield') ||\n (id === 'class') || (id === 'super');\n case 6:\n return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n (id === 'switch') || (id === 'export') || (id === 'import');\n case 7:\n return (id === 'default') || (id === 'finally') || (id === 'extends');\n case 8:\n return (id === 'function') || (id === 'continue') || (id === 'debugger');\n case 10:\n return (id === 'instanceof');\n default:\n return false;\n }\n }\n\n function isReservedWordES5(id, strict) {\n return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);\n }\n\n function isReservedWordES6(id, strict) {\n return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);\n }\n\n function isRestrictedWord(id) {\n return id === 'eval' || id === 'arguments';\n }\n\n function isIdentifierNameES5(id) {\n var i, iz, ch;\n\n if (id.length === 0) { return false; }\n\n ch = id.charCodeAt(0);\n if (!code.isIdentifierStartES5(ch)) {\n return false;\n }\n\n for (i = 1, iz = id.length; i < iz; ++i) {\n ch = id.charCodeAt(i);\n if (!code.isIdentifierPartES5(ch)) {\n return false;\n }\n }\n return true;\n }\n\n function decodeUtf16(lead, trail) {\n return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n }\n\n function isIdentifierNameES6(id) {\n var i, iz, ch, lowCh, check;\n\n if (id.length === 0) { return false; }\n\n check = code.isIdentifierStartES6;\n for (i = 0, iz = id.length; i < iz; ++i) {\n ch = id.charCodeAt(i);\n if (0xD800 <= ch && ch <= 0xDBFF) {\n ++i;\n if (i >= iz) { return false; }\n lowCh = id.charCodeAt(i);\n if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {\n return false;\n }\n ch = decodeUtf16(ch, lowCh);\n }\n if (!check(ch)) {\n return false;\n }\n check = code.isIdentifierPartES6;\n }\n return true;\n }\n\n function isIdentifierES5(id, strict) {\n return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);\n }\n\n function isIdentifierES6(id, strict) {\n return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);\n }\n\n module.exports = {\n isKeywordES5: isKeywordES5,\n isKeywordES6: isKeywordES6,\n isReservedWordES5: isReservedWordES5,\n isReservedWordES6: isReservedWordES6,\n isRestrictedWord: isRestrictedWord,\n isIdentifierNameES5: isIdentifierNameES5,\n isIdentifierNameES6: isIdentifierNameES6,\n isIdentifierES5: isIdentifierES5,\n isIdentifierES6: isIdentifierES6\n };\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/*\n Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n(function () {\n 'use strict';\n\n exports.ast = require('./ast');\n exports.code = require('./code');\n exports.keyword = require('./keyword');\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","{\n \"name\": \"escodegen\",\n \"description\": \"ECMAScript code generator\",\n \"homepage\": \"http://github.com/estools/escodegen\",\n \"main\": \"escodegen.js\",\n \"bin\": {\n \"esgenerate\": \"./bin/esgenerate.js\",\n \"escodegen\": \"./bin/escodegen.js\"\n },\n \"files\": [\n \"LICENSE.BSD\",\n \"README.md\",\n \"bin\",\n \"escodegen.js\",\n \"package.json\"\n ],\n \"version\": \"2.1.0\",\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"maintainers\": [\n {\n \"name\": \"Yusuke Suzuki\",\n \"email\": \"utatane.tea@gmail.com\",\n \"web\": \"http://github.com/Constellation\"\n }\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"http://github.com/estools/escodegen.git\"\n },\n \"dependencies\": {\n \"estraverse\": \"^5.2.0\",\n \"esutils\": \"^2.0.2\",\n \"esprima\": \"^4.0.1\"\n },\n \"optionalDependencies\": {\n \"source-map\": \"~0.6.1\"\n },\n \"devDependencies\": {\n \"acorn\": \"^8.0.4\",\n \"bluebird\": \"^3.4.7\",\n \"bower-registry-client\": \"^1.0.0\",\n \"chai\": \"^4.2.0\",\n \"chai-exclude\": \"^2.0.2\",\n \"commonjs-everywhere\": \"^0.9.7\",\n \"gulp\": \"^4.0.2\",\n \"gulp-eslint\": \"^6.0.0\",\n \"gulp-mocha\": \"^7.0.2\",\n \"minimist\": \"^1.2.5\",\n \"optionator\": \"^0.9.1\",\n \"semver\": \"^7.3.4\"\n },\n \"license\": \"BSD-2-Clause\",\n \"scripts\": {\n \"test\": \"gulp travis\",\n \"unit-test\": \"gulp test\",\n \"lint\": \"gulp lint\",\n \"release\": \"node tools/release.js\",\n \"build-min\": \"./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js\",\n \"build\": \"./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js\"\n }\n}\n","/*\n Copyright (C) 2012-2014 Yusuke Suzuki <utatane.tea@gmail.com>\n Copyright (C) 2015 Ingvar Stepanyan <me@rreverser.com>\n Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>\n Copyright (C) 2012-2013 Michael Ficarra <escodegen.copyright@michael.ficarra.me>\n Copyright (C) 2012-2013 Mathias Bynens <mathias@qiwi.be>\n Copyright (C) 2013 Irakli Gozalishvili <rfobic@gmail.com>\n Copyright (C) 2012 Robert Gust-Bardon <donate@robert.gust-bardon.org>\n Copyright (C) 2012 John Freeman <jfreeman08@gmail.com>\n Copyright (C) 2011-2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n Copyright (C) 2020 Apple Inc. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n/*global exports:true, require:true, global:true*/\n(function () {\n 'use strict';\n\n var Syntax,\n Precedence,\n BinaryPrecedence,\n SourceNode,\n estraverse,\n esutils,\n base,\n indent,\n json,\n renumber,\n hexadecimal,\n quotes,\n escapeless,\n newline,\n space,\n parentheses,\n semicolons,\n safeConcatenation,\n directive,\n extra,\n parse,\n sourceMap,\n sourceCode,\n preserveBlankLines,\n FORMAT_MINIFY,\n FORMAT_DEFAULTS;\n\n estraverse = require('estraverse');\n esutils = require('esutils');\n\n Syntax = estraverse.Syntax;\n\n // Generation is done by generateExpression.\n function isExpression(node) {\n return CodeGenerator.Expression.hasOwnProperty(node.type);\n }\n\n // Generation is done by generateStatement.\n function isStatement(node) {\n return CodeGenerator.Statement.hasOwnProperty(node.type);\n }\n\n Precedence = {\n Sequence: 0,\n Yield: 1,\n Assignment: 1,\n Conditional: 2,\n ArrowFunction: 2,\n Coalesce: 3,\n LogicalOR: 4,\n LogicalAND: 5,\n BitwiseOR: 6,\n BitwiseXOR: 7,\n BitwiseAND: 8,\n Equality: 9,\n Relational: 10,\n BitwiseSHIFT: 11,\n Additive: 12,\n Multiplicative: 13,\n Exponentiation: 14,\n Await: 15,\n Unary: 15,\n Postfix: 16,\n OptionalChaining: 17,\n Call: 18,\n New: 19,\n TaggedTemplate: 20,\n Member: 21,\n Primary: 22\n };\n\n BinaryPrecedence = {\n '??': Precedence.Coalesce,\n '||': Precedence.LogicalOR,\n '&&': Precedence.LogicalAND,\n '|': Precedence.BitwiseOR,\n '^': Precedence.BitwiseXOR,\n '&': Precedence.BitwiseAND,\n '==': Precedence.Equality,\n '!=': Precedence.Equality,\n '===': Precedence.Equality,\n '!==': Precedence.Equality,\n 'is': Precedence.Equality,\n 'isnt': Precedence.Equality,\n '<': Precedence.Relational,\n '>': Precedence.Relational,\n '<=': Precedence.Relational,\n '>=': Precedence.Relational,\n 'in': Precedence.Relational,\n 'instanceof': Precedence.Relational,\n '<<': Precedence.BitwiseSHIFT,\n '>>': Precedence.BitwiseSHIFT,\n '>>>': Precedence.BitwiseSHIFT,\n '+': Precedence.Additive,\n '-': Precedence.Additive,\n '*': Precedence.Multiplicative,\n '%': Precedence.Multiplicative,\n '/': Precedence.Multiplicative,\n '**': Precedence.Exponentiation\n };\n\n //Flags\n var F_ALLOW_IN = 1,\n F_ALLOW_CALL = 1 << 1,\n F_ALLOW_UNPARATH_NEW = 1 << 2,\n F_FUNC_BODY = 1 << 3,\n F_DIRECTIVE_CTX = 1 << 4,\n F_SEMICOLON_OPT = 1 << 5,\n F_FOUND_COALESCE = 1 << 6;\n\n //Expression flag sets\n //NOTE: Flag order:\n // F_ALLOW_IN\n // F_ALLOW_CALL\n // F_ALLOW_UNPARATH_NEW\n var E_FTT = F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW,\n E_TTF = F_ALLOW_IN | F_ALLOW_CALL,\n E_TTT = F_ALLOW_IN | F_ALLOW_CALL | F_ALLOW_UNPARATH_NEW,\n E_TFF = F_ALLOW_IN,\n E_FFT = F_ALLOW_UNPARATH_NEW,\n E_TFT = F_ALLOW_IN | F_ALLOW_UNPARATH_NEW;\n\n //Statement flag sets\n //NOTE: Flag order:\n // F_ALLOW_IN\n // F_FUNC_BODY\n // F_DIRECTIVE_CTX\n // F_SEMICOLON_OPT\n var S_TFFF = F_ALLOW_IN,\n S_TFFT = F_ALLOW_IN | F_SEMICOLON_OPT,\n S_FFFF = 0x00,\n S_TFTF = F_ALLOW_IN | F_DIRECTIVE_CTX,\n S_TTFF = F_ALLOW_IN | F_FUNC_BODY;\n\n function getDefaultOptions() {\n // default options\n return {\n indent: null,\n base: null,\n parse: null,\n comment: false,\n format: {\n indent: {\n style: ' ',\n base: 0,\n adjustMultilineComment: false\n },\n newline: '\\n',\n space: ' ',\n json: false,\n renumber: false,\n hexadecimal: false,\n quotes: 'single',\n escapeless: false,\n compact: false,\n parentheses: true,\n semicolons: true,\n safeConcatenation: false,\n preserveBlankLines: false\n },\n moz: {\n comprehensionExpressionStartsWithAssignment: false,\n starlessGenerator: false\n },\n sourceMap: null,\n sourceMapRoot: null,\n sourceMapWithCode: false,\n directive: false,\n raw: true,\n verbatim: null,\n sourceCode: null\n };\n }\n\n function stringRepeat(str, num) {\n var result = '';\n\n for (num |= 0; num > 0; num >>>= 1, str += str) {\n if (num & 1) {\n result += str;\n }\n }\n\n return result;\n }\n\n function hasLineTerminator(str) {\n return (/[\\r\\n]/g).test(str);\n }\n\n function endsWithLineTerminator(str) {\n var len = str.length;\n return len && esutils.code.isLineTerminator(str.charCodeAt(len - 1));\n }\n\n function merge(target, override) {\n var key;\n for (key in override) {\n if (override.hasOwnProperty(key)) {\n target[key] = override[key];\n }\n }\n return target;\n }\n\n function updateDeeply(target, override) {\n var key, val;\n\n function isHashObject(target) {\n return typeof target === 'object' && target instanceof Object && !(target instanceof RegExp);\n }\n\n for (key in override) {\n if (override.hasOwnProperty(key)) {\n val = override[key];\n if (isHashObject(val)) {\n if (isHashObject(target[key])) {\n updateDeeply(target[key], val);\n } else {\n target[key] = updateDeeply({}, val);\n }\n } else {\n target[key] = val;\n }\n }\n }\n return target;\n }\n\n function generateNumber(value) {\n var result, point, temp, exponent, pos;\n\n if (value !== value) {\n throw new Error('Numeric literal whose value is NaN');\n }\n if (value < 0 || (value === 0 && 1 / value < 0)) {\n throw new Error('Numeric literal whose value is negative');\n }\n\n if (value === 1 / 0) {\n return json ? 'null' : renumber ? '1e400' : '1e+400';\n }\n\n result = '' + value;\n if (!renumber || result.length < 3) {\n return result;\n }\n\n point = result.indexOf('.');\n if (!json && result.charCodeAt(0) === 0x30 /* 0 */ && point === 1) {\n point = 0;\n result = result.slice(1);\n }\n temp = result;\n result = result.replace('e+', 'e');\n exponent = 0;\n if ((pos = temp.indexOf('e')) > 0) {\n exponent = +temp.slice(pos + 1);\n temp = temp.slice(0, pos);\n }\n if (point >= 0) {\n exponent -= temp.length - point - 1;\n temp = +(temp.slice(0, point) + temp.slice(point + 1)) + '';\n }\n pos = 0;\n while (temp.charCodeAt(temp.length + pos - 1) === 0x30 /* 0 */) {\n --pos;\n }\n if (pos !== 0) {\n exponent -= pos;\n temp = temp.slice(0, pos);\n }\n if (exponent !== 0) {\n temp += 'e' + exponent;\n }\n if ((temp.length < result.length ||\n (hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = '0x' + value.toString(16)).length < result.length)) &&\n +temp === value) {\n result = temp;\n }\n\n return result;\n }\n\n // Generate valid RegExp expression.\n // This function is based on https://github.com/Constellation/iv Engine\n\n function escapeRegExpCharacter(ch, previousIsBackslash) {\n // not handling '\\' and handling \\u2028 or \\u2029 to unicode escape sequence\n if ((ch & ~1) === 0x2028) {\n return (previousIsBackslash ? 'u' : '\\\\u') + ((ch === 0x2028) ? '2028' : '2029');\n } else if (ch === 10 || ch === 13) { // \\n, \\r\n return (previousIsBackslash ? '' : '\\\\') + ((ch === 10) ? 'n' : 'r');\n }\n return String.fromCharCode(ch);\n }\n\n function generateRegExp(reg) {\n var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash;\n\n result = reg.toString();\n\n if (reg.source) {\n // extract flag from toString result\n match = result.match(/\\/([^/]*)$/);\n if (!match) {\n return result;\n }\n\n flags = match[1];\n result = '';\n\n characterInBrack = false;\n previousIsBackslash = false;\n for (i = 0, iz = reg.source.length; i < iz; ++i) {\n ch = reg.source.charCodeAt(i);\n\n if (!previousIsBackslash) {\n if (characterInBrack) {\n if (ch === 93) { // ]\n characterInBrack = false;\n }\n } else {\n if (ch === 47) { // /\n result += '\\\\';\n } else if (ch === 91) { // [\n characterInBrack = true;\n }\n }\n result += escapeRegExpCharacter(ch, previousIsBackslash);\n previousIsBackslash = ch === 92; // \\\n } else {\n // if new RegExp(\"\\\\\\n') is provided, create /\\n/\n result += escapeRegExpCharacter(ch, previousIsBackslash);\n // prevent like /\\\\[/]/\n previousIsBackslash = false;\n }\n }\n\n return '/' + result + '/' + flags;\n }\n\n return result;\n }\n\n function escapeAllowedCharacter(code, next) {\n var hex;\n\n if (code === 0x08 /* \\b */) {\n return '\\\\b';\n }\n\n if (code === 0x0C /* \\f */) {\n return '\\\\f';\n }\n\n if (code === 0x09 /* \\t */) {\n return '\\\\t';\n }\n\n hex = code.toString(16).toUpperCase();\n if (json || code > 0xFF) {\n return '\\\\u' + '0000'.slice(hex.length) + hex;\n } else if (code === 0x0000 && !esutils.code.isDecimalDigit(next)) {\n return '\\\\0';\n } else if (code === 0x000B /* \\v */) { // '\\v'\n return '\\\\x0B';\n } else {\n return '\\\\x' + '00'.slice(hex.length) + hex;\n }\n }\n\n function escapeDisallowedCharacter(code) {\n if (code === 0x5C /* \\ */) {\n return '\\\\\\\\';\n }\n\n if (code === 0x0A /* \\n */) {\n return '\\\\n';\n }\n\n if (code === 0x0D /* \\r */) {\n return '\\\\r';\n }\n\n if (code === 0x2028) {\n return '\\\\u2028';\n }\n\n if (code === 0x2029) {\n return '\\\\u2029';\n }\n\n throw new Error('Incorrectly classified character');\n }\n\n function escapeDirective(str) {\n var i, iz, code, quote;\n\n quote = quotes === 'double' ? '\"' : '\\'';\n for (i = 0, iz = str.length; i < iz; ++i) {\n code = str.charCodeAt(i);\n if (code === 0x27 /* ' */) {\n quote = '\"';\n break;\n } else if (code === 0x22 /* \" */) {\n quote = '\\'';\n break;\n } else if (code === 0x5C /* \\ */) {\n ++i;\n }\n }\n\n return quote + str + quote;\n }\n\n function escapeString(str) {\n var result = '', i, len, code, singleQuotes = 0, doubleQuotes = 0, single, quote;\n\n for (i = 0, len = str.length; i < len; ++i) {\n code = str.charCodeAt(i);\n if (code === 0x27 /* ' */) {\n ++singleQuotes;\n } else if (code === 0x22 /* \" */) {\n ++doubleQuotes;\n } else if (code === 0x2F /* / */ && json) {\n result += '\\\\';\n } else if (esutils.code.isLineTerminator(code) || code === 0x5C /* \\ */) {\n result += escapeDisallowedCharacter(code);\n continue;\n } else if (!esutils.code.isIdentifierPartES5(code) && (json && code < 0x20 /* SP */ || !json && !escapeless && (code < 0x20 /* SP */ || code > 0x7E /* ~ */))) {\n result += escapeAllowedCharacter(code, str.charCodeAt(i + 1));\n continue;\n }\n result += String.fromCharCode(code);\n }\n\n single = !(quotes === 'double' || (quotes === 'auto' && doubleQuotes < singleQuotes));\n quote = single ? '\\'' : '\"';\n\n if (!(single ? singleQuotes : doubleQuotes)) {\n return quote + result + quote;\n }\n\n str = result;\n result = quote;\n\n for (i = 0, len = str.length; i < len; ++i) {\n code = str.charCodeAt(i);\n if ((code === 0x27 /* ' */ && single) || (code === 0x22 /* \" */ && !single)) {\n result += '\\\\';\n }\n result += String.fromCharCode(code);\n }\n\n return result + quote;\n }\n\n /**\n * flatten an array to a string, where the array can contain\n * either strings or nested arrays\n */\n function flattenToString(arr) {\n var i, iz, elem, result = '';\n for (i = 0, iz = arr.length; i < iz; ++i) {\n elem = arr[i];\n result += Array.isArray(elem) ? flattenToString(elem) : elem;\n }\n return result;\n }\n\n /**\n * convert generated to a SourceNode when source maps are enabled.\n */\n function toSourceNodeWhenNeeded(generated, node) {\n if (!sourceMap) {\n // with no source maps, generated is either an\n // array or a string. if an array, flatten it.\n // if a string, just return it\n if (Array.isArray(generated)) {\n return flattenToString(generated);\n } else {\n return generated;\n }\n }\n if (node == null) {\n if (generated instanceof SourceNode) {\n return generated;\n } else {\n node = {};\n }\n }\n if (node.loc == null) {\n return new SourceNode(null, null, sourceMap, generated, node.name || null);\n }\n return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null);\n }\n\n function noEmptySpace() {\n return (space) ? space : ' ';\n }\n\n function join(left, right) {\n var leftSource,\n rightSource,\n leftCharCode,\n rightCharCode;\n\n leftSource = toSourceNodeWhenNeeded(left).toString();\n if (leftSource.length === 0) {\n return [right];\n }\n\n rightSource = toSourceNodeWhenNeeded(right).toString();\n if (rightSource.length === 0) {\n return [left];\n }\n\n leftCharCode = leftSource.charCodeAt(leftSource.length - 1);\n rightCharCode = rightSource.charCodeAt(0);\n\n if ((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode ||\n esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode) ||\n leftCharCode === 0x2F /* / */ && rightCharCode === 0x69 /* i */) { // infix word operators all start with `i`\n return [left, noEmptySpace(), right];\n } else if (esutils.code.isWhiteSpace(leftCharCode) || esutils.code.isLineTerminator(leftCharCode) ||\n esutils.code.isWhiteSpace(rightCharCode) || esutils.code.isLineTerminator(rightCharCode)) {\n return [left, right];\n }\n return [left, space, right];\n }\n\n function addIndent(stmt) {\n return [base, stmt];\n }\n\n function withIndent(fn) {\n var previousBase;\n previousBase = base;\n base += indent;\n fn(base);\n base = previousBase;\n }\n\n function calculateSpaces(str) {\n var i;\n for (i = str.length - 1; i >= 0; --i) {\n if (esutils.code.isLineTerminator(str.charCodeAt(i))) {\n break;\n }\n }\n return (str.length - 1) - i;\n }\n\n function adjustMultilineComment(value, specialBase) {\n var array, i, len, line, j, spaces, previousBase, sn;\n\n array = value.split(/\\r\\n|[\\r\\n]/);\n spaces = Number.MAX_VALUE;\n\n // first line doesn't have indentation\n for (i = 1, len = array.length; i < len; ++i) {\n line = array[i];\n j = 0;\n while (j < line.length && esutils.code.isWhiteSpace(line.charCodeAt(j))) {\n ++j;\n }\n if (spaces > j) {\n spaces = j;\n }\n }\n\n if (typeof specialBase !== 'undefined') {\n // pattern like\n // {\n // var t = 20; /*\n // * this is comment\n // */\n // }\n previousBase = base;\n if (array[1][spaces] === '*') {\n specialBase += ' ';\n }\n base = specialBase;\n } else {\n if (spaces & 1) {\n // /*\n // *\n // */\n // If spaces are odd number, above pattern is considered.\n // We waste 1 space.\n --spaces;\n }\n previousBase = base;\n }\n\n for (i = 1, len = array.length; i < len; ++i) {\n sn = toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces)));\n array[i] = sourceMap ? sn.join('') : sn;\n }\n\n base = previousBase;\n\n return array.join('\\n');\n }\n\n function generateComment(comment, specialBase) {\n if (comment.type === 'Line') {\n if (endsWithLineTerminator(comment.value)) {\n return '//' + comment.value;\n } else {\n // Always use LineTerminator\n var result = '//' + comment.value;\n if (!preserveBlankLines) {\n result += '\\n';\n }\n return result;\n }\n }\n if (extra.format.indent.adjustMultilineComment && /[\\n\\r]/.test(comment.value)) {\n return adjustMultilineComment('/*' + comment.value + '*/', specialBase);\n }\n return '/*' + comment.value + '*/';\n }\n\n function addComments(stmt, result) {\n var i, len, comment, save, tailingToStatement, specialBase, fragment,\n extRange, range, prevRange, prefix, infix, suffix, count;\n\n if (stmt.leadingComments && stmt.leadingComments.length > 0) {\n save = result;\n\n if (preserveBlankLines) {\n comment = stmt.leadingComments[0];\n result = [];\n\n extRange = comment.extendedRange;\n range = comment.range;\n\n prefix = sourceCode.substring(extRange[0], range[0]);\n count = (prefix.match(/\\n/g) || []).length;\n if (count > 0) {\n result.push(stringRepeat('\\n', count));\n result.push(addIndent(generateComment(comment)));\n } else {\n result.push(prefix);\n result.push(generateComment(comment));\n }\n\n prevRange = range;\n\n for (i = 1, len = stmt.leadingComments.length; i < len; i++) {\n comment = stmt.leadingComments[i];\n range = comment.range;\n\n infix = sourceCode.substring(prevRange[1], range[0]);\n count = (infix.match(/\\n/g) || []).length;\n result.push(stringRepeat('\\n', count));\n result.push(addIndent(generateComment(comment)));\n\n prevRange = range;\n }\n\n suffix = sourceCode.substring(range[1], extRange[1]);\n count = (suffix.match(/\\n/g) || []).length;\n result.push(stringRepeat('\\n', count));\n } else {\n comment = stmt.leadingComments[0];\n result = [];\n if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) {\n result.push('\\n');\n }\n result.push(generateComment(comment));\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push('\\n');\n }\n\n for (i = 1, len = stmt.leadingComments.length; i < len; ++i) {\n comment = stmt.leadingComments[i];\n fragment = [generateComment(comment)];\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {\n fragment.push('\\n');\n }\n result.push(addIndent(fragment));\n }\n }\n\n result.push(addIndent(save));\n }\n\n if (stmt.trailingComments) {\n\n if (preserveBlankLines) {\n comment = stmt.trailingComments[0];\n extRange = comment.extendedRange;\n range = comment.range;\n\n prefix = sourceCode.substring(extRange[0], range[0]);\n count = (prefix.match(/\\n/g) || []).length;\n\n if (count > 0) {\n result.push(stringRepeat('\\n', count));\n result.push(addIndent(generateComment(comment)));\n } else {\n result.push(prefix);\n result.push(generateComment(comment));\n }\n } else {\n tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString());\n specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString()));\n for (i = 0, len = stmt.trailingComments.length; i < len; ++i) {\n comment = stmt.trailingComments[i];\n if (tailingToStatement) {\n // We assume target like following script\n //\n // var t = 20; /**\n // * This is comment of t\n // */\n if (i === 0) {\n // first case\n result = [result, indent];\n } else {\n result = [result, specialBase];\n }\n result.push(generateComment(comment, specialBase));\n } else {\n result = [result, addIndent(generateComment(comment))];\n }\n if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result = [result, '\\n'];\n }\n }\n }\n }\n\n return result;\n }\n\n function generateBlankLines(start, end, result) {\n var j, newlineCount = 0;\n\n for (j = start; j < end; j++) {\n if (sourceCode[j] === '\\n') {\n newlineCount++;\n }\n }\n\n for (j = 1; j < newlineCount; j++) {\n result.push(newline);\n }\n }\n\n function parenthesize(text, current, should) {\n if (current < should) {\n return ['(', text, ')'];\n }\n return text;\n }\n\n function generateVerbatimString(string) {\n var i, iz, result;\n result = string.split(/\\r\\n|\\n/);\n for (i = 1, iz = result.length; i < iz; i++) {\n result[i] = newline + base + result[i];\n }\n return result;\n }\n\n function generateVerbatim(expr, precedence) {\n var verbatim, result, prec;\n verbatim = expr[extra.verbatim];\n\n if (typeof verbatim === 'string') {\n result = parenthesize(generateVerbatimString(verbatim), Precedence.Sequence, precedence);\n } else {\n // verbatim is object\n result = generateVerbatimString(verbatim.content);\n prec = (verbatim.precedence != null) ? verbatim.precedence : Precedence.Sequence;\n result = parenthesize(result, prec, precedence);\n }\n\n return toSourceNodeWhenNeeded(result, expr);\n }\n\n function CodeGenerator() {\n }\n\n // Helpers.\n\n CodeGenerator.prototype.maybeBlock = function(stmt, flags) {\n var result, noLeadingComment, that = this;\n\n noLeadingComment = !extra.comment || !stmt.leadingComments;\n\n if (stmt.type === Syntax.BlockStatement && noLeadingComment) {\n return [space, this.generateStatement(stmt, flags)];\n }\n\n if (stmt.type === Syntax.EmptyStatement && noLeadingComment) {\n return ';';\n }\n\n withIndent(function () {\n result = [\n newline,\n addIndent(that.generateStatement(stmt, flags))\n ];\n });\n\n return result;\n };\n\n CodeGenerator.prototype.maybeBlockSuffix = function (stmt, result) {\n var ends = endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString());\n if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) {\n return [result, space];\n }\n if (ends) {\n return [result, base];\n }\n return [result, newline, base];\n };\n\n function generateIdentifier(node) {\n return toSourceNodeWhenNeeded(node.name, node);\n }\n\n function generateAsyncPrefix(node, spaceRequired) {\n return node.async ? 'async' + (spaceRequired ? noEmptySpace() : space) : '';\n }\n\n function generateStarSuffix(node) {\n var isGenerator = node.generator && !extra.moz.starlessGenerator;\n return isGenerator ? '*' + space : '';\n }\n\n function generateMethodPrefix(prop) {\n var func = prop.value, prefix = '';\n if (func.async) {\n prefix += generateAsyncPrefix(func, !prop.computed);\n }\n if (func.generator) {\n // avoid space before method name\n prefix += generateStarSuffix(func) ? '*' : '';\n }\n return prefix;\n }\n\n CodeGenerator.prototype.generatePattern = function (node, precedence, flags) {\n if (node.type === Syntax.Identifier) {\n return generateIdentifier(node);\n }\n return this.generateExpression(node, precedence, flags);\n };\n\n CodeGenerator.prototype.generateFunctionParams = function (node) {\n var i, iz, result, hasDefault;\n\n hasDefault = false;\n\n if (node.type === Syntax.ArrowFunctionExpression &&\n !node.rest && (!node.defaults || node.defaults.length === 0) &&\n node.params.length === 1 && node.params[0].type === Syntax.Identifier) {\n // arg => { } case\n result = [generateAsyncPrefix(node, true), generateIdentifier(node.params[0])];\n } else {\n result = node.type === Syntax.ArrowFunctionExpression ? [generateAsyncPrefix(node, false)] : [];\n result.push('(');\n if (node.defaults) {\n hasDefault = true;\n }\n for (i = 0, iz = node.params.length; i < iz; ++i) {\n if (hasDefault && node.defaults[i]) {\n // Handle default values.\n result.push(this.generateAssignment(node.params[i], node.defaults[i], '=', Precedence.Assignment, E_TTT));\n } else {\n result.push(this.generatePattern(node.params[i], Precedence.Assignment, E_TTT));\n }\n if (i + 1 < iz) {\n result.push(',' + space);\n }\n }\n\n if (node.rest) {\n if (node.params.length) {\n result.push(',' + space);\n }\n result.push('...');\n result.push(generateIdentifier(node.rest));\n }\n\n result.push(')');\n }\n\n return result;\n };\n\n CodeGenerator.prototype.generateFunctionBody = function (node) {\n var result, expr;\n\n result = this.generateFunctionParams(node);\n\n if (node.type === Syntax.ArrowFunctionExpression) {\n result.push(space);\n result.push('=>');\n }\n\n if (node.expression) {\n result.push(space);\n expr = this.generateExpression(node.body, Precedence.Assignment, E_TTT);\n if (expr.toString().charAt(0) === '{') {\n expr = ['(', expr, ')'];\n }\n result.push(expr);\n } else {\n result.push(this.maybeBlock(node.body, S_TTFF));\n }\n\n return result;\n };\n\n CodeGenerator.prototype.generateIterationForStatement = function (operator, stmt, flags) {\n var result = ['for' + (stmt.await ? noEmptySpace() + 'await' : '') + space + '('], that = this;\n withIndent(function () {\n if (stmt.left.type === Syntax.VariableDeclaration) {\n withIndent(function () {\n result.push(stmt.left.kind + noEmptySpace());\n result.push(that.generateStatement(stmt.left.declarations[0], S_FFFF));\n });\n } else {\n result.push(that.generateExpression(stmt.left, Precedence.Call, E_TTT));\n }\n\n result = join(result, operator);\n result = [join(\n result,\n that.generateExpression(stmt.right, Precedence.Assignment, E_TTT)\n ), ')'];\n });\n result.push(this.maybeBlock(stmt.body, flags));\n return result;\n };\n\n CodeGenerator.prototype.generatePropertyKey = function (expr, computed) {\n var result = [];\n\n if (computed) {\n result.push('[');\n }\n\n result.push(this.generateExpression(expr, Precedence.Assignment, E_TTT));\n\n if (computed) {\n result.push(']');\n }\n\n return result;\n };\n\n CodeGenerator.prototype.generateAssignment = function (left, right, operator, precedence, flags) {\n if (Precedence.Assignment < precedence) {\n flags |= F_ALLOW_IN;\n }\n\n return parenthesize(\n [\n this.generateExpression(left, Precedence.Call, flags),\n space + operator + space,\n this.generateExpression(right, Precedence.Assignment, flags)\n ],\n Precedence.Assignment,\n precedence\n );\n };\n\n CodeGenerator.prototype.semicolon = function (flags) {\n if (!semicolons && flags & F_SEMICOLON_OPT) {\n return '';\n }\n return ';';\n };\n\n // Statements.\n\n CodeGenerator.Statement = {\n\n BlockStatement: function (stmt, flags) {\n var range, content, result = ['{', newline], that = this;\n\n withIndent(function () {\n // handle functions without any code\n if (stmt.body.length === 0 && preserveBlankLines) {\n range = stmt.range;\n if (range[1] - range[0] > 2) {\n content = sourceCode.substring(range[0] + 1, range[1] - 1);\n if (content[0] === '\\n') {\n result = ['{'];\n }\n result.push(content);\n }\n }\n\n var i, iz, fragment, bodyFlags;\n bodyFlags = S_TFFF;\n if (flags & F_FUNC_BODY) {\n bodyFlags |= F_DIRECTIVE_CTX;\n }\n\n for (i = 0, iz = stmt.body.length; i < iz; ++i) {\n if (preserveBlankLines) {\n // handle spaces before the first line\n if (i === 0) {\n if (stmt.body[0].leadingComments) {\n range = stmt.body[0].leadingComments[0].extendedRange;\n content = sourceCode.substring(range[0], range[1]);\n if (content[0] === '\\n') {\n result = ['{'];\n }\n }\n if (!stmt.body[0].leadingComments) {\n generateBlankLines(stmt.range[0], stmt.body[0].range[0], result);\n }\n }\n\n // handle spaces between lines\n if (i > 0) {\n if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) {\n generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result);\n }\n }\n }\n\n if (i === iz - 1) {\n bodyFlags |= F_SEMICOLON_OPT;\n }\n\n if (stmt.body[i].leadingComments && preserveBlankLines) {\n fragment = that.generateStatement(stmt.body[i], bodyFlags);\n } else {\n fragment = addIndent(that.generateStatement(stmt.body[i], bodyFlags));\n }\n\n result.push(fragment);\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {\n if (preserveBlankLines && i < iz - 1) {\n // don't add a new line if there are leading coments\n // in the next statement\n if (!stmt.body[i + 1].leadingComments) {\n result.push(newline);\n }\n } else {\n result.push(newline);\n }\n }\n\n if (preserveBlankLines) {\n // handle spaces after the last line\n if (i === iz - 1) {\n if (!stmt.body[i].trailingComments) {\n generateBlankLines(stmt.body[i].range[1], stmt.range[1], result);\n }\n }\n }\n }\n });\n\n result.push(addIndent('}'));\n return result;\n },\n\n BreakStatement: function (stmt, flags) {\n if (stmt.label) {\n return 'break ' + stmt.label.name + this.semicolon(flags);\n }\n return 'break' + this.semicolon(flags);\n },\n\n ContinueStatement: function (stmt, flags) {\n if (stmt.label) {\n return 'continue ' + stmt.label.name + this.semicolon(flags);\n }\n return 'continue' + this.semicolon(flags);\n },\n\n ClassBody: function (stmt, flags) {\n var result = [ '{', newline], that = this;\n\n withIndent(function (indent) {\n var i, iz;\n\n for (i = 0, iz = stmt.body.length; i < iz; ++i) {\n result.push(indent);\n result.push(that.generateExpression(stmt.body[i], Precedence.Sequence, E_TTT));\n if (i + 1 < iz) {\n result.push(newline);\n }\n }\n });\n\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push(newline);\n }\n result.push(base);\n result.push('}');\n return result;\n },\n\n ClassDeclaration: function (stmt, flags) {\n var result, fragment;\n result = ['class'];\n if (stmt.id) {\n result = join(result, this.generateExpression(stmt.id, Precedence.Sequence, E_TTT));\n }\n if (stmt.superClass) {\n fragment = join('extends', this.generateExpression(stmt.superClass, Precedence.Unary, E_TTT));\n result = join(result, fragment);\n }\n result.push(space);\n result.push(this.generateStatement(stmt.body, S_TFFT));\n return result;\n },\n\n DirectiveStatement: function (stmt, flags) {\n if (extra.raw && stmt.raw) {\n return stmt.raw + this.semicolon(flags);\n }\n return escapeDirective(stmt.directive) + this.semicolon(flags);\n },\n\n DoWhileStatement: function (stmt, flags) {\n // Because `do 42 while (cond)` is Syntax Error. We need semicolon.\n var result = join('do', this.maybeBlock(stmt.body, S_TFFF));\n result = this.maybeBlockSuffix(stmt.body, result);\n return join(result, [\n 'while' + space + '(',\n this.generateExpression(stmt.test, Precedence.Sequence, E_TTT),\n ')' + this.semicolon(flags)\n ]);\n },\n\n CatchClause: function (stmt, flags) {\n var result, that = this;\n withIndent(function () {\n var guard;\n\n if (stmt.param) {\n result = [\n 'catch' + space + '(',\n that.generateExpression(stmt.param, Precedence.Sequence, E_TTT),\n ')'\n ];\n\n if (stmt.guard) {\n guard = that.generateExpression(stmt.guard, Precedence.Sequence, E_TTT);\n result.splice(2, 0, ' if ', guard);\n }\n } else {\n result = ['catch'];\n }\n });\n result.push(this.maybeBlock(stmt.body, S_TFFF));\n return result;\n },\n\n DebuggerStatement: function (stmt, flags) {\n return 'debugger' + this.semicolon(flags);\n },\n\n EmptyStatement: function (stmt, flags) {\n return ';';\n },\n\n ExportDefaultDeclaration: function (stmt, flags) {\n var result = [ 'export' ], bodyFlags;\n\n bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF;\n\n // export default HoistableDeclaration[Default]\n // export default AssignmentExpression[In] ;\n result = join(result, 'default');\n if (isStatement(stmt.declaration)) {\n result = join(result, this.generateStatement(stmt.declaration, bodyFlags));\n } else {\n result = join(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT) + this.semicolon(flags));\n }\n return result;\n },\n\n ExportNamedDeclaration: function (stmt, flags) {\n var result = [ 'export' ], bodyFlags, that = this;\n\n bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF;\n\n // export VariableStatement\n // export Declaration[Default]\n if (stmt.declaration) {\n return join(result, this.generateStatement(stmt.declaration, bodyFlags));\n }\n\n // export ExportClause[NoReference] FromClause ;\n // export ExportClause ;\n if (stmt.specifiers) {\n if (stmt.specifiers.length === 0) {\n result = join(result, '{' + space + '}');\n } else if (stmt.specifiers[0].type === Syntax.ExportBatchSpecifier) {\n result = join(result, this.generateExpression(stmt.specifiers[0], Precedence.Sequence, E_TTT));\n } else {\n result = join(result, '{');\n withIndent(function (indent) {\n var i, iz;\n result.push(newline);\n for (i = 0, iz = stmt.specifiers.length; i < iz; ++i) {\n result.push(indent);\n result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT));\n if (i + 1 < iz) {\n result.push(',' + newline);\n }\n }\n });\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push(newline);\n }\n result.push(base + '}');\n }\n\n if (stmt.source) {\n result = join(result, [\n 'from' + space,\n // ModuleSpecifier\n this.generateExpression(stmt.source, Precedence.Sequence, E_TTT),\n this.semicolon(flags)\n ]);\n } else {\n result.push(this.semicolon(flags));\n }\n }\n return result;\n },\n\n ExportAllDeclaration: function (stmt, flags) {\n // export * FromClause ;\n return [\n 'export' + space,\n '*' + space,\n 'from' + space,\n // ModuleSpecifier\n this.generateExpression(stmt.source, Precedence.Sequence, E_TTT),\n this.semicolon(flags)\n ];\n },\n\n ExpressionStatement: function (stmt, flags) {\n var result, fragment;\n\n function isClassPrefixed(fragment) {\n var code;\n if (fragment.slice(0, 5) !== 'class') {\n return false;\n }\n code = fragment.charCodeAt(5);\n return code === 0x7B /* '{' */ || esutils.code.isWhiteSpace(code) || esutils.code.isLineTerminator(code);\n }\n\n function isFunctionPrefixed(fragment) {\n var code;\n if (fragment.slice(0, 8) !== 'function') {\n return false;\n }\n code = fragment.charCodeAt(8);\n return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code);\n }\n\n function isAsyncPrefixed(fragment) {\n var code, i, iz;\n if (fragment.slice(0, 5) !== 'async') {\n return false;\n }\n if (!esutils.code.isWhiteSpace(fragment.charCodeAt(5))) {\n return false;\n }\n for (i = 6, iz = fragment.length; i < iz; ++i) {\n if (!esutils.code.isWhiteSpace(fragment.charCodeAt(i))) {\n break;\n }\n }\n if (i === iz) {\n return false;\n }\n if (fragment.slice(i, i + 8) !== 'function') {\n return false;\n }\n code = fragment.charCodeAt(i + 8);\n return code === 0x28 /* '(' */ || esutils.code.isWhiteSpace(code) || code === 0x2A /* '*' */ || esutils.code.isLineTerminator(code);\n }\n\n result = [this.generateExpression(stmt.expression, Precedence.Sequence, E_TTT)];\n // 12.4 '{', 'function', 'class' is not allowed in this position.\n // wrap expression with parentheses\n fragment = toSourceNodeWhenNeeded(result).toString();\n if (fragment.charCodeAt(0) === 0x7B /* '{' */ || // ObjectExpression\n isClassPrefixed(fragment) ||\n isFunctionPrefixed(fragment) ||\n isAsyncPrefixed(fragment) ||\n (directive && (flags & F_DIRECTIVE_CTX) && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) {\n result = ['(', result, ')' + this.semicolon(flags)];\n } else {\n result.push(this.semicolon(flags));\n }\n return result;\n },\n\n ImportDeclaration: function (stmt, flags) {\n // ES6: 15.2.1 valid import declarations:\n // - import ImportClause FromClause ;\n // - import ModuleSpecifier ;\n var result, cursor, that = this;\n\n // If no ImportClause is present,\n // this should be `import ModuleSpecifier` so skip `from`\n // ModuleSpecifier is StringLiteral.\n if (stmt.specifiers.length === 0) {\n // import ModuleSpecifier ;\n return [\n 'import',\n space,\n // ModuleSpecifier\n this.generateExpression(stmt.source, Precedence.Sequence, E_TTT),\n this.semicolon(flags)\n ];\n }\n\n // import ImportClause FromClause ;\n result = [\n 'import'\n ];\n cursor = 0;\n\n // ImportedBinding\n if (stmt.specifiers[cursor].type === Syntax.ImportDefaultSpecifier) {\n result = join(result, [\n this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT)\n ]);\n ++cursor;\n }\n\n if (stmt.specifiers[cursor]) {\n if (cursor !== 0) {\n result.push(',');\n }\n\n if (stmt.specifiers[cursor].type === Syntax.ImportNamespaceSpecifier) {\n // NameSpaceImport\n result = join(result, [\n space,\n this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT)\n ]);\n } else {\n // NamedImports\n result.push(space + '{');\n\n if ((stmt.specifiers.length - cursor) === 1) {\n // import { ... } from \"...\";\n result.push(space);\n result.push(this.generateExpression(stmt.specifiers[cursor], Precedence.Sequence, E_TTT));\n result.push(space + '}' + space);\n } else {\n // import {\n // ...,\n // ...,\n // } from \"...\";\n withIndent(function (indent) {\n var i, iz;\n result.push(newline);\n for (i = cursor, iz = stmt.specifiers.length; i < iz; ++i) {\n result.push(indent);\n result.push(that.generateExpression(stmt.specifiers[i], Precedence.Sequence, E_TTT));\n if (i + 1 < iz) {\n result.push(',' + newline);\n }\n }\n });\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push(newline);\n }\n result.push(base + '}' + space);\n }\n }\n }\n\n result = join(result, [\n 'from' + space,\n // ModuleSpecifier\n this.generateExpression(stmt.source, Precedence.Sequence, E_TTT),\n this.semicolon(flags)\n ]);\n return result;\n },\n\n VariableDeclarator: function (stmt, flags) {\n var itemFlags = (flags & F_ALLOW_IN) ? E_TTT : E_FTT;\n if (stmt.init) {\n return [\n this.generateExpression(stmt.id, Precedence.Assignment, itemFlags),\n space,\n '=',\n space,\n this.generateExpression(stmt.init, Precedence.Assignment, itemFlags)\n ];\n }\n return this.generatePattern(stmt.id, Precedence.Assignment, itemFlags);\n },\n\n VariableDeclaration: function (stmt, flags) {\n // VariableDeclarator is typed as Statement,\n // but joined with comma (not LineTerminator).\n // So if comment is attached to target node, we should specialize.\n var result, i, iz, node, bodyFlags, that = this;\n\n result = [ stmt.kind ];\n\n bodyFlags = (flags & F_ALLOW_IN) ? S_TFFF : S_FFFF;\n\n function block() {\n node = stmt.declarations[0];\n if (extra.comment && node.leadingComments) {\n result.push('\\n');\n result.push(addIndent(that.generateStatement(node, bodyFlags)));\n } else {\n result.push(noEmptySpace());\n result.push(that.generateStatement(node, bodyFlags));\n }\n\n for (i = 1, iz = stmt.declarations.length; i < iz; ++i) {\n node = stmt.declarations[i];\n if (extra.comment && node.leadingComments) {\n result.push(',' + newline);\n result.push(addIndent(that.generateStatement(node, bodyFlags)));\n } else {\n result.push(',' + space);\n result.push(that.generateStatement(node, bodyFlags));\n }\n }\n }\n\n if (stmt.declarations.length > 1) {\n withIndent(block);\n } else {\n block();\n }\n\n result.push(this.semicolon(flags));\n\n return result;\n },\n\n ThrowStatement: function (stmt, flags) {\n return [join(\n 'throw',\n this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT)\n ), this.semicolon(flags)];\n },\n\n TryStatement: function (stmt, flags) {\n var result, i, iz, guardedHandlers;\n\n result = ['try', this.maybeBlock(stmt.block, S_TFFF)];\n result = this.maybeBlockSuffix(stmt.block, result);\n\n if (stmt.handlers) {\n // old interface\n for (i = 0, iz = stmt.handlers.length; i < iz; ++i) {\n result = join(result, this.generateStatement(stmt.handlers[i], S_TFFF));\n if (stmt.finalizer || i + 1 !== iz) {\n result = this.maybeBlockSuffix(stmt.handlers[i].body, result);\n }\n }\n } else {\n guardedHandlers = stmt.guardedHandlers || [];\n\n for (i = 0, iz = guardedHandlers.length; i < iz; ++i) {\n result = join(result, this.generateStatement(guardedHandlers[i], S_TFFF));\n if (stmt.finalizer || i + 1 !== iz) {\n result = this.maybeBlockSuffix(guardedHandlers[i].body, result);\n }\n }\n\n // new interface\n if (stmt.handler) {\n if (Array.isArray(stmt.handler)) {\n for (i = 0, iz = stmt.handler.length; i < iz; ++i) {\n result = join(result, this.generateStatement(stmt.handler[i], S_TFFF));\n if (stmt.finalizer || i + 1 !== iz) {\n result = this.maybeBlockSuffix(stmt.handler[i].body, result);\n }\n }\n } else {\n result = join(result, this.generateStatement(stmt.handler, S_TFFF));\n if (stmt.finalizer) {\n result = this.maybeBlockSuffix(stmt.handler.body, result);\n }\n }\n }\n }\n if (stmt.finalizer) {\n result = join(result, ['finally', this.maybeBlock(stmt.finalizer, S_TFFF)]);\n }\n return result;\n },\n\n SwitchStatement: function (stmt, flags) {\n var result, fragment, i, iz, bodyFlags, that = this;\n withIndent(function () {\n result = [\n 'switch' + space + '(',\n that.generateExpression(stmt.discriminant, Precedence.Sequence, E_TTT),\n ')' + space + '{' + newline\n ];\n });\n if (stmt.cases) {\n bodyFlags = S_TFFF;\n for (i = 0, iz = stmt.cases.length; i < iz; ++i) {\n if (i === iz - 1) {\n bodyFlags |= F_SEMICOLON_OPT;\n }\n fragment = addIndent(this.generateStatement(stmt.cases[i], bodyFlags));\n result.push(fragment);\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {\n result.push(newline);\n }\n }\n }\n result.push(addIndent('}'));\n return result;\n },\n\n SwitchCase: function (stmt, flags) {\n var result, fragment, i, iz, bodyFlags, that = this;\n withIndent(function () {\n if (stmt.test) {\n result = [\n join('case', that.generateExpression(stmt.test, Precedence.Sequence, E_TTT)),\n ':'\n ];\n } else {\n result = ['default:'];\n }\n\n i = 0;\n iz = stmt.consequent.length;\n if (iz && stmt.consequent[0].type === Syntax.BlockStatement) {\n fragment = that.maybeBlock(stmt.consequent[0], S_TFFF);\n result.push(fragment);\n i = 1;\n }\n\n if (i !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push(newline);\n }\n\n bodyFlags = S_TFFF;\n for (; i < iz; ++i) {\n if (i === iz - 1 && flags & F_SEMICOLON_OPT) {\n bodyFlags |= F_SEMICOLON_OPT;\n }\n fragment = addIndent(that.generateStatement(stmt.consequent[i], bodyFlags));\n result.push(fragment);\n if (i + 1 !== iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {\n result.push(newline);\n }\n }\n });\n return result;\n },\n\n IfStatement: function (stmt, flags) {\n var result, bodyFlags, semicolonOptional, that = this;\n withIndent(function () {\n result = [\n 'if' + space + '(',\n that.generateExpression(stmt.test, Precedence.Sequence, E_TTT),\n ')'\n ];\n });\n semicolonOptional = flags & F_SEMICOLON_OPT;\n bodyFlags = S_TFFF;\n if (semicolonOptional) {\n bodyFlags |= F_SEMICOLON_OPT;\n }\n if (stmt.alternate) {\n result.push(this.maybeBlock(stmt.consequent, S_TFFF));\n result = this.maybeBlockSuffix(stmt.consequent, result);\n if (stmt.alternate.type === Syntax.IfStatement) {\n result = join(result, ['else ', this.generateStatement(stmt.alternate, bodyFlags)]);\n } else {\n result = join(result, join('else', this.maybeBlock(stmt.alternate, bodyFlags)));\n }\n } else {\n result.push(this.maybeBlock(stmt.consequent, bodyFlags));\n }\n return result;\n },\n\n ForStatement: function (stmt, flags) {\n var result, that = this;\n withIndent(function () {\n result = ['for' + space + '('];\n if (stmt.init) {\n if (stmt.init.type === Syntax.VariableDeclaration) {\n result.push(that.generateStatement(stmt.init, S_FFFF));\n } else {\n // F_ALLOW_IN becomes false.\n result.push(that.generateExpression(stmt.init, Precedence.Sequence, E_FTT));\n result.push(';');\n }\n } else {\n result.push(';');\n }\n\n if (stmt.test) {\n result.push(space);\n result.push(that.generateExpression(stmt.test, Precedence.Sequence, E_TTT));\n result.push(';');\n } else {\n result.push(';');\n }\n\n if (stmt.update) {\n result.push(space);\n result.push(that.generateExpression(stmt.update, Precedence.Sequence, E_TTT));\n result.push(')');\n } else {\n result.push(')');\n }\n });\n\n result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF));\n return result;\n },\n\n ForInStatement: function (stmt, flags) {\n return this.generateIterationForStatement('in', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF);\n },\n\n ForOfStatement: function (stmt, flags) {\n return this.generateIterationForStatement('of', stmt, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF);\n },\n\n LabeledStatement: function (stmt, flags) {\n return [stmt.label.name + ':', this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF)];\n },\n\n Program: function (stmt, flags) {\n var result, fragment, i, iz, bodyFlags;\n iz = stmt.body.length;\n result = [safeConcatenation && iz > 0 ? '\\n' : ''];\n bodyFlags = S_TFTF;\n for (i = 0; i < iz; ++i) {\n if (!safeConcatenation && i === iz - 1) {\n bodyFlags |= F_SEMICOLON_OPT;\n }\n\n if (preserveBlankLines) {\n // handle spaces before the first line\n if (i === 0) {\n if (!stmt.body[0].leadingComments) {\n generateBlankLines(stmt.range[0], stmt.body[i].range[0], result);\n }\n }\n\n // handle spaces between lines\n if (i > 0) {\n if (!stmt.body[i - 1].trailingComments && !stmt.body[i].leadingComments) {\n generateBlankLines(stmt.body[i - 1].range[1], stmt.body[i].range[0], result);\n }\n }\n }\n\n fragment = addIndent(this.generateStatement(stmt.body[i], bodyFlags));\n result.push(fragment);\n if (i + 1 < iz && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {\n if (preserveBlankLines) {\n if (!stmt.body[i + 1].leadingComments) {\n result.push(newline);\n }\n } else {\n result.push(newline);\n }\n }\n\n if (preserveBlankLines) {\n // handle spaces after the last line\n if (i === iz - 1) {\n if (!stmt.body[i].trailingComments) {\n generateBlankLines(stmt.body[i].range[1], stmt.range[1], result);\n }\n }\n }\n }\n return result;\n },\n\n FunctionDeclaration: function (stmt, flags) {\n return [\n generateAsyncPrefix(stmt, true),\n 'function',\n generateStarSuffix(stmt) || noEmptySpace(),\n stmt.id ? generateIdentifier(stmt.id) : '',\n this.generateFunctionBody(stmt)\n ];\n },\n\n ReturnStatement: function (stmt, flags) {\n if (stmt.argument) {\n return [join(\n 'return',\n this.generateExpression(stmt.argument, Precedence.Sequence, E_TTT)\n ), this.semicolon(flags)];\n }\n return ['return' + this.semicolon(flags)];\n },\n\n WhileStatement: function (stmt, flags) {\n var result, that = this;\n withIndent(function () {\n result = [\n 'while' + space + '(',\n that.generateExpression(stmt.test, Precedence.Sequence, E_TTT),\n ')'\n ];\n });\n result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF));\n return result;\n },\n\n WithStatement: function (stmt, flags) {\n var result, that = this;\n withIndent(function () {\n result = [\n 'with' + space + '(',\n that.generateExpression(stmt.object, Precedence.Sequence, E_TTT),\n ')'\n ];\n });\n result.push(this.maybeBlock(stmt.body, flags & F_SEMICOLON_OPT ? S_TFFT : S_TFFF));\n return result;\n }\n\n };\n\n merge(CodeGenerator.prototype, CodeGenerator.Statement);\n\n // Expressions.\n\n CodeGenerator.Expression = {\n\n SequenceExpression: function (expr, precedence, flags) {\n var result, i, iz;\n if (Precedence.Sequence < precedence) {\n flags |= F_ALLOW_IN;\n }\n result = [];\n for (i = 0, iz = expr.expressions.length; i < iz; ++i) {\n result.push(this.generateExpression(expr.expressions[i], Precedence.Assignment, flags));\n if (i + 1 < iz) {\n result.push(',' + space);\n }\n }\n return parenthesize(result, Precedence.Sequence, precedence);\n },\n\n AssignmentExpression: function (expr, precedence, flags) {\n return this.generateAssignment(expr.left, expr.right, expr.operator, precedence, flags);\n },\n\n ArrowFunctionExpression: function (expr, precedence, flags) {\n return parenthesize(this.generateFunctionBody(expr), Precedence.ArrowFunction, precedence);\n },\n\n ConditionalExpression: function (expr, precedence, flags) {\n if (Precedence.Conditional < precedence) {\n flags |= F_ALLOW_IN;\n }\n return parenthesize(\n [\n this.generateExpression(expr.test, Precedence.Coalesce, flags),\n space + '?' + space,\n this.generateExpression(expr.consequent, Precedence.Assignment, flags),\n space + ':' + space,\n this.generateExpression(expr.alternate, Precedence.Assignment, flags)\n ],\n Precedence.Conditional,\n precedence\n );\n },\n\n LogicalExpression: function (expr, precedence, flags) {\n if (expr.operator === '??') {\n flags |= F_FOUND_COALESCE;\n }\n return this.BinaryExpression(expr, precedence, flags);\n },\n\n BinaryExpression: function (expr, precedence, flags) {\n var result, leftPrecedence, rightPrecedence, currentPrecedence, fragment, leftSource;\n currentPrecedence = BinaryPrecedence[expr.operator];\n leftPrecedence = expr.operator === '**' ? Precedence.Postfix : currentPrecedence;\n rightPrecedence = expr.operator === '**' ? currentPrecedence : currentPrecedence + 1;\n\n if (currentPrecedence < precedence) {\n flags |= F_ALLOW_IN;\n }\n\n fragment = this.generateExpression(expr.left, leftPrecedence, flags);\n\n leftSource = fragment.toString();\n\n if (leftSource.charCodeAt(leftSource.length - 1) === 0x2F /* / */ && esutils.code.isIdentifierPartES5(expr.operator.charCodeAt(0))) {\n result = [fragment, noEmptySpace(), expr.operator];\n } else {\n result = join(fragment, expr.operator);\n }\n\n fragment = this.generateExpression(expr.right, rightPrecedence, flags);\n\n if (expr.operator === '/' && fragment.toString().charAt(0) === '/' ||\n expr.operator.slice(-1) === '<' && fragment.toString().slice(0, 3) === '!--') {\n // If '/' concats with '/' or `<` concats with `!--`, it is interpreted as comment start\n result.push(noEmptySpace());\n result.push(fragment);\n } else {\n result = join(result, fragment);\n }\n\n if (expr.operator === 'in' && !(flags & F_ALLOW_IN)) {\n return ['(', result, ')'];\n }\n if ((expr.operator === '||' || expr.operator === '&&') && (flags & F_FOUND_COALESCE)) {\n return ['(', result, ')'];\n }\n return parenthesize(result, currentPrecedence, precedence);\n },\n\n CallExpression: function (expr, precedence, flags) {\n var result, i, iz;\n\n // F_ALLOW_UNPARATH_NEW becomes false.\n result = [this.generateExpression(expr.callee, Precedence.Call, E_TTF)];\n\n if (expr.optional) {\n result.push('?.');\n }\n\n result.push('(');\n for (i = 0, iz = expr['arguments'].length; i < iz; ++i) {\n result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT));\n if (i + 1 < iz) {\n result.push(',' + space);\n }\n }\n result.push(')');\n\n if (!(flags & F_ALLOW_CALL)) {\n return ['(', result, ')'];\n }\n\n return parenthesize(result, Precedence.Call, precedence);\n },\n\n ChainExpression: function (expr, precedence, flags) {\n if (Precedence.OptionalChaining < precedence) {\n flags |= F_ALLOW_CALL;\n }\n\n var result = this.generateExpression(expr.expression, Precedence.OptionalChaining, flags);\n\n return parenthesize(result, Precedence.OptionalChaining, precedence);\n },\n\n NewExpression: function (expr, precedence, flags) {\n var result, length, i, iz, itemFlags;\n length = expr['arguments'].length;\n\n // F_ALLOW_CALL becomes false.\n // F_ALLOW_UNPARATH_NEW may become false.\n itemFlags = (flags & F_ALLOW_UNPARATH_NEW && !parentheses && length === 0) ? E_TFT : E_TFF;\n\n result = join(\n 'new',\n this.generateExpression(expr.callee, Precedence.New, itemFlags)\n );\n\n if (!(flags & F_ALLOW_UNPARATH_NEW) || parentheses || length > 0) {\n result.push('(');\n for (i = 0, iz = length; i < iz; ++i) {\n result.push(this.generateExpression(expr['arguments'][i], Precedence.Assignment, E_TTT));\n if (i + 1 < iz) {\n result.push(',' + space);\n }\n }\n result.push(')');\n }\n\n return parenthesize(result, Precedence.New, precedence);\n },\n\n MemberExpression: function (expr, precedence, flags) {\n var result, fragment;\n\n // F_ALLOW_UNPARATH_NEW becomes false.\n result = [this.generateExpression(expr.object, Precedence.Call, (flags & F_ALLOW_CALL) ? E_TTF : E_TFF)];\n\n if (expr.computed) {\n if (expr.optional) {\n result.push('?.');\n }\n\n result.push('[');\n result.push(this.generateExpression(expr.property, Precedence.Sequence, flags & F_ALLOW_CALL ? E_TTT : E_TFT));\n result.push(']');\n } else {\n if (!expr.optional && expr.object.type === Syntax.Literal && typeof expr.object.value === 'number') {\n fragment = toSourceNodeWhenNeeded(result).toString();\n // When the following conditions are all true,\n // 1. No floating point\n // 2. Don't have exponents\n // 3. The last character is a decimal digit\n // 4. Not hexadecimal OR octal number literal\n // we should add a floating point.\n if (\n fragment.indexOf('.') < 0 &&\n !/[eExX]/.test(fragment) &&\n esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) &&\n !(fragment.length >= 2 && fragment.charCodeAt(0) === 48) // '0'\n ) {\n result.push(' ');\n }\n }\n result.push(expr.optional ? '?.' : '.');\n result.push(generateIdentifier(expr.property));\n }\n\n return parenthesize(result, Precedence.Member, precedence);\n },\n\n MetaProperty: function (expr, precedence, flags) {\n var result;\n result = [];\n result.push(typeof expr.meta === \"string\" ? expr.meta : generateIdentifier(expr.meta));\n result.push('.');\n result.push(typeof expr.property === \"string\" ? expr.property : generateIdentifier(expr.property));\n return parenthesize(result, Precedence.Member, precedence);\n },\n\n UnaryExpression: function (expr, precedence, flags) {\n var result, fragment, rightCharCode, leftSource, leftCharCode;\n fragment = this.generateExpression(expr.argument, Precedence.Unary, E_TTT);\n\n if (space === '') {\n result = join(expr.operator, fragment);\n } else {\n result = [expr.operator];\n if (expr.operator.length > 2) {\n // delete, void, typeof\n // get `typeof []`, not `typeof[]`\n result = join(result, fragment);\n } else {\n // Prevent inserting spaces between operator and argument if it is unnecessary\n // like, `!cond`\n leftSource = toSourceNodeWhenNeeded(result).toString();\n leftCharCode = leftSource.charCodeAt(leftSource.length - 1);\n rightCharCode = fragment.toString().charCodeAt(0);\n\n if (((leftCharCode === 0x2B /* + */ || leftCharCode === 0x2D /* - */) && leftCharCode === rightCharCode) ||\n (esutils.code.isIdentifierPartES5(leftCharCode) && esutils.code.isIdentifierPartES5(rightCharCode))) {\n result.push(noEmptySpace());\n result.push(fragment);\n } else {\n result.push(fragment);\n }\n }\n }\n return parenthesize(result, Precedence.Unary, precedence);\n },\n\n YieldExpression: function (expr, precedence, flags) {\n var result;\n if (expr.delegate) {\n result = 'yield*';\n } else {\n result = 'yield';\n }\n if (expr.argument) {\n result = join(\n result,\n this.generateExpression(expr.argument, Precedence.Yield, E_TTT)\n );\n }\n return parenthesize(result, Precedence.Yield, precedence);\n },\n\n AwaitExpression: function (expr, precedence, flags) {\n var result = join(\n expr.all ? 'await*' : 'await',\n this.generateExpression(expr.argument, Precedence.Await, E_TTT)\n );\n return parenthesize(result, Precedence.Await, precedence);\n },\n\n UpdateExpression: function (expr, precedence, flags) {\n if (expr.prefix) {\n return parenthesize(\n [\n expr.operator,\n this.generateExpression(expr.argument, Precedence.Unary, E_TTT)\n ],\n Precedence.Unary,\n precedence\n );\n }\n return parenthesize(\n [\n this.generateExpression(expr.argument, Precedence.Postfix, E_TTT),\n expr.operator\n ],\n Precedence.Postfix,\n precedence\n );\n },\n\n FunctionExpression: function (expr, precedence, flags) {\n var result = [\n generateAsyncPrefix(expr, true),\n 'function'\n ];\n if (expr.id) {\n result.push(generateStarSuffix(expr) || noEmptySpace());\n result.push(generateIdentifier(expr.id));\n } else {\n result.push(generateStarSuffix(expr) || space);\n }\n result.push(this.generateFunctionBody(expr));\n return result;\n },\n\n ArrayPattern: function (expr, precedence, flags) {\n return this.ArrayExpression(expr, precedence, flags, true);\n },\n\n ArrayExpression: function (expr, precedence, flags, isPattern) {\n var result, multiline, that = this;\n if (!expr.elements.length) {\n return '[]';\n }\n multiline = isPattern ? false : expr.elements.length > 1;\n result = ['[', multiline ? newline : ''];\n withIndent(function (indent) {\n var i, iz;\n for (i = 0, iz = expr.elements.length; i < iz; ++i) {\n if (!expr.elements[i]) {\n if (multiline) {\n result.push(indent);\n }\n if (i + 1 === iz) {\n result.push(',');\n }\n } else {\n result.push(multiline ? indent : '');\n result.push(that.generateExpression(expr.elements[i], Precedence.Assignment, E_TTT));\n }\n if (i + 1 < iz) {\n result.push(',' + (multiline ? newline : space));\n }\n }\n });\n if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push(newline);\n }\n result.push(multiline ? base : '');\n result.push(']');\n return result;\n },\n\n RestElement: function(expr, precedence, flags) {\n return '...' + this.generatePattern(expr.argument);\n },\n\n ClassExpression: function (expr, precedence, flags) {\n var result, fragment;\n result = ['class'];\n if (expr.id) {\n result = join(result, this.generateExpression(expr.id, Precedence.Sequence, E_TTT));\n }\n if (expr.superClass) {\n fragment = join('extends', this.generateExpression(expr.superClass, Precedence.Unary, E_TTT));\n result = join(result, fragment);\n }\n result.push(space);\n result.push(this.generateStatement(expr.body, S_TFFT));\n return result;\n },\n\n MethodDefinition: function (expr, precedence, flags) {\n var result, fragment;\n if (expr['static']) {\n result = ['static' + space];\n } else {\n result = [];\n }\n if (expr.kind === 'get' || expr.kind === 'set') {\n fragment = [\n join(expr.kind, this.generatePropertyKey(expr.key, expr.computed)),\n this.generateFunctionBody(expr.value)\n ];\n } else {\n fragment = [\n generateMethodPrefix(expr),\n this.generatePropertyKey(expr.key, expr.computed),\n this.generateFunctionBody(expr.value)\n ];\n }\n return join(result, fragment);\n },\n\n Property: function (expr, precedence, flags) {\n if (expr.kind === 'get' || expr.kind === 'set') {\n return [\n expr.kind, noEmptySpace(),\n this.generatePropertyKey(expr.key, expr.computed),\n this.generateFunctionBody(expr.value)\n ];\n }\n\n if (expr.shorthand) {\n if (expr.value.type === \"AssignmentPattern\") {\n return this.AssignmentPattern(expr.value, Precedence.Sequence, E_TTT);\n }\n return this.generatePropertyKey(expr.key, expr.computed);\n }\n\n if (expr.method) {\n return [\n generateMethodPrefix(expr),\n this.generatePropertyKey(expr.key, expr.computed),\n this.generateFunctionBody(expr.value)\n ];\n }\n\n return [\n this.generatePropertyKey(expr.key, expr.computed),\n ':' + space,\n this.generateExpression(expr.value, Precedence.Assignment, E_TTT)\n ];\n },\n\n ObjectExpression: function (expr, precedence, flags) {\n var multiline, result, fragment, that = this;\n\n if (!expr.properties.length) {\n return '{}';\n }\n multiline = expr.properties.length > 1;\n\n withIndent(function () {\n fragment = that.generateExpression(expr.properties[0], Precedence.Sequence, E_TTT);\n });\n\n if (!multiline) {\n // issues 4\n // Do not transform from\n // dejavu.Class.declare({\n // method2: function () {}\n // });\n // to\n // dejavu.Class.declare({method2: function () {\n // }});\n if (!hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {\n return [ '{', space, fragment, space, '}' ];\n }\n }\n\n withIndent(function (indent) {\n var i, iz;\n result = [ '{', newline, indent, fragment ];\n\n if (multiline) {\n result.push(',' + newline);\n for (i = 1, iz = expr.properties.length; i < iz; ++i) {\n result.push(indent);\n result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT));\n if (i + 1 < iz) {\n result.push(',' + newline);\n }\n }\n }\n });\n\n if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push(newline);\n }\n result.push(base);\n result.push('}');\n return result;\n },\n\n AssignmentPattern: function(expr, precedence, flags) {\n return this.generateAssignment(expr.left, expr.right, '=', precedence, flags);\n },\n\n ObjectPattern: function (expr, precedence, flags) {\n var result, i, iz, multiline, property, that = this;\n if (!expr.properties.length) {\n return '{}';\n }\n\n multiline = false;\n if (expr.properties.length === 1) {\n property = expr.properties[0];\n if (\n property.type === Syntax.Property\n && property.value.type !== Syntax.Identifier\n ) {\n multiline = true;\n }\n } else {\n for (i = 0, iz = expr.properties.length; i < iz; ++i) {\n property = expr.properties[i];\n if (\n property.type === Syntax.Property\n && !property.shorthand\n ) {\n multiline = true;\n break;\n }\n }\n }\n result = ['{', multiline ? newline : '' ];\n\n withIndent(function (indent) {\n var i, iz;\n for (i = 0, iz = expr.properties.length; i < iz; ++i) {\n result.push(multiline ? indent : '');\n result.push(that.generateExpression(expr.properties[i], Precedence.Sequence, E_TTT));\n if (i + 1 < iz) {\n result.push(',' + (multiline ? newline : space));\n }\n }\n });\n\n if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {\n result.push(newline);\n }\n result.push(multiline ? base : '');\n result.push('}');\n return result;\n },\n\n ThisExpression: function (expr, precedence, flags) {\n return 'this';\n },\n\n Super: function (expr, precedence, flags) {\n return 'super';\n },\n\n Identifier: function (expr, precedence, flags) {\n return generateIdentifier(expr);\n },\n\n ImportDefaultSpecifier: function (expr, precedence, flags) {\n return generateIdentifier(expr.id || expr.local);\n },\n\n ImportNamespaceSpecifier: function (expr, precedence, flags) {\n var result = ['*'];\n var id = expr.id || expr.local;\n if (id) {\n result.push(space + 'as' + noEmptySpace() + generateIdentifier(id));\n }\n return result;\n },\n\n ImportSpecifier: function (expr, precedence, flags) {\n var imported = expr.imported;\n var result = [ imported.name ];\n var local = expr.local;\n if (local && local.name !== imported.name) {\n result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(local));\n }\n return result;\n },\n\n ExportSpecifier: function (expr, precedence, flags) {\n var local = expr.local;\n var result = [ local.name ];\n var exported = expr.exported;\n if (exported && exported.name !== local.name) {\n result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(exported));\n }\n return result;\n },\n\n Literal: function (expr, precedence, flags) {\n var raw;\n if (expr.hasOwnProperty('raw') && parse && extra.raw) {\n try {\n raw = parse(expr.raw).body[0].expression;\n if (raw.type === Syntax.Literal) {\n if (raw.value === expr.value) {\n return expr.raw;\n }\n }\n } catch (e) {\n // not use raw property\n }\n }\n\n if (expr.regex) {\n return '/' + expr.regex.pattern + '/' + expr.regex.flags;\n }\n\n if (typeof expr.value === 'bigint') {\n return expr.value.toString() + 'n';\n }\n\n // `expr.value` can be null if `expr.bigint` exists. We need to check\n // `expr.bigint` first.\n if (expr.bigint) {\n return expr.bigint + 'n';\n }\n\n if (expr.value === null) {\n return 'null';\n }\n\n if (typeof expr.value === 'string') {\n return escapeString(expr.value);\n }\n\n if (typeof expr.value === 'number') {\n return generateNumber(expr.value);\n }\n\n if (typeof expr.value === 'boolean') {\n return expr.value ? 'true' : 'false';\n }\n\n return generateRegExp(expr.value);\n },\n\n GeneratorExpression: function (expr, precedence, flags) {\n return this.ComprehensionExpression(expr, precedence, flags);\n },\n\n ComprehensionExpression: function (expr, precedence, flags) {\n // GeneratorExpression should be parenthesized with (...), ComprehensionExpression with [...]\n // Due to https://bugzilla.mozilla.org/show_bug.cgi?id=883468 position of expr.body can differ in Spidermonkey and ES6\n\n var result, i, iz, fragment, that = this;\n result = (expr.type === Syntax.GeneratorExpression) ? ['('] : ['['];\n\n if (extra.moz.comprehensionExpressionStartsWithAssignment) {\n fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT);\n result.push(fragment);\n }\n\n if (expr.blocks) {\n withIndent(function () {\n for (i = 0, iz = expr.blocks.length; i < iz; ++i) {\n fragment = that.generateExpression(expr.blocks[i], Precedence.Sequence, E_TTT);\n if (i > 0 || extra.moz.comprehensionExpressionStartsWithAssignment) {\n result = join(result, fragment);\n } else {\n result.push(fragment);\n }\n }\n });\n }\n\n if (expr.filter) {\n result = join(result, 'if' + space);\n fragment = this.generateExpression(expr.filter, Precedence.Sequence, E_TTT);\n result = join(result, [ '(', fragment, ')' ]);\n }\n\n if (!extra.moz.comprehensionExpressionStartsWithAssignment) {\n fragment = this.generateExpression(expr.body, Precedence.Assignment, E_TTT);\n\n result = join(result, fragment);\n }\n\n result.push((expr.type === Syntax.GeneratorExpression) ? ')' : ']');\n return result;\n },\n\n ComprehensionBlock: function (expr, precedence, flags) {\n var fragment;\n if (expr.left.type === Syntax.VariableDeclaration) {\n fragment = [\n expr.left.kind, noEmptySpace(),\n this.generateStatement(expr.left.declarations[0], S_FFFF)\n ];\n } else {\n fragment = this.generateExpression(expr.left, Precedence.Call, E_TTT);\n }\n\n fragment = join(fragment, expr.of ? 'of' : 'in');\n fragment = join(fragment, this.generateExpression(expr.right, Precedence.Sequence, E_TTT));\n\n return [ 'for' + space + '(', fragment, ')' ];\n },\n\n SpreadElement: function (expr, precedence, flags) {\n return [\n '...',\n this.generateExpression(expr.argument, Precedence.Assignment, E_TTT)\n ];\n },\n\n TaggedTemplateExpression: function (expr, precedence, flags) {\n var itemFlags = E_TTF;\n if (!(flags & F_ALLOW_CALL)) {\n itemFlags = E_TFF;\n }\n var result = [\n this.generateExpression(expr.tag, Precedence.Call, itemFlags),\n this.generateExpression(expr.quasi, Precedence.Primary, E_FFT)\n ];\n return parenthesize(result, Precedence.TaggedTemplate, precedence);\n },\n\n TemplateElement: function (expr, precedence, flags) {\n // Don't use \"cooked\". Since tagged template can use raw template\n // representation. So if we do so, it breaks the script semantics.\n return expr.value.raw;\n },\n\n TemplateLiteral: function (expr, precedence, flags) {\n var result, i, iz;\n result = [ '`' ];\n for (i = 0, iz = expr.quasis.length; i < iz; ++i) {\n result.push(this.generateExpression(expr.quasis[i], Precedence.Primary, E_TTT));\n if (i + 1 < iz) {\n result.push('${' + space);\n result.push(this.generateExpression(expr.expressions[i], Precedence.Sequence, E_TTT));\n result.push(space + '}');\n }\n }\n result.push('`');\n return result;\n },\n\n ModuleSpecifier: function (expr, precedence, flags) {\n return this.Literal(expr, precedence, flags);\n },\n\n ImportExpression: function(expr, precedence, flag) {\n return parenthesize([\n 'import(',\n this.generateExpression(expr.source, Precedence.Assignment, E_TTT),\n ')'\n ], Precedence.Call, precedence);\n }\n };\n\n merge(CodeGenerator.prototype, CodeGenerator.Expression);\n\n CodeGenerator.prototype.generateExpression = function (expr, precedence, flags) {\n var result, type;\n\n type = expr.type || Syntax.Property;\n\n if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) {\n return generateVerbatim(expr, precedence);\n }\n\n result = this[type](expr, precedence, flags);\n\n\n if (extra.comment) {\n result = addComments(expr, result);\n }\n return toSourceNodeWhenNeeded(result, expr);\n };\n\n CodeGenerator.prototype.generateStatement = function (stmt, flags) {\n var result,\n fragment;\n\n result = this[stmt.type](stmt, flags);\n\n // Attach comments\n\n if (extra.comment) {\n result = addComments(stmt, result);\n }\n\n fragment = toSourceNodeWhenNeeded(result).toString();\n if (stmt.type === Syntax.Program && !safeConcatenation && newline === '' && fragment.charAt(fragment.length - 1) === '\\n') {\n result = sourceMap ? toSourceNodeWhenNeeded(result).replaceRight(/\\s+$/, '') : fragment.replace(/\\s+$/, '');\n }\n\n return toSourceNodeWhenNeeded(result, stmt);\n };\n\n function generateInternal(node) {\n var codegen;\n\n codegen = new CodeGenerator();\n if (isStatement(node)) {\n return codegen.generateStatement(node, S_TFFF);\n }\n\n if (isExpression(node)) {\n return codegen.generateExpression(node, Precedence.Sequence, E_TTT);\n }\n\n throw new Error('Unknown node type: ' + node.type);\n }\n\n function generate(node, options) {\n var defaultOptions = getDefaultOptions(), result, pair;\n\n if (options != null) {\n // Obsolete options\n //\n // `options.indent`\n // `options.base`\n //\n // Instead of them, we can use `option.format.indent`.\n if (typeof options.indent === 'string') {\n defaultOptions.format.indent.style = options.indent;\n }\n if (typeof options.base === 'number') {\n defaultOptions.format.indent.base = options.base;\n }\n options = updateDeeply(defaultOptions, options);\n indent = options.format.indent.style;\n if (typeof options.base === 'string') {\n base = options.base;\n } else {\n base = stringRepeat(indent, options.format.indent.base);\n }\n } else {\n options = defaultOptions;\n indent = options.format.indent.style;\n base = stringRepeat(indent, options.format.indent.base);\n }\n json = options.format.json;\n renumber = options.format.renumber;\n hexadecimal = json ? false : options.format.hexadecimal;\n quotes = json ? 'double' : options.format.quotes;\n escapeless = options.format.escapeless;\n newline = options.format.newline;\n space = options.format.space;\n if (options.format.compact) {\n newline = space = indent = base = '';\n }\n parentheses = options.format.parentheses;\n semicolons = options.format.semicolons;\n safeConcatenation = options.format.safeConcatenation;\n directive = options.directive;\n parse = json ? null : options.parse;\n sourceMap = options.sourceMap;\n sourceCode = options.sourceCode;\n preserveBlankLines = options.format.preserveBlankLines && sourceCode !== null;\n extra = options;\n\n if (sourceMap) {\n if (!exports.browser) {\n // We assume environment is node.js\n // And prevent from including source-map by browserify\n SourceNode = require('source-map').SourceNode;\n } else {\n SourceNode = global.sourceMap.SourceNode;\n }\n }\n\n result = generateInternal(node);\n\n if (!sourceMap) {\n pair = {code: result.toString(), map: null};\n return options.sourceMapWithCode ? pair : pair.code;\n }\n\n\n pair = result.toStringWithSourceMap({\n file: options.file,\n sourceRoot: options.sourceMapRoot\n });\n\n if (options.sourceContent) {\n pair.map.setSourceContent(options.sourceMap,\n options.sourceContent);\n }\n\n if (options.sourceMapWithCode) {\n return pair;\n }\n\n return pair.map.toString();\n }\n\n FORMAT_MINIFY = {\n indent: {\n style: '',\n base: 0\n },\n renumber: true,\n hexadecimal: true,\n quotes: 'auto',\n escapeless: true,\n compact: true,\n parentheses: false,\n semicolons: false\n };\n\n FORMAT_DEFAULTS = getDefaultOptions().format;\n\n exports.version = require('./package.json').version;\n exports.generate = generate;\n exports.attachComments = estraverse.attachComments;\n exports.Precedence = updateDeeply({}, Precedence);\n exports.browser = false;\n exports.FORMAT_MINIFY = FORMAT_MINIFY;\n exports.FORMAT_DEFAULTS = FORMAT_DEFAULTS;\n}());\n/* vim: set sw=4 ts=4 et tw=80 : */\n","(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. '&#123;'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. '&#x41;'\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. '&#x41;' 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;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Def = void 0;\nvar tslib_1 = require(\"tslib\");\nvar Op = Object.prototype;\nvar objToStr = Op.toString;\nvar hasOwn = Op.hasOwnProperty;\nvar BaseType = /** @class */ (function () {\n function BaseType() {\n }\n BaseType.prototype.assert = function (value, deep) {\n if (!this.check(value, deep)) {\n var str = shallowStringify(value);\n throw new Error(str + \" does not match type \" + this);\n }\n return true;\n };\n BaseType.prototype.arrayOf = function () {\n var elemType = this;\n return new ArrayType(elemType);\n };\n return BaseType;\n}());\nvar ArrayType = /** @class */ (function (_super) {\n tslib_1.__extends(ArrayType, _super);\n function ArrayType(elemType) {\n var _this = _super.call(this) || this;\n _this.elemType = elemType;\n _this.kind = \"ArrayType\";\n return _this;\n }\n ArrayType.prototype.toString = function () {\n return \"[\" + this.elemType + \"]\";\n };\n ArrayType.prototype.check = function (value, deep) {\n var _this = this;\n return Array.isArray(value) && value.every(function (elem) { return _this.elemType.check(elem, deep); });\n };\n return ArrayType;\n}(BaseType));\nvar IdentityType = /** @class */ (function (_super) {\n tslib_1.__extends(IdentityType, _super);\n function IdentityType(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.kind = \"IdentityType\";\n return _this;\n }\n IdentityType.prototype.toString = function () {\n return String(this.value);\n };\n IdentityType.prototype.check = function (value, deep) {\n var result = value === this.value;\n if (!result && typeof deep === \"function\") {\n deep(this, value);\n }\n return result;\n };\n return IdentityType;\n}(BaseType));\nvar ObjectType = /** @class */ (function (_super) {\n tslib_1.__extends(ObjectType, _super);\n function ObjectType(fields) {\n var _this = _super.call(this) || this;\n _this.fields = fields;\n _this.kind = \"ObjectType\";\n return _this;\n }\n ObjectType.prototype.toString = function () {\n return \"{ \" + this.fields.join(\", \") + \" }\";\n };\n ObjectType.prototype.check = function (value, deep) {\n return (objToStr.call(value) === objToStr.call({}) &&\n this.fields.every(function (field) {\n return field.type.check(value[field.name], deep);\n }));\n };\n return ObjectType;\n}(BaseType));\nvar OrType = /** @class */ (function (_super) {\n tslib_1.__extends(OrType, _super);\n function OrType(types) {\n var _this = _super.call(this) || this;\n _this.types = types;\n _this.kind = \"OrType\";\n return _this;\n }\n OrType.prototype.toString = function () {\n return this.types.join(\" | \");\n };\n OrType.prototype.check = function (value, deep) {\n return this.types.some(function (type) {\n return type.check(value, deep);\n });\n };\n return OrType;\n}(BaseType));\nvar PredicateType = /** @class */ (function (_super) {\n tslib_1.__extends(PredicateType, _super);\n function PredicateType(name, predicate) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this.predicate = predicate;\n _this.kind = \"PredicateType\";\n return _this;\n }\n PredicateType.prototype.toString = function () {\n return this.name;\n };\n PredicateType.prototype.check = function (value, deep) {\n var result = this.predicate(value, deep);\n if (!result && typeof deep === \"function\") {\n deep(this, value);\n }\n return result;\n };\n return PredicateType;\n}(BaseType));\nvar Def = /** @class */ (function () {\n function Def(type, typeName) {\n this.type = type;\n this.typeName = typeName;\n this.baseNames = [];\n this.ownFields = Object.create(null);\n // Includes own typeName. Populated during finalization.\n this.allSupertypes = Object.create(null);\n // Linear inheritance hierarchy. Populated during finalization.\n this.supertypeList = [];\n // Includes inherited fields.\n this.allFields = Object.create(null);\n // Non-hidden keys of allFields.\n this.fieldNames = [];\n // This property will be overridden as true by individual Def instances\n // when they are finalized.\n this.finalized = false;\n // False by default until .build(...) is called on an instance.\n this.buildable = false;\n this.buildParams = [];\n }\n Def.prototype.isSupertypeOf = function (that) {\n if (that instanceof Def) {\n if (this.finalized !== true ||\n that.finalized !== true) {\n throw new Error(\"\");\n }\n return hasOwn.call(that.allSupertypes, this.typeName);\n }\n else {\n throw new Error(that + \" is not a Def\");\n }\n };\n Def.prototype.checkAllFields = function (value, deep) {\n var allFields = this.allFields;\n if (this.finalized !== true) {\n throw new Error(\"\" + this.typeName);\n }\n function checkFieldByName(name) {\n var field = allFields[name];\n var type = field.type;\n var child = field.getValue(value);\n return type.check(child, deep);\n }\n return value !== null &&\n typeof value === \"object\" &&\n Object.keys(allFields).every(checkFieldByName);\n };\n Def.prototype.bases = function () {\n var supertypeNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n supertypeNames[_i] = arguments[_i];\n }\n var bases = this.baseNames;\n if (this.finalized) {\n if (supertypeNames.length !== bases.length) {\n throw new Error(\"\");\n }\n for (var i = 0; i < supertypeNames.length; i++) {\n if (supertypeNames[i] !== bases[i]) {\n throw new Error(\"\");\n }\n }\n return this;\n }\n supertypeNames.forEach(function (baseName) {\n // This indexOf lookup may be O(n), but the typical number of base\n // names is very small, and indexOf is a native Array method.\n if (bases.indexOf(baseName) < 0) {\n bases.push(baseName);\n }\n });\n return this; // For chaining.\n };\n return Def;\n}());\nexports.Def = Def;\nvar Field = /** @class */ (function () {\n function Field(name, type, defaultFn, hidden) {\n this.name = name;\n this.type = type;\n this.defaultFn = defaultFn;\n this.hidden = !!hidden;\n }\n Field.prototype.toString = function () {\n return JSON.stringify(this.name) + \": \" + this.type;\n };\n Field.prototype.getValue = function (obj) {\n var value = obj[this.name];\n if (typeof value !== \"undefined\") {\n return value;\n }\n if (typeof this.defaultFn === \"function\") {\n value = this.defaultFn.call(obj);\n }\n return value;\n };\n return Field;\n}());\nfunction shallowStringify(value) {\n if (Array.isArray(value)) {\n return \"[\" + value.map(shallowStringify).join(\", \") + \"]\";\n }\n if (value && typeof value === \"object\") {\n return \"{ \" + Object.keys(value).map(function (key) {\n return key + \": \" + value[key];\n }).join(\", \") + \" }\";\n }\n return JSON.stringify(value);\n}\nfunction typesPlugin(_fork) {\n var Type = {\n or: function () {\n var types = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n types[_i] = arguments[_i];\n }\n return new OrType(types.map(function (type) { return Type.from(type); }));\n },\n from: function (value, name) {\n if (value instanceof ArrayType ||\n value instanceof IdentityType ||\n value instanceof ObjectType ||\n value instanceof OrType ||\n value instanceof PredicateType) {\n return value;\n }\n // The Def type is used as a helper for constructing compound\n // interface types for AST nodes.\n if (value instanceof Def) {\n return value.type;\n }\n // Support [ElemType] syntax.\n if (isArray.check(value)) {\n if (value.length !== 1) {\n throw new Error(\"only one element type is permitted for typed arrays\");\n }\n return new ArrayType(Type.from(value[0]));\n }\n // Support { someField: FieldType, ... } syntax.\n if (isObject.check(value)) {\n return new ObjectType(Object.keys(value).map(function (name) {\n return new Field(name, Type.from(value[name], name));\n }));\n }\n if (typeof value === \"function\") {\n var bicfIndex = builtInCtorFns.indexOf(value);\n if (bicfIndex >= 0) {\n return builtInCtorTypes[bicfIndex];\n }\n if (typeof name !== \"string\") {\n throw new Error(\"missing name\");\n }\n return new PredicateType(name, value);\n }\n // As a last resort, toType returns a type that matches any value that\n // is === from. This is primarily useful for literal values like\n // toType(null), but it has the additional advantage of allowing\n // toType to be a total function.\n return new IdentityType(value);\n },\n // Define a type whose name is registered in a namespace (the defCache) so\n // that future definitions will return the same type given the same name.\n // In particular, this system allows for circular and forward definitions.\n // The Def object d returned from Type.def may be used to configure the\n // type d.type by calling methods such as d.bases, d.build, and d.field.\n def: function (typeName) {\n return hasOwn.call(defCache, typeName)\n ? defCache[typeName]\n : defCache[typeName] = new DefImpl(typeName);\n },\n hasDef: function (typeName) {\n return hasOwn.call(defCache, typeName);\n }\n };\n var builtInCtorFns = [];\n var builtInCtorTypes = [];\n function defBuiltInType(name, example) {\n var objStr = objToStr.call(example);\n var type = new PredicateType(name, function (value) { return objToStr.call(value) === objStr; });\n if (example && typeof example.constructor === \"function\") {\n builtInCtorFns.push(example.constructor);\n builtInCtorTypes.push(type);\n }\n return type;\n }\n // These types check the underlying [[Class]] attribute of the given\n // value, rather than using the problematic typeof operator. Note however\n // that no subtyping is considered; so, for instance, isObject.check\n // returns false for [], /./, new Date, and null.\n var isString = defBuiltInType(\"string\", \"truthy\");\n var isFunction = defBuiltInType(\"function\", function () { });\n var isArray = defBuiltInType(\"array\", []);\n var isObject = defBuiltInType(\"object\", {});\n var isRegExp = defBuiltInType(\"RegExp\", /./);\n var isDate = defBuiltInType(\"Date\", new Date());\n var isNumber = defBuiltInType(\"number\", 3);\n var isBoolean = defBuiltInType(\"boolean\", true);\n var isNull = defBuiltInType(\"null\", null);\n var isUndefined = defBuiltInType(\"undefined\", undefined);\n var builtInTypes = {\n string: isString,\n function: isFunction,\n array: isArray,\n object: isObject,\n RegExp: isRegExp,\n Date: isDate,\n number: isNumber,\n boolean: isBoolean,\n null: isNull,\n undefined: isUndefined,\n };\n // In order to return the same Def instance every time Type.def is called\n // with a particular name, those instances need to be stored in a cache.\n var defCache = Object.create(null);\n function defFromValue(value) {\n if (value && typeof value === \"object\") {\n var type = value.type;\n if (typeof type === \"string\" &&\n hasOwn.call(defCache, type)) {\n var d = defCache[type];\n if (d.finalized) {\n return d;\n }\n }\n }\n return null;\n }\n var DefImpl = /** @class */ (function (_super) {\n tslib_1.__extends(DefImpl, _super);\n function DefImpl(typeName) {\n var _this = _super.call(this, new PredicateType(typeName, function (value, deep) { return _this.check(value, deep); }), typeName) || this;\n return _this;\n }\n DefImpl.prototype.check = function (value, deep) {\n if (this.finalized !== true) {\n throw new Error(\"prematurely checking unfinalized type \" + this.typeName);\n }\n // A Def type can only match an object value.\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n var vDef = defFromValue(value);\n if (!vDef) {\n // If we couldn't infer the Def associated with the given value,\n // and we expected it to be a SourceLocation or a Position, it was\n // probably just missing a \"type\" field (because Esprima does not\n // assign a type property to such nodes). Be optimistic and let\n // this.checkAllFields make the final decision.\n if (this.typeName === \"SourceLocation\" ||\n this.typeName === \"Position\") {\n return this.checkAllFields(value, deep);\n }\n // Calling this.checkAllFields for any other type of node is both\n // bad for performance and way too forgiving.\n return false;\n }\n // If checking deeply and vDef === this, then we only need to call\n // checkAllFields once. Calling checkAllFields is too strict when deep\n // is false, because then we only care about this.isSupertypeOf(vDef).\n if (deep && vDef === this) {\n return this.checkAllFields(value, deep);\n }\n // In most cases we rely exclusively on isSupertypeOf to make O(1)\n // subtyping determinations. This suffices in most situations outside\n // of unit tests, since interface conformance is checked whenever new\n // instances are created using builder functions.\n if (!this.isSupertypeOf(vDef)) {\n return false;\n }\n // The exception is when deep is true; then, we recursively check all\n // fields.\n if (!deep) {\n return true;\n }\n // Use the more specific Def (vDef) to perform the deep check, but\n // shallow-check fields defined by the less specific Def (this).\n return vDef.checkAllFields(value, deep)\n && this.checkAllFields(value, false);\n };\n DefImpl.prototype.build = function () {\n var _this = this;\n var buildParams = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n buildParams[_i] = arguments[_i];\n }\n // Calling Def.prototype.build multiple times has the effect of merely\n // redefining this property.\n this.buildParams = buildParams;\n if (this.buildable) {\n // If this Def is already buildable, update self.buildParams and\n // continue using the old builder function.\n return this;\n }\n // Every buildable type will have its \"type\" field filled in\n // automatically. This includes types that are not subtypes of Node,\n // like SourceLocation, but that seems harmless (TODO?).\n this.field(\"type\", String, function () { return _this.typeName; });\n // Override Dp.buildable for this Def instance.\n this.buildable = true;\n var addParam = function (built, param, arg, isArgAvailable) {\n if (hasOwn.call(built, param))\n return;\n var all = _this.allFields;\n if (!hasOwn.call(all, param)) {\n throw new Error(\"\" + param);\n }\n var field = all[param];\n var type = field.type;\n var value;\n if (isArgAvailable) {\n value = arg;\n }\n else if (field.defaultFn) {\n // Expose the partially-built object to the default\n // function as its `this` object.\n value = field.defaultFn.call(built);\n }\n else {\n var message = \"no value or default function given for field \" +\n JSON.stringify(param) + \" of \" + _this.typeName + \"(\" +\n _this.buildParams.map(function (name) {\n return all[name];\n }).join(\", \") + \")\";\n throw new Error(message);\n }\n if (!type.check(value)) {\n throw new Error(shallowStringify(value) +\n \" does not match field \" + field +\n \" of type \" + _this.typeName);\n }\n built[param] = value;\n };\n // Calling the builder function will construct an instance of the Def,\n // with positional arguments mapped to the fields original passed to .build.\n // If not enough arguments are provided, the default value for the remaining fields\n // will be used.\n var builder = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var argc = args.length;\n if (!_this.finalized) {\n throw new Error(\"attempting to instantiate unfinalized type \" +\n _this.typeName);\n }\n var built = Object.create(nodePrototype);\n _this.buildParams.forEach(function (param, i) {\n if (i < argc) {\n addParam(built, param, args[i], true);\n }\n else {\n addParam(built, param, null, false);\n }\n });\n Object.keys(_this.allFields).forEach(function (param) {\n // Use the default value.\n addParam(built, param, null, false);\n });\n // Make sure that the \"type\" field was filled automatically.\n if (built.type !== _this.typeName) {\n throw new Error(\"\");\n }\n return built;\n };\n // Calling .from on the builder function will construct an instance of the Def,\n // using field values from the passed object. For fields missing from the passed object,\n // their default value will be used.\n builder.from = function (obj) {\n if (!_this.finalized) {\n throw new Error(\"attempting to instantiate unfinalized type \" +\n _this.typeName);\n }\n var built = Object.create(nodePrototype);\n Object.keys(_this.allFields).forEach(function (param) {\n if (hasOwn.call(obj, param)) {\n addParam(built, param, obj[param], true);\n }\n else {\n addParam(built, param, null, false);\n }\n });\n // Make sure that the \"type\" field was filled automatically.\n if (built.type !== _this.typeName) {\n throw new Error(\"\");\n }\n return built;\n };\n Object.defineProperty(builders, getBuilderName(this.typeName), {\n enumerable: true,\n value: builder\n });\n return this;\n };\n // The reason fields are specified using .field(...) instead of an object\n // literal syntax is somewhat subtle: the object literal syntax would\n // support only one key and one value, but with .field(...) we can pass\n // any number of arguments to specify the field.\n DefImpl.prototype.field = function (name, type, defaultFn, hidden) {\n if (this.finalized) {\n console.error(\"Ignoring attempt to redefine field \" +\n JSON.stringify(name) + \" of finalized type \" +\n JSON.stringify(this.typeName));\n return this;\n }\n this.ownFields[name] = new Field(name, Type.from(type), defaultFn, hidden);\n return this; // For chaining.\n };\n DefImpl.prototype.finalize = function () {\n var _this = this;\n // It's not an error to finalize a type more than once, but only the\n // first call to .finalize does anything.\n if (!this.finalized) {\n var allFields = this.allFields;\n var allSupertypes = this.allSupertypes;\n this.baseNames.forEach(function (name) {\n var def = defCache[name];\n if (def instanceof Def) {\n def.finalize();\n extend(allFields, def.allFields);\n extend(allSupertypes, def.allSupertypes);\n }\n else {\n var message = \"unknown supertype name \" +\n JSON.stringify(name) +\n \" for subtype \" +\n JSON.stringify(_this.typeName);\n throw new Error(message);\n }\n });\n // TODO Warn if fields are overridden with incompatible types.\n extend(allFields, this.ownFields);\n allSupertypes[this.typeName] = this;\n this.fieldNames.length = 0;\n for (var fieldName in allFields) {\n if (hasOwn.call(allFields, fieldName) &&\n !allFields[fieldName].hidden) {\n this.fieldNames.push(fieldName);\n }\n }\n // Types are exported only once they have been finalized.\n Object.defineProperty(namedTypes, this.typeName, {\n enumerable: true,\n value: this.type\n });\n this.finalized = true;\n // A linearization of the inheritance hierarchy.\n populateSupertypeList(this.typeName, this.supertypeList);\n if (this.buildable &&\n this.supertypeList.lastIndexOf(\"Expression\") >= 0) {\n wrapExpressionBuilderWithStatement(this.typeName);\n }\n }\n };\n return DefImpl;\n }(Def));\n // Note that the list returned by this function is a copy of the internal\n // supertypeList, *without* the typeName itself as the first element.\n function getSupertypeNames(typeName) {\n if (!hasOwn.call(defCache, typeName)) {\n throw new Error(\"\");\n }\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\");\n }\n return d.supertypeList.slice(1);\n }\n // Returns an object mapping from every known type in the defCache to the\n // most specific supertype whose name is an own property of the candidates\n // object.\n function computeSupertypeLookupTable(candidates) {\n var table = {};\n var typeNames = Object.keys(defCache);\n var typeNameCount = typeNames.length;\n for (var i = 0; i < typeNameCount; ++i) {\n var typeName = typeNames[i];\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\" + typeName);\n }\n for (var j = 0; j < d.supertypeList.length; ++j) {\n var superTypeName = d.supertypeList[j];\n if (hasOwn.call(candidates, superTypeName)) {\n table[typeName] = superTypeName;\n break;\n }\n }\n }\n return table;\n }\n var builders = Object.create(null);\n // This object is used as prototype for any node created by a builder.\n var nodePrototype = {};\n // Call this function to define a new method to be shared by all AST\n // nodes. The replaced method (if any) is returned for easy wrapping.\n function defineMethod(name, func) {\n var old = nodePrototype[name];\n // Pass undefined as func to delete nodePrototype[name].\n if (isUndefined.check(func)) {\n delete nodePrototype[name];\n }\n else {\n isFunction.assert(func);\n Object.defineProperty(nodePrototype, name, {\n enumerable: true,\n configurable: true,\n value: func\n });\n }\n return old;\n }\n function getBuilderName(typeName) {\n return typeName.replace(/^[A-Z]+/, function (upperCasePrefix) {\n var len = upperCasePrefix.length;\n switch (len) {\n case 0: return \"\";\n // If there's only one initial capital letter, just lower-case it.\n case 1: return upperCasePrefix.toLowerCase();\n default:\n // If there's more than one initial capital letter, lower-case\n // all but the last one, so that XMLDefaultDeclaration (for\n // example) becomes xmlDefaultDeclaration.\n return upperCasePrefix.slice(0, len - 1).toLowerCase() +\n upperCasePrefix.charAt(len - 1);\n }\n });\n }\n function getStatementBuilderName(typeName) {\n typeName = getBuilderName(typeName);\n return typeName.replace(/(Expression)?$/, \"Statement\");\n }\n var namedTypes = {};\n // Like Object.keys, but aware of what fields each AST type should have.\n function getFieldNames(object) {\n var d = defFromValue(object);\n if (d) {\n return d.fieldNames.slice(0);\n }\n if (\"type\" in object) {\n throw new Error(\"did not recognize object of type \" +\n JSON.stringify(object.type));\n }\n return Object.keys(object);\n }\n // Get the value of an object property, taking object.type and default\n // functions into account.\n function getFieldValue(object, fieldName) {\n var d = defFromValue(object);\n if (d) {\n var field = d.allFields[fieldName];\n if (field) {\n return field.getValue(object);\n }\n }\n return object && object[fieldName];\n }\n // Iterate over all defined fields of an object, including those missing\n // or undefined, passing each field name and effective value (as returned\n // by getFieldValue) to the callback. If the object has no corresponding\n // Def, the callback will never be called.\n function eachField(object, callback, context) {\n getFieldNames(object).forEach(function (name) {\n callback.call(this, name, getFieldValue(object, name));\n }, context);\n }\n // Similar to eachField, except that iteration stops as soon as the\n // callback returns a truthy value. Like Array.prototype.some, the final\n // result is either true or false to indicates whether the callback\n // returned true for any element or not.\n function someField(object, callback, context) {\n return getFieldNames(object).some(function (name) {\n return callback.call(this, name, getFieldValue(object, name));\n }, context);\n }\n // Adds an additional builder for Expression subtypes\n // that wraps the built Expression in an ExpressionStatements.\n function wrapExpressionBuilderWithStatement(typeName) {\n var wrapperName = getStatementBuilderName(typeName);\n // skip if the builder already exists\n if (builders[wrapperName])\n return;\n // the builder function to wrap with builders.ExpressionStatement\n var wrapped = builders[getBuilderName(typeName)];\n // skip if there is nothing to wrap\n if (!wrapped)\n return;\n var builder = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return builders.expressionStatement(wrapped.apply(builders, args));\n };\n builder.from = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return builders.expressionStatement(wrapped.from.apply(builders, args));\n };\n builders[wrapperName] = builder;\n }\n function populateSupertypeList(typeName, list) {\n list.length = 0;\n list.push(typeName);\n var lastSeen = Object.create(null);\n for (var pos = 0; pos < list.length; ++pos) {\n typeName = list[pos];\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\");\n }\n // If we saw typeName earlier in the breadth-first traversal,\n // delete the last-seen occurrence.\n if (hasOwn.call(lastSeen, typeName)) {\n delete list[lastSeen[typeName]];\n }\n // Record the new index of the last-seen occurrence of typeName.\n lastSeen[typeName] = pos;\n // Enqueue the base names of this type.\n list.push.apply(list, d.baseNames);\n }\n // Compaction loop to remove array holes.\n for (var to = 0, from = to, len = list.length; from < len; ++from) {\n if (hasOwn.call(list, from)) {\n list[to++] = list[from];\n }\n }\n list.length = to;\n }\n function extend(into, from) {\n Object.keys(from).forEach(function (name) {\n into[name] = from[name];\n });\n return into;\n }\n function finalize() {\n Object.keys(defCache).forEach(function (name) {\n defCache[name].finalize();\n });\n }\n return {\n Type: Type,\n builtInTypes: builtInTypes,\n getSupertypeNames: getSupertypeNames,\n computeSupertypeLookupTable: computeSupertypeLookupTable,\n builders: builders,\n defineMethod: defineMethod,\n getBuilderName: getBuilderName,\n getStatementBuilderName: getStatementBuilderName,\n namedTypes: namedTypes,\n getFieldNames: getFieldNames,\n getFieldValue: getFieldValue,\n eachField: eachField,\n someField: someField,\n finalize: finalize,\n };\n}\nexports.default = typesPlugin;\n;\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar Op = Object.prototype;\nvar hasOwn = Op.hasOwnProperty;\nfunction pathPlugin(fork) {\n var types = fork.use(types_1.default);\n var isArray = types.builtInTypes.array;\n var isNumber = types.builtInTypes.number;\n var Path = function Path(value, parentPath, name) {\n if (!(this instanceof Path)) {\n throw new Error(\"Path constructor cannot be invoked without 'new'\");\n }\n if (parentPath) {\n if (!(parentPath instanceof Path)) {\n throw new Error(\"\");\n }\n }\n else {\n parentPath = null;\n name = null;\n }\n // The value encapsulated by this Path, generally equal to\n // parentPath.value[name] if we have a parentPath.\n this.value = value;\n // The immediate parent Path of this Path.\n this.parentPath = parentPath;\n // The name of the property of parentPath.value through which this\n // Path's value was reached.\n this.name = name;\n // Calling path.get(\"child\") multiple times always returns the same\n // child Path object, for both performance and consistency reasons.\n this.__childCache = null;\n };\n var Pp = Path.prototype;\n function getChildCache(path) {\n // Lazily create the child cache. This also cheapens cache\n // invalidation, since you can just reset path.__childCache to null.\n return path.__childCache || (path.__childCache = Object.create(null));\n }\n function getChildPath(path, name) {\n var cache = getChildCache(path);\n var actualChildValue = path.getValueProperty(name);\n var childPath = cache[name];\n if (!hasOwn.call(cache, name) ||\n // Ensure consistency between cache and reality.\n childPath.value !== actualChildValue) {\n childPath = cache[name] = new path.constructor(actualChildValue, path, name);\n }\n return childPath;\n }\n // This method is designed to be overridden by subclasses that need to\n // handle missing properties, etc.\n Pp.getValueProperty = function getValueProperty(name) {\n return this.value[name];\n };\n Pp.get = function get() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n var path = this;\n var count = names.length;\n for (var i = 0; i < count; ++i) {\n path = getChildPath(path, names[i]);\n }\n return path;\n };\n Pp.each = function each(callback, context) {\n var childPaths = [];\n var len = this.value.length;\n var i = 0;\n // Collect all the original child paths before invoking the callback.\n for (var i = 0; i < len; ++i) {\n if (hasOwn.call(this.value, i)) {\n childPaths[i] = this.get(i);\n }\n }\n // Invoke the callback on just the original child paths, regardless of\n // any modifications made to the array by the callback. I chose these\n // semantics over cleverly invoking the callback on new elements because\n // this way is much easier to reason about.\n context = context || this;\n for (i = 0; i < len; ++i) {\n if (hasOwn.call(childPaths, i)) {\n callback.call(context, childPaths[i]);\n }\n }\n };\n Pp.map = function map(callback, context) {\n var result = [];\n this.each(function (childPath) {\n result.push(callback.call(this, childPath));\n }, context);\n return result;\n };\n Pp.filter = function filter(callback, context) {\n var result = [];\n this.each(function (childPath) {\n if (callback.call(this, childPath)) {\n result.push(childPath);\n }\n }, context);\n return result;\n };\n function emptyMoves() { }\n function getMoves(path, offset, start, end) {\n isArray.assert(path.value);\n if (offset === 0) {\n return emptyMoves;\n }\n var length = path.value.length;\n if (length < 1) {\n return emptyMoves;\n }\n var argc = arguments.length;\n if (argc === 2) {\n start = 0;\n end = length;\n }\n else if (argc === 3) {\n start = Math.max(start, 0);\n end = length;\n }\n else {\n start = Math.max(start, 0);\n end = Math.min(end, length);\n }\n isNumber.assert(start);\n isNumber.assert(end);\n var moves = Object.create(null);\n var cache = getChildCache(path);\n for (var i = start; i < end; ++i) {\n if (hasOwn.call(path.value, i)) {\n var childPath = path.get(i);\n if (childPath.name !== i) {\n throw new Error(\"\");\n }\n var newIndex = i + offset;\n childPath.name = newIndex;\n moves[newIndex] = childPath;\n delete cache[i];\n }\n }\n delete cache.length;\n return function () {\n for (var newIndex in moves) {\n var childPath = moves[newIndex];\n if (childPath.name !== +newIndex) {\n throw new Error(\"\");\n }\n cache[newIndex] = childPath;\n path.value[newIndex] = childPath.value;\n }\n };\n }\n Pp.shift = function shift() {\n var move = getMoves(this, -1);\n var result = this.value.shift();\n move();\n return result;\n };\n Pp.unshift = function unshift() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var move = getMoves(this, args.length);\n var result = this.value.unshift.apply(this.value, args);\n move();\n return result;\n };\n Pp.push = function push() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n isArray.assert(this.value);\n delete getChildCache(this).length;\n return this.value.push.apply(this.value, args);\n };\n Pp.pop = function pop() {\n isArray.assert(this.value);\n var cache = getChildCache(this);\n delete cache[this.value.length - 1];\n delete cache.length;\n return this.value.pop();\n };\n Pp.insertAt = function insertAt(index) {\n var argc = arguments.length;\n var move = getMoves(this, argc - 1, index);\n if (move === emptyMoves && argc <= 1) {\n return this;\n }\n index = Math.max(index, 0);\n for (var i = 1; i < argc; ++i) {\n this.value[index + i - 1] = arguments[i];\n }\n move();\n return this;\n };\n Pp.insertBefore = function insertBefore() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var pp = this.parentPath;\n var argc = args.length;\n var insertAtArgs = [this.name];\n for (var i = 0; i < argc; ++i) {\n insertAtArgs.push(args[i]);\n }\n return pp.insertAt.apply(pp, insertAtArgs);\n };\n Pp.insertAfter = function insertAfter() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var pp = this.parentPath;\n var argc = args.length;\n var insertAtArgs = [this.name + 1];\n for (var i = 0; i < argc; ++i) {\n insertAtArgs.push(args[i]);\n }\n return pp.insertAt.apply(pp, insertAtArgs);\n };\n function repairRelationshipWithParent(path) {\n if (!(path instanceof Path)) {\n throw new Error(\"\");\n }\n var pp = path.parentPath;\n if (!pp) {\n // Orphan paths have no relationship to repair.\n return path;\n }\n var parentValue = pp.value;\n var parentCache = getChildCache(pp);\n // Make sure parentCache[path.name] is populated.\n if (parentValue[path.name] === path.value) {\n parentCache[path.name] = path;\n }\n else if (isArray.check(parentValue)) {\n // Something caused path.name to become out of date, so attempt to\n // recover by searching for path.value in parentValue.\n var i = parentValue.indexOf(path.value);\n if (i >= 0) {\n parentCache[path.name = i] = path;\n }\n }\n else {\n // If path.value disagrees with parentValue[path.name], and\n // path.name is not an array index, let path.value become the new\n // parentValue[path.name] and update parentCache accordingly.\n parentValue[path.name] = path.value;\n parentCache[path.name] = path;\n }\n if (parentValue[path.name] !== path.value) {\n throw new Error(\"\");\n }\n if (path.parentPath.get(path.name) !== path) {\n throw new Error(\"\");\n }\n return path;\n }\n Pp.replace = function replace(replacement) {\n var results = [];\n var parentValue = this.parentPath.value;\n var parentCache = getChildCache(this.parentPath);\n var count = arguments.length;\n repairRelationshipWithParent(this);\n if (isArray.check(parentValue)) {\n var originalLength = parentValue.length;\n var move = getMoves(this.parentPath, count - 1, this.name + 1);\n var spliceArgs = [this.name, 1];\n for (var i = 0; i < count; ++i) {\n spliceArgs.push(arguments[i]);\n }\n var splicedOut = parentValue.splice.apply(parentValue, spliceArgs);\n if (splicedOut[0] !== this.value) {\n throw new Error(\"\");\n }\n if (parentValue.length !== (originalLength - 1 + count)) {\n throw new Error(\"\");\n }\n move();\n if (count === 0) {\n delete this.value;\n delete parentCache[this.name];\n this.__childCache = null;\n }\n else {\n if (parentValue[this.name] !== replacement) {\n throw new Error(\"\");\n }\n if (this.value !== replacement) {\n this.value = replacement;\n this.__childCache = null;\n }\n for (i = 0; i < count; ++i) {\n results.push(this.parentPath.get(this.name + i));\n }\n if (results[0] !== this) {\n throw new Error(\"\");\n }\n }\n }\n else if (count === 1) {\n if (this.value !== replacement) {\n this.__childCache = null;\n }\n this.value = parentValue[this.name] = replacement;\n results.push(this);\n }\n else if (count === 0) {\n delete parentValue[this.name];\n delete this.value;\n this.__childCache = null;\n // Leave this path cached as parentCache[this.name], even though\n // it no longer has a value defined.\n }\n else {\n throw new Error(\"Could not replace path\");\n }\n return results;\n };\n return Path;\n}\nexports.default = pathPlugin;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction scopePlugin(fork) {\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var namedTypes = types.namedTypes;\n var Node = namedTypes.Node;\n var Expression = namedTypes.Expression;\n var isArray = types.builtInTypes.array;\n var b = types.builders;\n var Scope = function Scope(path, parentScope) {\n if (!(this instanceof Scope)) {\n throw new Error(\"Scope constructor cannot be invoked without 'new'\");\n }\n ScopeType.assert(path.value);\n var depth;\n if (parentScope) {\n if (!(parentScope instanceof Scope)) {\n throw new Error(\"\");\n }\n depth = parentScope.depth + 1;\n }\n else {\n parentScope = null;\n depth = 0;\n }\n Object.defineProperties(this, {\n path: { value: path },\n node: { value: path.value },\n isGlobal: { value: !parentScope, enumerable: true },\n depth: { value: depth },\n parent: { value: parentScope },\n bindings: { value: {} },\n types: { value: {} },\n });\n };\n var scopeTypes = [\n // Program nodes introduce global scopes.\n namedTypes.Program,\n // Function is the supertype of FunctionExpression,\n // FunctionDeclaration, ArrowExpression, etc.\n namedTypes.Function,\n // In case you didn't know, the caught parameter shadows any variable\n // of the same name in an outer scope.\n namedTypes.CatchClause\n ];\n var ScopeType = Type.or.apply(Type, scopeTypes);\n Scope.isEstablishedBy = function (node) {\n return ScopeType.check(node);\n };\n var Sp = Scope.prototype;\n // Will be overridden after an instance lazily calls scanScope.\n Sp.didScan = false;\n Sp.declares = function (name) {\n this.scan();\n return hasOwn.call(this.bindings, name);\n };\n Sp.declaresType = function (name) {\n this.scan();\n return hasOwn.call(this.types, name);\n };\n Sp.declareTemporary = function (prefix) {\n if (prefix) {\n if (!/^[a-z$_]/i.test(prefix)) {\n throw new Error(\"\");\n }\n }\n else {\n prefix = \"t$\";\n }\n // Include this.depth in the name to make sure the name does not\n // collide with any variables in nested/enclosing scopes.\n prefix += this.depth.toString(36) + \"$\";\n this.scan();\n var index = 0;\n while (this.declares(prefix + index)) {\n ++index;\n }\n var name = prefix + index;\n return this.bindings[name] = types.builders.identifier(name);\n };\n Sp.injectTemporary = function (identifier, init) {\n identifier || (identifier = this.declareTemporary());\n var bodyPath = this.path.get(\"body\");\n if (namedTypes.BlockStatement.check(bodyPath.value)) {\n bodyPath = bodyPath.get(\"body\");\n }\n bodyPath.unshift(b.variableDeclaration(\"var\", [b.variableDeclarator(identifier, init || null)]));\n return identifier;\n };\n Sp.scan = function (force) {\n if (force || !this.didScan) {\n for (var name in this.bindings) {\n // Empty out this.bindings, just in cases.\n delete this.bindings[name];\n }\n scanScope(this.path, this.bindings, this.types);\n this.didScan = true;\n }\n };\n Sp.getBindings = function () {\n this.scan();\n return this.bindings;\n };\n Sp.getTypes = function () {\n this.scan();\n return this.types;\n };\n function scanScope(path, bindings, scopeTypes) {\n var node = path.value;\n ScopeType.assert(node);\n if (namedTypes.CatchClause.check(node)) {\n // A catch clause establishes a new scope but the only variable\n // bound in that scope is the catch parameter. Any other\n // declarations create bindings in the outer scope.\n var param = path.get(\"param\");\n if (param.value) {\n addPattern(param, bindings);\n }\n }\n else {\n recursiveScanScope(path, bindings, scopeTypes);\n }\n }\n function recursiveScanScope(path, bindings, scopeTypes) {\n var node = path.value;\n if (path.parent &&\n namedTypes.FunctionExpression.check(path.parent.node) &&\n path.parent.node.id) {\n addPattern(path.parent.get(\"id\"), bindings);\n }\n if (!node) {\n // None of the remaining cases matter if node is falsy.\n }\n else if (isArray.check(node)) {\n path.each(function (childPath) {\n recursiveScanChild(childPath, bindings, scopeTypes);\n });\n }\n else if (namedTypes.Function.check(node)) {\n path.get(\"params\").each(function (paramPath) {\n addPattern(paramPath, bindings);\n });\n recursiveScanChild(path.get(\"body\"), bindings, scopeTypes);\n }\n else if ((namedTypes.TypeAlias && namedTypes.TypeAlias.check(node)) ||\n (namedTypes.InterfaceDeclaration && namedTypes.InterfaceDeclaration.check(node)) ||\n (namedTypes.TSTypeAliasDeclaration && namedTypes.TSTypeAliasDeclaration.check(node)) ||\n (namedTypes.TSInterfaceDeclaration && namedTypes.TSInterfaceDeclaration.check(node))) {\n addTypePattern(path.get(\"id\"), scopeTypes);\n }\n else if (namedTypes.VariableDeclarator.check(node)) {\n addPattern(path.get(\"id\"), bindings);\n recursiveScanChild(path.get(\"init\"), bindings, scopeTypes);\n }\n else if (node.type === \"ImportSpecifier\" ||\n node.type === \"ImportNamespaceSpecifier\" ||\n node.type === \"ImportDefaultSpecifier\") {\n addPattern(\n // Esprima used to use the .name field to refer to the local\n // binding identifier for ImportSpecifier nodes, but .id for\n // ImportNamespaceSpecifier and ImportDefaultSpecifier nodes.\n // ESTree/Acorn/ESpree use .local for all three node types.\n path.get(node.local ? \"local\" :\n node.name ? \"name\" : \"id\"), bindings);\n }\n else if (Node.check(node) && !Expression.check(node)) {\n types.eachField(node, function (name, child) {\n var childPath = path.get(name);\n if (!pathHasValue(childPath, child)) {\n throw new Error(\"\");\n }\n recursiveScanChild(childPath, bindings, scopeTypes);\n });\n }\n }\n function pathHasValue(path, value) {\n if (path.value === value) {\n return true;\n }\n // Empty arrays are probably produced by defaults.emptyArray, in which\n // case is makes sense to regard them as equivalent, if not ===.\n if (Array.isArray(path.value) &&\n path.value.length === 0 &&\n Array.isArray(value) &&\n value.length === 0) {\n return true;\n }\n return false;\n }\n function recursiveScanChild(path, bindings, scopeTypes) {\n var node = path.value;\n if (!node || Expression.check(node)) {\n // Ignore falsy values and Expressions.\n }\n else if (namedTypes.FunctionDeclaration.check(node) &&\n node.id !== null) {\n addPattern(path.get(\"id\"), bindings);\n }\n else if (namedTypes.ClassDeclaration &&\n namedTypes.ClassDeclaration.check(node)) {\n addPattern(path.get(\"id\"), bindings);\n }\n else if (ScopeType.check(node)) {\n if (namedTypes.CatchClause.check(node) &&\n // TODO Broaden this to accept any pattern.\n namedTypes.Identifier.check(node.param)) {\n var catchParamName = node.param.name;\n var hadBinding = hasOwn.call(bindings, catchParamName);\n // Any declarations that occur inside the catch body that do\n // not have the same name as the catch parameter should count\n // as bindings in the outer scope.\n recursiveScanScope(path.get(\"body\"), bindings, scopeTypes);\n // If a new binding matching the catch parameter name was\n // created while scanning the catch body, ignore it because it\n // actually refers to the catch parameter and not the outer\n // scope that we're currently scanning.\n if (!hadBinding) {\n delete bindings[catchParamName];\n }\n }\n }\n else {\n recursiveScanScope(path, bindings, scopeTypes);\n }\n }\n function addPattern(patternPath, bindings) {\n var pattern = patternPath.value;\n namedTypes.Pattern.assert(pattern);\n if (namedTypes.Identifier.check(pattern)) {\n if (hasOwn.call(bindings, pattern.name)) {\n bindings[pattern.name].push(patternPath);\n }\n else {\n bindings[pattern.name] = [patternPath];\n }\n }\n else if (namedTypes.AssignmentPattern &&\n namedTypes.AssignmentPattern.check(pattern)) {\n addPattern(patternPath.get('left'), bindings);\n }\n else if (namedTypes.ObjectPattern &&\n namedTypes.ObjectPattern.check(pattern)) {\n patternPath.get('properties').each(function (propertyPath) {\n var property = propertyPath.value;\n if (namedTypes.Pattern.check(property)) {\n addPattern(propertyPath, bindings);\n }\n else if (namedTypes.Property.check(property)) {\n addPattern(propertyPath.get('value'), bindings);\n }\n else if (namedTypes.SpreadProperty &&\n namedTypes.SpreadProperty.check(property)) {\n addPattern(propertyPath.get('argument'), bindings);\n }\n });\n }\n else if (namedTypes.ArrayPattern &&\n namedTypes.ArrayPattern.check(pattern)) {\n patternPath.get('elements').each(function (elementPath) {\n var element = elementPath.value;\n if (namedTypes.Pattern.check(element)) {\n addPattern(elementPath, bindings);\n }\n else if (namedTypes.SpreadElement &&\n namedTypes.SpreadElement.check(element)) {\n addPattern(elementPath.get(\"argument\"), bindings);\n }\n });\n }\n else if (namedTypes.PropertyPattern &&\n namedTypes.PropertyPattern.check(pattern)) {\n addPattern(patternPath.get('pattern'), bindings);\n }\n else if ((namedTypes.SpreadElementPattern &&\n namedTypes.SpreadElementPattern.check(pattern)) ||\n (namedTypes.SpreadPropertyPattern &&\n namedTypes.SpreadPropertyPattern.check(pattern))) {\n addPattern(patternPath.get('argument'), bindings);\n }\n }\n function addTypePattern(patternPath, types) {\n var pattern = patternPath.value;\n namedTypes.Pattern.assert(pattern);\n if (namedTypes.Identifier.check(pattern)) {\n if (hasOwn.call(types, pattern.name)) {\n types[pattern.name].push(patternPath);\n }\n else {\n types[pattern.name] = [patternPath];\n }\n }\n }\n Sp.lookup = function (name) {\n for (var scope = this; scope; scope = scope.parent)\n if (scope.declares(name))\n break;\n return scope;\n };\n Sp.lookupType = function (name) {\n for (var scope = this; scope; scope = scope.parent)\n if (scope.declaresType(name))\n break;\n return scope;\n };\n Sp.getGlobalScope = function () {\n var scope = this;\n while (!scope.isGlobal)\n scope = scope.parent;\n return scope;\n };\n return Scope;\n}\nexports.default = scopePlugin;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar path_1 = tslib_1.__importDefault(require(\"./path\"));\nvar scope_1 = tslib_1.__importDefault(require(\"./scope\"));\nfunction nodePathPlugin(fork) {\n var types = fork.use(types_1.default);\n var n = types.namedTypes;\n var b = types.builders;\n var isNumber = types.builtInTypes.number;\n var isArray = types.builtInTypes.array;\n var Path = fork.use(path_1.default);\n var Scope = fork.use(scope_1.default);\n var NodePath = function NodePath(value, parentPath, name) {\n if (!(this instanceof NodePath)) {\n throw new Error(\"NodePath constructor cannot be invoked without 'new'\");\n }\n Path.call(this, value, parentPath, name);\n };\n var NPp = NodePath.prototype = Object.create(Path.prototype, {\n constructor: {\n value: NodePath,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperties(NPp, {\n node: {\n get: function () {\n Object.defineProperty(this, \"node\", {\n configurable: true,\n value: this._computeNode()\n });\n return this.node;\n }\n },\n parent: {\n get: function () {\n Object.defineProperty(this, \"parent\", {\n configurable: true,\n value: this._computeParent()\n });\n return this.parent;\n }\n },\n scope: {\n get: function () {\n Object.defineProperty(this, \"scope\", {\n configurable: true,\n value: this._computeScope()\n });\n return this.scope;\n }\n }\n });\n NPp.replace = function () {\n delete this.node;\n delete this.parent;\n delete this.scope;\n return Path.prototype.replace.apply(this, arguments);\n };\n NPp.prune = function () {\n var remainingNodePath = this.parent;\n this.replace();\n return cleanUpNodesAfterPrune(remainingNodePath);\n };\n // The value of the first ancestor Path whose value is a Node.\n NPp._computeNode = function () {\n var value = this.value;\n if (n.Node.check(value)) {\n return value;\n }\n var pp = this.parentPath;\n return pp && pp.node || null;\n };\n // The first ancestor Path whose value is a Node distinct from this.node.\n NPp._computeParent = function () {\n var value = this.value;\n var pp = this.parentPath;\n if (!n.Node.check(value)) {\n while (pp && !n.Node.check(pp.value)) {\n pp = pp.parentPath;\n }\n if (pp) {\n pp = pp.parentPath;\n }\n }\n while (pp && !n.Node.check(pp.value)) {\n pp = pp.parentPath;\n }\n return pp || null;\n };\n // The closest enclosing scope that governs this node.\n NPp._computeScope = function () {\n var value = this.value;\n var pp = this.parentPath;\n var scope = pp && pp.scope;\n if (n.Node.check(value) &&\n Scope.isEstablishedBy(value)) {\n scope = new Scope(this, scope);\n }\n return scope || null;\n };\n NPp.getValueProperty = function (name) {\n return types.getFieldValue(this.value, name);\n };\n /**\n * Determine whether this.node needs to be wrapped in parentheses in order\n * for a parser to reproduce the same local AST structure.\n *\n * For instance, in the expression `(1 + 2) * 3`, the BinaryExpression\n * whose operator is \"+\" needs parentheses, because `1 + 2 * 3` would\n * parse differently.\n *\n * If assumeExpressionContext === true, we don't worry about edge cases\n * like an anonymous FunctionExpression appearing lexically first in its\n * enclosing statement and thus needing parentheses to avoid being parsed\n * as a FunctionDeclaration with a missing name.\n */\n NPp.needsParens = function (assumeExpressionContext) {\n var pp = this.parentPath;\n if (!pp) {\n return false;\n }\n var node = this.value;\n // Only expressions need parentheses.\n if (!n.Expression.check(node)) {\n return false;\n }\n // Identifiers never need parentheses.\n if (node.type === \"Identifier\") {\n return false;\n }\n while (!n.Node.check(pp.value)) {\n pp = pp.parentPath;\n if (!pp) {\n return false;\n }\n }\n var parent = pp.value;\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return parent.type === \"MemberExpression\"\n && this.name === \"object\"\n && parent.object === node;\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n switch (parent.type) {\n case \"CallExpression\":\n return this.name === \"callee\"\n && parent.callee === node;\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return true;\n case \"MemberExpression\":\n return this.name === \"object\"\n && parent.object === node;\n case \"BinaryExpression\":\n case \"LogicalExpression\": {\n var n_1 = node;\n var po = parent.operator;\n var pp_1 = PRECEDENCE[po];\n var no = n_1.operator;\n var np = PRECEDENCE[no];\n if (pp_1 > np) {\n return true;\n }\n if (pp_1 === np && this.name === \"right\") {\n if (parent.right !== n_1) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n }\n default:\n return false;\n }\n case \"SequenceExpression\":\n switch (parent.type) {\n case \"ForStatement\":\n // Although parentheses wouldn't hurt around sequence\n // expressions in the head of for loops, traditional style\n // dictates that e.g. i++, j++ should not be wrapped with\n // parentheses.\n return false;\n case \"ExpressionStatement\":\n return this.name !== \"expression\";\n default:\n // Otherwise err on the side of overparenthesization, adding\n // explicit exceptions above if this proves overzealous.\n return true;\n }\n case \"YieldExpression\":\n switch (parent.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"CallExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ConditionalExpression\":\n case \"YieldExpression\":\n return true;\n default:\n return false;\n }\n case \"Literal\":\n return parent.type === \"MemberExpression\"\n && isNumber.check(node.value)\n && this.name === \"object\"\n && parent.object === node;\n case \"AssignmentExpression\":\n case \"ConditionalExpression\":\n switch (parent.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n return true;\n case \"CallExpression\":\n return this.name === \"callee\"\n && parent.callee === node;\n case \"ConditionalExpression\":\n return this.name === \"test\"\n && parent.test === node;\n case \"MemberExpression\":\n return this.name === \"object\"\n && parent.object === node;\n default:\n return false;\n }\n default:\n if (parent.type === \"NewExpression\" &&\n this.name === \"callee\" &&\n parent.callee === node) {\n return containsCallExpression(node);\n }\n }\n if (assumeExpressionContext !== true &&\n !this.canBeFirstInStatement() &&\n this.firstInStatement())\n return true;\n return false;\n };\n function isBinary(node) {\n return n.BinaryExpression.check(node)\n || n.LogicalExpression.check(node);\n }\n // @ts-ignore 'isUnaryLike' is declared but its value is never read. [6133]\n function isUnaryLike(node) {\n return n.UnaryExpression.check(node)\n // I considered making SpreadElement and SpreadProperty subtypes\n // of UnaryExpression, but they're not really Expression nodes.\n || (n.SpreadElement && n.SpreadElement.check(node))\n || (n.SpreadProperty && n.SpreadProperty.check(node));\n }\n var PRECEDENCE = {};\n [[\"||\"],\n [\"&&\"],\n [\"|\"],\n [\"^\"],\n [\"&\"],\n [\"==\", \"===\", \"!=\", \"!==\"],\n [\"<\", \">\", \"<=\", \">=\", \"in\", \"instanceof\"],\n [\">>\", \"<<\", \">>>\"],\n [\"+\", \"-\"],\n [\"*\", \"/\", \"%\"]\n ].forEach(function (tier, i) {\n tier.forEach(function (op) {\n PRECEDENCE[op] = i;\n });\n });\n function containsCallExpression(node) {\n if (n.CallExpression.check(node)) {\n return true;\n }\n if (isArray.check(node)) {\n return node.some(containsCallExpression);\n }\n if (n.Node.check(node)) {\n return types.someField(node, function (_name, child) {\n return containsCallExpression(child);\n });\n }\n return false;\n }\n NPp.canBeFirstInStatement = function () {\n var node = this.node;\n return !n.FunctionExpression.check(node)\n && !n.ObjectExpression.check(node);\n };\n NPp.firstInStatement = function () {\n return firstInStatement(this);\n };\n function firstInStatement(path) {\n for (var node, parent; path.parent; path = path.parent) {\n node = path.node;\n parent = path.parent.node;\n if (n.BlockStatement.check(parent) &&\n path.parent.name === \"body\" &&\n path.name === 0) {\n if (parent.body[0] !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n if (n.ExpressionStatement.check(parent) &&\n path.name === \"expression\") {\n if (parent.expression !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n if (n.SequenceExpression.check(parent) &&\n path.parent.name === \"expressions\" &&\n path.name === 0) {\n if (parent.expressions[0] !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.CallExpression.check(parent) &&\n path.name === \"callee\") {\n if (parent.callee !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.MemberExpression.check(parent) &&\n path.name === \"object\") {\n if (parent.object !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.ConditionalExpression.check(parent) &&\n path.name === \"test\") {\n if (parent.test !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (isBinary(parent) &&\n path.name === \"left\") {\n if (parent.left !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.UnaryExpression.check(parent) &&\n !parent.prefix &&\n path.name === \"argument\") {\n if (parent.argument !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n return false;\n }\n return true;\n }\n /**\n * Pruning certain nodes will result in empty or incomplete nodes, here we clean those nodes up.\n */\n function cleanUpNodesAfterPrune(remainingNodePath) {\n if (n.VariableDeclaration.check(remainingNodePath.node)) {\n var declarations = remainingNodePath.get('declarations').value;\n if (!declarations || declarations.length === 0) {\n return remainingNodePath.prune();\n }\n }\n else if (n.ExpressionStatement.check(remainingNodePath.node)) {\n if (!remainingNodePath.get('expression').value) {\n return remainingNodePath.prune();\n }\n }\n else if (n.IfStatement.check(remainingNodePath.node)) {\n cleanUpIfStatementAfterPrune(remainingNodePath);\n }\n return remainingNodePath;\n }\n function cleanUpIfStatementAfterPrune(ifStatement) {\n var testExpression = ifStatement.get('test').value;\n var alternate = ifStatement.get('alternate').value;\n var consequent = ifStatement.get('consequent').value;\n if (!consequent && !alternate) {\n var testExpressionStatement = b.expressionStatement(testExpression);\n ifStatement.replace(testExpressionStatement);\n }\n else if (!consequent && alternate) {\n var negatedTestExpression = b.unaryExpression('!', testExpression, true);\n if (n.UnaryExpression.check(testExpression) && testExpression.operator === '!') {\n negatedTestExpression = testExpression.argument;\n }\n ifStatement.get(\"test\").replace(negatedTestExpression);\n ifStatement.get(\"consequent\").replace(alternate);\n ifStatement.get(\"alternate\").replace();\n }\n }\n return NodePath;\n}\nexports.default = nodePathPlugin;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar node_path_1 = tslib_1.__importDefault(require(\"./node-path\"));\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction pathVisitorPlugin(fork) {\n var types = fork.use(types_1.default);\n var NodePath = fork.use(node_path_1.default);\n var isArray = types.builtInTypes.array;\n var isObject = types.builtInTypes.object;\n var isFunction = types.builtInTypes.function;\n var undefined;\n var PathVisitor = function PathVisitor() {\n if (!(this instanceof PathVisitor)) {\n throw new Error(\"PathVisitor constructor cannot be invoked without 'new'\");\n }\n // Permanent state.\n this._reusableContextStack = [];\n this._methodNameTable = computeMethodNameTable(this);\n this._shouldVisitComments =\n hasOwn.call(this._methodNameTable, \"Block\") ||\n hasOwn.call(this._methodNameTable, \"Line\");\n this.Context = makeContextConstructor(this);\n // State reset every time PathVisitor.prototype.visit is called.\n this._visiting = false;\n this._changeReported = false;\n };\n function computeMethodNameTable(visitor) {\n var typeNames = Object.create(null);\n for (var methodName in visitor) {\n if (/^visit[A-Z]/.test(methodName)) {\n typeNames[methodName.slice(\"visit\".length)] = true;\n }\n }\n var supertypeTable = types.computeSupertypeLookupTable(typeNames);\n var methodNameTable = Object.create(null);\n var typeNameKeys = Object.keys(supertypeTable);\n var typeNameCount = typeNameKeys.length;\n for (var i = 0; i < typeNameCount; ++i) {\n var typeName = typeNameKeys[i];\n methodName = \"visit\" + supertypeTable[typeName];\n if (isFunction.check(visitor[methodName])) {\n methodNameTable[typeName] = methodName;\n }\n }\n return methodNameTable;\n }\n PathVisitor.fromMethodsObject = function fromMethodsObject(methods) {\n if (methods instanceof PathVisitor) {\n return methods;\n }\n if (!isObject.check(methods)) {\n // An empty visitor?\n return new PathVisitor;\n }\n var Visitor = function Visitor() {\n if (!(this instanceof Visitor)) {\n throw new Error(\"Visitor constructor cannot be invoked without 'new'\");\n }\n PathVisitor.call(this);\n };\n var Vp = Visitor.prototype = Object.create(PVp);\n Vp.constructor = Visitor;\n extend(Vp, methods);\n extend(Visitor, PathVisitor);\n isFunction.assert(Visitor.fromMethodsObject);\n isFunction.assert(Visitor.visit);\n return new Visitor;\n };\n function extend(target, source) {\n for (var property in source) {\n if (hasOwn.call(source, property)) {\n target[property] = source[property];\n }\n }\n return target;\n }\n PathVisitor.visit = function visit(node, methods) {\n return PathVisitor.fromMethodsObject(methods).visit(node);\n };\n var PVp = PathVisitor.prototype;\n PVp.visit = function () {\n if (this._visiting) {\n throw new Error(\"Recursively calling visitor.visit(path) resets visitor state. \" +\n \"Try this.visit(path) or this.traverse(path) instead.\");\n }\n // Private state that needs to be reset before every traversal.\n this._visiting = true;\n this._changeReported = false;\n this._abortRequested = false;\n var argc = arguments.length;\n var args = new Array(argc);\n for (var i = 0; i < argc; ++i) {\n args[i] = arguments[i];\n }\n if (!(args[0] instanceof NodePath)) {\n args[0] = new NodePath({ root: args[0] }).get(\"root\");\n }\n // Called with the same arguments as .visit.\n this.reset.apply(this, args);\n var didNotThrow;\n try {\n var root = this.visitWithoutReset(args[0]);\n didNotThrow = true;\n }\n finally {\n this._visiting = false;\n if (!didNotThrow && this._abortRequested) {\n // If this.visitWithoutReset threw an exception and\n // this._abortRequested was set to true, return the root of\n // the AST instead of letting the exception propagate, so that\n // client code does not have to provide a try-catch block to\n // intercept the AbortRequest exception. Other kinds of\n // exceptions will propagate without being intercepted and\n // rethrown by a catch block, so their stacks will accurately\n // reflect the original throwing context.\n return args[0].value;\n }\n }\n return root;\n };\n PVp.AbortRequest = function AbortRequest() { };\n PVp.abort = function () {\n var visitor = this;\n visitor._abortRequested = true;\n var request = new visitor.AbortRequest();\n // If you decide to catch this exception and stop it from propagating,\n // make sure to call its cancel method to avoid silencing other\n // exceptions that might be thrown later in the traversal.\n request.cancel = function () {\n visitor._abortRequested = false;\n };\n throw request;\n };\n PVp.reset = function (_path /*, additional arguments */) {\n // Empty stub; may be reassigned or overridden by subclasses.\n };\n PVp.visitWithoutReset = function (path) {\n if (this instanceof this.Context) {\n // Since this.Context.prototype === this, there's a chance we\n // might accidentally call context.visitWithoutReset. If that\n // happens, re-invoke the method against context.visitor.\n return this.visitor.visitWithoutReset(path);\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n var value = path.value;\n var methodName = value &&\n typeof value === \"object\" &&\n typeof value.type === \"string\" &&\n this._methodNameTable[value.type];\n if (methodName) {\n var context = this.acquireContext(path);\n try {\n return context.invokeVisitorMethod(methodName);\n }\n finally {\n this.releaseContext(context);\n }\n }\n else {\n // If there was no visitor method to call, visit the children of\n // this node generically.\n return visitChildren(path, this);\n }\n };\n function visitChildren(path, visitor) {\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(visitor instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n var value = path.value;\n if (isArray.check(value)) {\n path.each(visitor.visitWithoutReset, visitor);\n }\n else if (!isObject.check(value)) {\n // No children to visit.\n }\n else {\n var childNames = types.getFieldNames(value);\n // The .comments field of the Node type is hidden, so we only\n // visit it if the visitor defines visitBlock or visitLine, and\n // value.comments is defined.\n if (visitor._shouldVisitComments &&\n value.comments &&\n childNames.indexOf(\"comments\") < 0) {\n childNames.push(\"comments\");\n }\n var childCount = childNames.length;\n var childPaths = [];\n for (var i = 0; i < childCount; ++i) {\n var childName = childNames[i];\n if (!hasOwn.call(value, childName)) {\n value[childName] = types.getFieldValue(value, childName);\n }\n childPaths.push(path.get(childName));\n }\n for (var i = 0; i < childCount; ++i) {\n visitor.visitWithoutReset(childPaths[i]);\n }\n }\n return path.value;\n }\n PVp.acquireContext = function (path) {\n if (this._reusableContextStack.length === 0) {\n return new this.Context(path);\n }\n return this._reusableContextStack.pop().reset(path);\n };\n PVp.releaseContext = function (context) {\n if (!(context instanceof this.Context)) {\n throw new Error(\"\");\n }\n this._reusableContextStack.push(context);\n context.currentPath = null;\n };\n PVp.reportChanged = function () {\n this._changeReported = true;\n };\n PVp.wasChangeReported = function () {\n return this._changeReported;\n };\n function makeContextConstructor(visitor) {\n function Context(path) {\n if (!(this instanceof Context)) {\n throw new Error(\"\");\n }\n if (!(this instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n Object.defineProperty(this, \"visitor\", {\n value: visitor,\n writable: false,\n enumerable: true,\n configurable: false\n });\n this.currentPath = path;\n this.needToCallTraverse = true;\n Object.seal(this);\n }\n if (!(visitor instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n // Note that the visitor object is the prototype of Context.prototype,\n // so all visitor methods are inherited by context objects.\n var Cp = Context.prototype = Object.create(visitor);\n Cp.constructor = Context;\n extend(Cp, sharedContextProtoMethods);\n return Context;\n }\n // Every PathVisitor has a different this.Context constructor and\n // this.Context.prototype object, but those prototypes can all use the\n // same reset, invokeVisitorMethod, and traverse function objects.\n var sharedContextProtoMethods = Object.create(null);\n sharedContextProtoMethods.reset =\n function reset(path) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n this.currentPath = path;\n this.needToCallTraverse = true;\n return this;\n };\n sharedContextProtoMethods.invokeVisitorMethod =\n function invokeVisitorMethod(methodName) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n var result = this.visitor[methodName].call(this, this.currentPath);\n if (result === false) {\n // Visitor methods return false to indicate that they have handled\n // their own traversal needs, and we should not complain if\n // this.needToCallTraverse is still true.\n this.needToCallTraverse = false;\n }\n else if (result !== undefined) {\n // Any other non-undefined value returned from the visitor method\n // is interpreted as a replacement value.\n this.currentPath = this.currentPath.replace(result)[0];\n if (this.needToCallTraverse) {\n // If this.traverse still hasn't been called, visit the\n // children of the replacement node.\n this.traverse(this.currentPath);\n }\n }\n if (this.needToCallTraverse !== false) {\n throw new Error(\"Must either call this.traverse or return false in \" + methodName);\n }\n var path = this.currentPath;\n return path && path.value;\n };\n sharedContextProtoMethods.traverse =\n function traverse(path, newVisitor) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n this.needToCallTraverse = false;\n return visitChildren(path, PathVisitor.fromMethodsObject(newVisitor || this.visitor));\n };\n sharedContextProtoMethods.visit =\n function visit(path, newVisitor) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n this.needToCallTraverse = false;\n return PathVisitor.fromMethodsObject(newVisitor || this.visitor).visitWithoutReset(path);\n };\n sharedContextProtoMethods.reportChanged = function reportChanged() {\n this.visitor.reportChanged();\n };\n sharedContextProtoMethods.abort = function abort() {\n this.needToCallTraverse = false;\n this.visitor.abort();\n };\n return PathVisitor;\n}\nexports.default = pathVisitorPlugin;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var getFieldNames = types.getFieldNames;\n var getFieldValue = types.getFieldValue;\n var isArray = types.builtInTypes.array;\n var isObject = types.builtInTypes.object;\n var isDate = types.builtInTypes.Date;\n var isRegExp = types.builtInTypes.RegExp;\n var hasOwn = Object.prototype.hasOwnProperty;\n function astNodesAreEquivalent(a, b, problemPath) {\n if (isArray.check(problemPath)) {\n problemPath.length = 0;\n }\n else {\n problemPath = null;\n }\n return areEquivalent(a, b, problemPath);\n }\n astNodesAreEquivalent.assert = function (a, b) {\n var problemPath = [];\n if (!astNodesAreEquivalent(a, b, problemPath)) {\n if (problemPath.length === 0) {\n if (a !== b) {\n throw new Error(\"Nodes must be equal\");\n }\n }\n else {\n throw new Error(\"Nodes differ in the following path: \" +\n problemPath.map(subscriptForProperty).join(\"\"));\n }\n }\n };\n function subscriptForProperty(property) {\n if (/[_$a-z][_$a-z0-9]*/i.test(property)) {\n return \".\" + property;\n }\n return \"[\" + JSON.stringify(property) + \"]\";\n }\n function areEquivalent(a, b, problemPath) {\n if (a === b) {\n return true;\n }\n if (isArray.check(a)) {\n return arraysAreEquivalent(a, b, problemPath);\n }\n if (isObject.check(a)) {\n return objectsAreEquivalent(a, b, problemPath);\n }\n if (isDate.check(a)) {\n return isDate.check(b) && (+a === +b);\n }\n if (isRegExp.check(a)) {\n return isRegExp.check(b) && (a.source === b.source &&\n a.global === b.global &&\n a.multiline === b.multiline &&\n a.ignoreCase === b.ignoreCase);\n }\n return a == b;\n }\n function arraysAreEquivalent(a, b, problemPath) {\n isArray.assert(a);\n var aLength = a.length;\n if (!isArray.check(b) || b.length !== aLength) {\n if (problemPath) {\n problemPath.push(\"length\");\n }\n return false;\n }\n for (var i = 0; i < aLength; ++i) {\n if (problemPath) {\n problemPath.push(i);\n }\n if (i in a !== i in b) {\n return false;\n }\n if (!areEquivalent(a[i], b[i], problemPath)) {\n return false;\n }\n if (problemPath) {\n var problemPathTail = problemPath.pop();\n if (problemPathTail !== i) {\n throw new Error(\"\" + problemPathTail);\n }\n }\n }\n return true;\n }\n function objectsAreEquivalent(a, b, problemPath) {\n isObject.assert(a);\n if (!isObject.check(b)) {\n return false;\n }\n // Fast path for a common property of AST nodes.\n if (a.type !== b.type) {\n if (problemPath) {\n problemPath.push(\"type\");\n }\n return false;\n }\n var aNames = getFieldNames(a);\n var aNameCount = aNames.length;\n var bNames = getFieldNames(b);\n var bNameCount = bNames.length;\n if (aNameCount === bNameCount) {\n for (var i = 0; i < aNameCount; ++i) {\n var name = aNames[i];\n var aChild = getFieldValue(a, name);\n var bChild = getFieldValue(b, name);\n if (problemPath) {\n problemPath.push(name);\n }\n if (!areEquivalent(aChild, bChild, problemPath)) {\n return false;\n }\n if (problemPath) {\n var problemPathTail = problemPath.pop();\n if (problemPathTail !== name) {\n throw new Error(\"\" + problemPathTail);\n }\n }\n }\n return true;\n }\n if (!problemPath) {\n return false;\n }\n // Since aNameCount !== bNameCount, we need to find some name that's\n // missing in aNames but present in bNames, or vice-versa.\n var seenNames = Object.create(null);\n for (i = 0; i < aNameCount; ++i) {\n seenNames[aNames[i]] = true;\n }\n for (i = 0; i < bNameCount; ++i) {\n name = bNames[i];\n if (!hasOwn.call(seenNames, name)) {\n problemPath.push(name);\n return false;\n }\n delete seenNames[name];\n }\n for (name in seenNames) {\n problemPath.push(name);\n break;\n }\n return false;\n }\n return astNodesAreEquivalent;\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./lib/types\"));\nvar path_visitor_1 = tslib_1.__importDefault(require(\"./lib/path-visitor\"));\nvar equiv_1 = tslib_1.__importDefault(require(\"./lib/equiv\"));\nvar path_1 = tslib_1.__importDefault(require(\"./lib/path\"));\nvar node_path_1 = tslib_1.__importDefault(require(\"./lib/node-path\"));\nfunction default_1(defs) {\n var fork = createFork();\n var types = fork.use(types_1.default);\n defs.forEach(fork.use);\n types.finalize();\n var PathVisitor = fork.use(path_visitor_1.default);\n return {\n Type: types.Type,\n builtInTypes: types.builtInTypes,\n namedTypes: types.namedTypes,\n builders: types.builders,\n defineMethod: types.defineMethod,\n getFieldNames: types.getFieldNames,\n getFieldValue: types.getFieldValue,\n eachField: types.eachField,\n someField: types.someField,\n getSupertypeNames: types.getSupertypeNames,\n getBuilderName: types.getBuilderName,\n astNodesAreEquivalent: fork.use(equiv_1.default),\n finalize: types.finalize,\n Path: fork.use(path_1.default),\n NodePath: fork.use(node_path_1.default),\n PathVisitor: PathVisitor,\n use: fork.use,\n visit: PathVisitor.visit,\n };\n}\nexports.default = default_1;\nfunction createFork() {\n var used = [];\n var usedResult = [];\n function use(plugin) {\n var idx = used.indexOf(plugin);\n if (idx === -1) {\n idx = used.length;\n used.push(plugin);\n usedResult[idx] = plugin(fork);\n }\n return usedResult[idx];\n }\n var fork = { use: use };\n return fork;\n}\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var builtin = types.builtInTypes;\n var isNumber = builtin.number;\n // An example of constructing a new type with arbitrary constraints from\n // an existing type.\n function geq(than) {\n return Type.from(function (value) { return isNumber.check(value) && value >= than; }, isNumber + \" >= \" + than);\n }\n ;\n // Default value-returning functions that may optionally be passed as a\n // third argument to Def.prototype.field.\n var defaults = {\n // Functions were used because (among other reasons) that's the most\n // elegant way to allow for the emptyArray one always to give a new\n // array instance.\n \"null\": function () { return null; },\n \"emptyArray\": function () { return []; },\n \"false\": function () { return false; },\n \"true\": function () { return true; },\n \"undefined\": function () { },\n \"use strict\": function () { return \"use strict\"; }\n };\n var naiveIsPrimitive = Type.or(builtin.string, builtin.number, builtin.boolean, builtin.null, builtin.undefined);\n var isPrimitive = Type.from(function (value) {\n if (value === null)\n return true;\n var type = typeof value;\n if (type === \"object\" ||\n type === \"function\") {\n return false;\n }\n return true;\n }, naiveIsPrimitive.toString());\n return {\n geq: geq,\n defaults: defaults,\n isPrimitive: isPrimitive,\n };\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var def = Type.def;\n var or = Type.or;\n var shared = fork.use(shared_1.default);\n var defaults = shared.defaults;\n var geq = shared.geq;\n // Abstract supertype of all syntactic entities that are allowed to have a\n // .loc field.\n def(\"Printable\")\n .field(\"loc\", or(def(\"SourceLocation\"), null), defaults[\"null\"], true);\n def(\"Node\")\n .bases(\"Printable\")\n .field(\"type\", String)\n .field(\"comments\", or([def(\"Comment\")], null), defaults[\"null\"], true);\n def(\"SourceLocation\")\n .field(\"start\", def(\"Position\"))\n .field(\"end\", def(\"Position\"))\n .field(\"source\", or(String, null), defaults[\"null\"]);\n def(\"Position\")\n .field(\"line\", geq(1))\n .field(\"column\", geq(0));\n def(\"File\")\n .bases(\"Node\")\n .build(\"program\", \"name\")\n .field(\"program\", def(\"Program\"))\n .field(\"name\", or(String, null), defaults[\"null\"]);\n def(\"Program\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n def(\"Function\")\n .bases(\"Node\")\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"params\", [def(\"Pattern\")])\n .field(\"body\", def(\"BlockStatement\"))\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"async\", Boolean, defaults[\"false\"]);\n def(\"Statement\").bases(\"Node\");\n // The empty .build() here means that an EmptyStatement can be constructed\n // (i.e. it's not abstract) but that it needs no arguments.\n def(\"EmptyStatement\").bases(\"Statement\").build();\n def(\"BlockStatement\")\n .bases(\"Statement\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n // TODO Figure out how to silently coerce Expressions to\n // ExpressionStatements where a Statement was expected.\n def(\"ExpressionStatement\")\n .bases(\"Statement\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"IfStatement\")\n .bases(\"Statement\")\n .build(\"test\", \"consequent\", \"alternate\")\n .field(\"test\", def(\"Expression\"))\n .field(\"consequent\", def(\"Statement\"))\n .field(\"alternate\", or(def(\"Statement\"), null), defaults[\"null\"]);\n def(\"LabeledStatement\")\n .bases(\"Statement\")\n .build(\"label\", \"body\")\n .field(\"label\", def(\"Identifier\"))\n .field(\"body\", def(\"Statement\"));\n def(\"BreakStatement\")\n .bases(\"Statement\")\n .build(\"label\")\n .field(\"label\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n def(\"ContinueStatement\")\n .bases(\"Statement\")\n .build(\"label\")\n .field(\"label\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n def(\"WithStatement\")\n .bases(\"Statement\")\n .build(\"object\", \"body\")\n .field(\"object\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"SwitchStatement\")\n .bases(\"Statement\")\n .build(\"discriminant\", \"cases\", \"lexical\")\n .field(\"discriminant\", def(\"Expression\"))\n .field(\"cases\", [def(\"SwitchCase\")])\n .field(\"lexical\", Boolean, defaults[\"false\"]);\n def(\"ReturnStatement\")\n .bases(\"Statement\")\n .build(\"argument\")\n .field(\"argument\", or(def(\"Expression\"), null));\n def(\"ThrowStatement\")\n .bases(\"Statement\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"TryStatement\")\n .bases(\"Statement\")\n .build(\"block\", \"handler\", \"finalizer\")\n .field(\"block\", def(\"BlockStatement\"))\n .field(\"handler\", or(def(\"CatchClause\"), null), function () {\n return this.handlers && this.handlers[0] || null;\n })\n .field(\"handlers\", [def(\"CatchClause\")], function () {\n return this.handler ? [this.handler] : [];\n }, true) // Indicates this field is hidden from eachField iteration.\n .field(\"guardedHandlers\", [def(\"CatchClause\")], defaults.emptyArray)\n .field(\"finalizer\", or(def(\"BlockStatement\"), null), defaults[\"null\"]);\n def(\"CatchClause\")\n .bases(\"Node\")\n .build(\"param\", \"guard\", \"body\")\n // https://github.com/tc39/proposal-optional-catch-binding\n .field(\"param\", or(def(\"Pattern\"), null), defaults[\"null\"])\n .field(\"guard\", or(def(\"Expression\"), null), defaults[\"null\"])\n .field(\"body\", def(\"BlockStatement\"));\n def(\"WhileStatement\")\n .bases(\"Statement\")\n .build(\"test\", \"body\")\n .field(\"test\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"DoWhileStatement\")\n .bases(\"Statement\")\n .build(\"body\", \"test\")\n .field(\"body\", def(\"Statement\"))\n .field(\"test\", def(\"Expression\"));\n def(\"ForStatement\")\n .bases(\"Statement\")\n .build(\"init\", \"test\", \"update\", \"body\")\n .field(\"init\", or(def(\"VariableDeclaration\"), def(\"Expression\"), null))\n .field(\"test\", or(def(\"Expression\"), null))\n .field(\"update\", or(def(\"Expression\"), null))\n .field(\"body\", def(\"Statement\"));\n def(\"ForInStatement\")\n .bases(\"Statement\")\n .build(\"left\", \"right\", \"body\")\n .field(\"left\", or(def(\"VariableDeclaration\"), def(\"Expression\")))\n .field(\"right\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"DebuggerStatement\").bases(\"Statement\").build();\n def(\"Declaration\").bases(\"Statement\");\n def(\"FunctionDeclaration\")\n .bases(\"Function\", \"Declaration\")\n .build(\"id\", \"params\", \"body\")\n .field(\"id\", def(\"Identifier\"));\n def(\"FunctionExpression\")\n .bases(\"Function\", \"Expression\")\n .build(\"id\", \"params\", \"body\");\n def(\"VariableDeclaration\")\n .bases(\"Declaration\")\n .build(\"kind\", \"declarations\")\n .field(\"kind\", or(\"var\", \"let\", \"const\"))\n .field(\"declarations\", [def(\"VariableDeclarator\")]);\n def(\"VariableDeclarator\")\n .bases(\"Node\")\n .build(\"id\", \"init\")\n .field(\"id\", def(\"Pattern\"))\n .field(\"init\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"Expression\").bases(\"Node\");\n def(\"ThisExpression\").bases(\"Expression\").build();\n def(\"ArrayExpression\")\n .bases(\"Expression\")\n .build(\"elements\")\n .field(\"elements\", [or(def(\"Expression\"), null)]);\n def(\"ObjectExpression\")\n .bases(\"Expression\")\n .build(\"properties\")\n .field(\"properties\", [def(\"Property\")]);\n // TODO Not in the Mozilla Parser API, but used by Esprima.\n def(\"Property\")\n .bases(\"Node\") // Want to be able to visit Property Nodes.\n .build(\"kind\", \"key\", \"value\")\n .field(\"kind\", or(\"init\", \"get\", \"set\"))\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\")))\n .field(\"value\", def(\"Expression\"));\n def(\"SequenceExpression\")\n .bases(\"Expression\")\n .build(\"expressions\")\n .field(\"expressions\", [def(\"Expression\")]);\n var UnaryOperator = or(\"-\", \"+\", \"!\", \"~\", \"typeof\", \"void\", \"delete\");\n def(\"UnaryExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"argument\", \"prefix\")\n .field(\"operator\", UnaryOperator)\n .field(\"argument\", def(\"Expression\"))\n // Esprima doesn't bother with this field, presumably because it's\n // always true for unary operators.\n .field(\"prefix\", Boolean, defaults[\"true\"]);\n var BinaryOperator = or(\"==\", \"!=\", \"===\", \"!==\", \"<\", \"<=\", \">\", \">=\", \"<<\", \">>\", \">>>\", \"+\", \"-\", \"*\", \"/\", \"%\", \"**\", \"&\", // TODO Missing from the Parser API.\n \"|\", \"^\", \"in\", \"instanceof\");\n def(\"BinaryExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"left\", \"right\")\n .field(\"operator\", BinaryOperator)\n .field(\"left\", def(\"Expression\"))\n .field(\"right\", def(\"Expression\"));\n var AssignmentOperator = or(\"=\", \"+=\", \"-=\", \"*=\", \"/=\", \"%=\", \"<<=\", \">>=\", \">>>=\", \"|=\", \"^=\", \"&=\");\n def(\"AssignmentExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"left\", \"right\")\n .field(\"operator\", AssignmentOperator)\n .field(\"left\", or(def(\"Pattern\"), def(\"MemberExpression\")))\n .field(\"right\", def(\"Expression\"));\n var UpdateOperator = or(\"++\", \"--\");\n def(\"UpdateExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"argument\", \"prefix\")\n .field(\"operator\", UpdateOperator)\n .field(\"argument\", def(\"Expression\"))\n .field(\"prefix\", Boolean);\n var LogicalOperator = or(\"||\", \"&&\");\n def(\"LogicalExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"left\", \"right\")\n .field(\"operator\", LogicalOperator)\n .field(\"left\", def(\"Expression\"))\n .field(\"right\", def(\"Expression\"));\n def(\"ConditionalExpression\")\n .bases(\"Expression\")\n .build(\"test\", \"consequent\", \"alternate\")\n .field(\"test\", def(\"Expression\"))\n .field(\"consequent\", def(\"Expression\"))\n .field(\"alternate\", def(\"Expression\"));\n def(\"NewExpression\")\n .bases(\"Expression\")\n .build(\"callee\", \"arguments\")\n .field(\"callee\", def(\"Expression\"))\n // The Mozilla Parser API gives this type as [or(def(\"Expression\"),\n // null)], but null values don't really make sense at the call site.\n // TODO Report this nonsense.\n .field(\"arguments\", [def(\"Expression\")]);\n def(\"CallExpression\")\n .bases(\"Expression\")\n .build(\"callee\", \"arguments\")\n .field(\"callee\", def(\"Expression\"))\n // See comment for NewExpression above.\n .field(\"arguments\", [def(\"Expression\")]);\n def(\"MemberExpression\")\n .bases(\"Expression\")\n .build(\"object\", \"property\", \"computed\")\n .field(\"object\", def(\"Expression\"))\n .field(\"property\", or(def(\"Identifier\"), def(\"Expression\")))\n .field(\"computed\", Boolean, function () {\n var type = this.property.type;\n if (type === 'Literal' ||\n type === 'MemberExpression' ||\n type === 'BinaryExpression') {\n return true;\n }\n return false;\n });\n def(\"Pattern\").bases(\"Node\");\n def(\"SwitchCase\")\n .bases(\"Node\")\n .build(\"test\", \"consequent\")\n .field(\"test\", or(def(\"Expression\"), null))\n .field(\"consequent\", [def(\"Statement\")]);\n def(\"Identifier\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"name\")\n .field(\"name\", String)\n .field(\"optional\", Boolean, defaults[\"false\"]);\n def(\"Literal\")\n .bases(\"Expression\")\n .build(\"value\")\n .field(\"value\", or(String, Boolean, null, Number, RegExp))\n .field(\"regex\", or({\n pattern: String,\n flags: String\n }, null), function () {\n if (this.value instanceof RegExp) {\n var flags = \"\";\n if (this.value.ignoreCase)\n flags += \"i\";\n if (this.value.multiline)\n flags += \"m\";\n if (this.value.global)\n flags += \"g\";\n return {\n pattern: this.value.source,\n flags: flags\n };\n }\n return null;\n });\n // Abstract (non-buildable) comment supertype. Not a Node.\n def(\"Comment\")\n .bases(\"Printable\")\n .field(\"value\", String)\n // A .leading comment comes before the node, whereas a .trailing\n // comment comes after it. These two fields should not both be true,\n // but they might both be false when the comment falls inside a node\n // and the node has no children for the comment to lead or trail,\n // e.g. { /*dangling*/ }.\n .field(\"leading\", Boolean, defaults[\"true\"])\n .field(\"trailing\", Boolean, defaults[\"false\"]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar core_1 = tslib_1.__importDefault(require(\"./core\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(core_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"Function\")\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"expression\", Boolean, defaults[\"false\"])\n .field(\"defaults\", [or(def(\"Expression\"), null)], defaults.emptyArray)\n // TODO This could be represented as a RestElement in .params.\n .field(\"rest\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n // The ESTree way of representing a ...rest parameter.\n def(\"RestElement\")\n .bases(\"Pattern\")\n .build(\"argument\")\n .field(\"argument\", def(\"Pattern\"))\n .field(\"typeAnnotation\", // for Babylon. Flow parser puts it on the identifier\n or(def(\"TypeAnnotation\"), def(\"TSTypeAnnotation\"), null), defaults[\"null\"]);\n def(\"SpreadElementPattern\")\n .bases(\"Pattern\")\n .build(\"argument\")\n .field(\"argument\", def(\"Pattern\"));\n def(\"FunctionDeclaration\")\n .build(\"id\", \"params\", \"body\", \"generator\", \"expression\");\n def(\"FunctionExpression\")\n .build(\"id\", \"params\", \"body\", \"generator\", \"expression\");\n // The Parser API calls this ArrowExpression, but Esprima and all other\n // actual parsers use ArrowFunctionExpression.\n def(\"ArrowFunctionExpression\")\n .bases(\"Function\", \"Expression\")\n .build(\"params\", \"body\", \"expression\")\n // The forced null value here is compatible with the overridden\n // definition of the \"id\" field in the Function interface.\n .field(\"id\", null, defaults[\"null\"])\n // Arrow function bodies are allowed to be expressions.\n .field(\"body\", or(def(\"BlockStatement\"), def(\"Expression\")))\n // The current spec forbids arrow generators, so I have taken the\n // liberty of enforcing that. TODO Report this.\n .field(\"generator\", false, defaults[\"false\"]);\n def(\"ForOfStatement\")\n .bases(\"Statement\")\n .build(\"left\", \"right\", \"body\")\n .field(\"left\", or(def(\"VariableDeclaration\"), def(\"Pattern\")))\n .field(\"right\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"YieldExpression\")\n .bases(\"Expression\")\n .build(\"argument\", \"delegate\")\n .field(\"argument\", or(def(\"Expression\"), null))\n .field(\"delegate\", Boolean, defaults[\"false\"]);\n def(\"GeneratorExpression\")\n .bases(\"Expression\")\n .build(\"body\", \"blocks\", \"filter\")\n .field(\"body\", def(\"Expression\"))\n .field(\"blocks\", [def(\"ComprehensionBlock\")])\n .field(\"filter\", or(def(\"Expression\"), null));\n def(\"ComprehensionExpression\")\n .bases(\"Expression\")\n .build(\"body\", \"blocks\", \"filter\")\n .field(\"body\", def(\"Expression\"))\n .field(\"blocks\", [def(\"ComprehensionBlock\")])\n .field(\"filter\", or(def(\"Expression\"), null));\n def(\"ComprehensionBlock\")\n .bases(\"Node\")\n .build(\"left\", \"right\", \"each\")\n .field(\"left\", def(\"Pattern\"))\n .field(\"right\", def(\"Expression\"))\n .field(\"each\", Boolean);\n def(\"Property\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"value\", or(def(\"Expression\"), def(\"Pattern\")))\n .field(\"method\", Boolean, defaults[\"false\"])\n .field(\"shorthand\", Boolean, defaults[\"false\"])\n .field(\"computed\", Boolean, defaults[\"false\"]);\n def(\"ObjectProperty\")\n .field(\"shorthand\", Boolean, defaults[\"false\"]);\n def(\"PropertyPattern\")\n .bases(\"Pattern\")\n .build(\"key\", \"pattern\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"pattern\", def(\"Pattern\"))\n .field(\"computed\", Boolean, defaults[\"false\"]);\n def(\"ObjectPattern\")\n .bases(\"Pattern\")\n .build(\"properties\")\n .field(\"properties\", [or(def(\"PropertyPattern\"), def(\"Property\"))]);\n def(\"ArrayPattern\")\n .bases(\"Pattern\")\n .build(\"elements\")\n .field(\"elements\", [or(def(\"Pattern\"), null)]);\n def(\"MethodDefinition\")\n .bases(\"Declaration\")\n .build(\"kind\", \"key\", \"value\", \"static\")\n .field(\"kind\", or(\"constructor\", \"method\", \"get\", \"set\"))\n .field(\"key\", def(\"Expression\"))\n .field(\"value\", def(\"Function\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"static\", Boolean, defaults[\"false\"]);\n def(\"SpreadElement\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"ArrayExpression\")\n .field(\"elements\", [or(def(\"Expression\"), def(\"SpreadElement\"), def(\"RestElement\"), null)]);\n def(\"NewExpression\")\n .field(\"arguments\", [or(def(\"Expression\"), def(\"SpreadElement\"))]);\n def(\"CallExpression\")\n .field(\"arguments\", [or(def(\"Expression\"), def(\"SpreadElement\"))]);\n // Note: this node type is *not* an AssignmentExpression with a Pattern on\n // the left-hand side! The existing AssignmentExpression type already\n // supports destructuring assignments. AssignmentPattern nodes may appear\n // wherever a Pattern is allowed, and the right-hand side represents a\n // default value to be destructured against the left-hand side, if no\n // value is otherwise provided. For example: default parameter values.\n def(\"AssignmentPattern\")\n .bases(\"Pattern\")\n .build(\"left\", \"right\")\n .field(\"left\", def(\"Pattern\"))\n .field(\"right\", def(\"Expression\"));\n var ClassBodyElement = or(def(\"MethodDefinition\"), def(\"VariableDeclarator\"), def(\"ClassPropertyDefinition\"), def(\"ClassProperty\"));\n def(\"ClassProperty\")\n .bases(\"Declaration\")\n .build(\"key\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"computed\", Boolean, defaults[\"false\"]);\n def(\"ClassPropertyDefinition\") // static property\n .bases(\"Declaration\")\n .build(\"definition\")\n // Yes, Virginia, circular definitions are permitted.\n .field(\"definition\", ClassBodyElement);\n def(\"ClassBody\")\n .bases(\"Declaration\")\n .build(\"body\")\n .field(\"body\", [ClassBodyElement]);\n def(\"ClassDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"body\", \"superClass\")\n .field(\"id\", or(def(\"Identifier\"), null))\n .field(\"body\", def(\"ClassBody\"))\n .field(\"superClass\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"ClassExpression\")\n .bases(\"Expression\")\n .build(\"id\", \"body\", \"superClass\")\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"body\", def(\"ClassBody\"))\n .field(\"superClass\", or(def(\"Expression\"), null), defaults[\"null\"]);\n // Specifier and ModuleSpecifier are abstract non-standard types\n // introduced for definitional convenience.\n def(\"Specifier\").bases(\"Node\");\n // This supertype is shared/abused by both def/babel.js and\n // def/esprima.js. In the future, it will be possible to load only one set\n // of definitions appropriate for a given parser, but until then we must\n // rely on default functions to reconcile the conflicting AST formats.\n def(\"ModuleSpecifier\")\n .bases(\"Specifier\")\n // This local field is used by Babel/Acorn. It should not technically\n // be optional in the Babel/Acorn AST format, but it must be optional\n // in the Esprima AST format.\n .field(\"local\", or(def(\"Identifier\"), null), defaults[\"null\"])\n // The id and name fields are used by Esprima. The id field should not\n // technically be optional in the Esprima AST format, but it must be\n // optional in the Babel/Acorn AST format.\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"name\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n // Like ModuleSpecifier, except type:\"ImportSpecifier\" and buildable.\n // import {<id [as name]>} from ...;\n def(\"ImportSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"id\", \"name\");\n // import <* as id> from ...;\n def(\"ImportNamespaceSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"id\");\n // import <id> from ...;\n def(\"ImportDefaultSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"id\");\n def(\"ImportDeclaration\")\n .bases(\"Declaration\")\n .build(\"specifiers\", \"source\", \"importKind\")\n .field(\"specifiers\", [or(def(\"ImportSpecifier\"), def(\"ImportNamespaceSpecifier\"), def(\"ImportDefaultSpecifier\"))], defaults.emptyArray)\n .field(\"source\", def(\"Literal\"))\n .field(\"importKind\", or(\"value\", \"type\"), function () {\n return \"value\";\n });\n def(\"TaggedTemplateExpression\")\n .bases(\"Expression\")\n .build(\"tag\", \"quasi\")\n .field(\"tag\", def(\"Expression\"))\n .field(\"quasi\", def(\"TemplateLiteral\"));\n def(\"TemplateLiteral\")\n .bases(\"Expression\")\n .build(\"quasis\", \"expressions\")\n .field(\"quasis\", [def(\"TemplateElement\")])\n .field(\"expressions\", [def(\"Expression\")]);\n def(\"TemplateElement\")\n .bases(\"Node\")\n .build(\"value\", \"tail\")\n .field(\"value\", { \"cooked\": String, \"raw\": String })\n .field(\"tail\", Boolean);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es6_1 = tslib_1.__importDefault(require(\"./es6\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es6_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"Function\")\n .field(\"async\", Boolean, defaults[\"false\"]);\n def(\"SpreadProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"ObjectExpression\")\n .field(\"properties\", [or(def(\"Property\"), def(\"SpreadProperty\"), def(\"SpreadElement\"))]);\n def(\"SpreadPropertyPattern\")\n .bases(\"Pattern\")\n .build(\"argument\")\n .field(\"argument\", def(\"Pattern\"));\n def(\"ObjectPattern\")\n .field(\"properties\", [or(def(\"Property\"), def(\"PropertyPattern\"), def(\"SpreadPropertyPattern\"))]);\n def(\"AwaitExpression\")\n .bases(\"Expression\")\n .build(\"argument\", \"all\")\n .field(\"argument\", or(def(\"Expression\"), null))\n .field(\"all\", Boolean, defaults[\"false\"]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es7_1 = tslib_1.__importDefault(require(\"./es7\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nfunction default_1(fork) {\n fork.use(es7_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n def(\"ImportExpression\")\n .bases(\"Expression\")\n .build(\"source\")\n .field(\"source\", def(\"Expression\"));\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es7_1 = tslib_1.__importDefault(require(\"./es7\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es7_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"JSXAttribute\")\n .bases(\"Node\")\n .build(\"name\", \"value\")\n .field(\"name\", or(def(\"JSXIdentifier\"), def(\"JSXNamespacedName\")))\n .field(\"value\", or(def(\"Literal\"), // attr=\"value\"\n def(\"JSXExpressionContainer\"), // attr={value}\n null // attr= or just attr\n ), defaults[\"null\"]);\n def(\"JSXIdentifier\")\n .bases(\"Identifier\")\n .build(\"name\")\n .field(\"name\", String);\n def(\"JSXNamespacedName\")\n .bases(\"Node\")\n .build(\"namespace\", \"name\")\n .field(\"namespace\", def(\"JSXIdentifier\"))\n .field(\"name\", def(\"JSXIdentifier\"));\n def(\"JSXMemberExpression\")\n .bases(\"MemberExpression\")\n .build(\"object\", \"property\")\n .field(\"object\", or(def(\"JSXIdentifier\"), def(\"JSXMemberExpression\")))\n .field(\"property\", def(\"JSXIdentifier\"))\n .field(\"computed\", Boolean, defaults.false);\n var JSXElementName = or(def(\"JSXIdentifier\"), def(\"JSXNamespacedName\"), def(\"JSXMemberExpression\"));\n def(\"JSXSpreadAttribute\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n var JSXAttributes = [or(def(\"JSXAttribute\"), def(\"JSXSpreadAttribute\"))];\n def(\"JSXExpressionContainer\")\n .bases(\"Expression\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"JSXElement\")\n .bases(\"Expression\")\n .build(\"openingElement\", \"closingElement\", \"children\")\n .field(\"openingElement\", def(\"JSXOpeningElement\"))\n .field(\"closingElement\", or(def(\"JSXClosingElement\"), null), defaults[\"null\"])\n .field(\"children\", [or(def(\"JSXElement\"), def(\"JSXExpressionContainer\"), def(\"JSXFragment\"), def(\"JSXText\"), def(\"Literal\") // TODO Esprima should return JSXText instead.\n )], defaults.emptyArray)\n .field(\"name\", JSXElementName, function () {\n // Little-known fact: the `this` object inside a default function\n // is none other than the partially-built object itself, and any\n // fields initialized directly from builder function arguments\n // (like openingElement, closingElement, and children) are\n // guaranteed to be available.\n return this.openingElement.name;\n }, true) // hidden from traversal\n .field(\"selfClosing\", Boolean, function () {\n return this.openingElement.selfClosing;\n }, true) // hidden from traversal\n .field(\"attributes\", JSXAttributes, function () {\n return this.openingElement.attributes;\n }, true); // hidden from traversal\n def(\"JSXOpeningElement\")\n .bases(\"Node\") // TODO Does this make sense? Can't really be an JSXElement.\n .build(\"name\", \"attributes\", \"selfClosing\")\n .field(\"name\", JSXElementName)\n .field(\"attributes\", JSXAttributes, defaults.emptyArray)\n .field(\"selfClosing\", Boolean, defaults[\"false\"]);\n def(\"JSXClosingElement\")\n .bases(\"Node\") // TODO Same concern.\n .build(\"name\")\n .field(\"name\", JSXElementName);\n def(\"JSXFragment\")\n .bases(\"Expression\")\n .build(\"openingElement\", \"closingElement\", \"children\")\n .field(\"openingElement\", def(\"JSXOpeningFragment\"))\n .field(\"closingElement\", def(\"JSXClosingFragment\"))\n .field(\"children\", [or(def(\"JSXElement\"), def(\"JSXExpressionContainer\"), def(\"JSXFragment\"), def(\"JSXText\"), def(\"Literal\") // TODO Esprima should return JSXText instead.\n )], defaults.emptyArray);\n def(\"JSXOpeningFragment\")\n .bases(\"Node\") // TODO Same concern.\n .build();\n def(\"JSXClosingFragment\")\n .bases(\"Node\") // TODO Same concern.\n .build();\n def(\"JSXText\")\n .bases(\"Literal\")\n .build(\"value\")\n .field(\"value\", String);\n def(\"JSXEmptyExpression\").bases(\"Expression\").build();\n // This PR has caused many people issues, but supporting it seems like a\n // good idea anyway: https://github.com/babel/babel/pull/4988\n def(\"JSXSpreadChild\")\n .bases(\"Expression\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\n/**\n * Type annotation defs shared between Flow and TypeScript.\n * These defs could not be defined in ./flow.ts or ./typescript.ts directly\n * because they use the same name.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n var TypeAnnotation = or(def(\"TypeAnnotation\"), def(\"TSTypeAnnotation\"), null);\n var TypeParamDecl = or(def(\"TypeParameterDeclaration\"), def(\"TSTypeParameterDeclaration\"), null);\n def(\"Identifier\")\n .field(\"typeAnnotation\", TypeAnnotation, defaults[\"null\"]);\n def(\"ObjectPattern\")\n .field(\"typeAnnotation\", TypeAnnotation, defaults[\"null\"]);\n def(\"Function\")\n .field(\"returnType\", TypeAnnotation, defaults[\"null\"])\n .field(\"typeParameters\", TypeParamDecl, defaults[\"null\"]);\n def(\"ClassProperty\")\n .build(\"key\", \"value\", \"typeAnnotation\", \"static\")\n .field(\"value\", or(def(\"Expression\"), null))\n .field(\"static\", Boolean, defaults[\"false\"])\n .field(\"typeAnnotation\", TypeAnnotation, defaults[\"null\"]);\n [\"ClassDeclaration\",\n \"ClassExpression\",\n ].forEach(function (typeName) {\n def(typeName)\n .field(\"typeParameters\", TypeParamDecl, defaults[\"null\"])\n .field(\"superTypeParameters\", or(def(\"TypeParameterInstantiation\"), def(\"TSTypeParameterInstantiation\"), null), defaults[\"null\"])\n .field(\"implements\", or([def(\"ClassImplements\")], [def(\"TSExpressionWithTypeArguments\")]), defaults.emptyArray);\n });\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es7_1 = tslib_1.__importDefault(require(\"./es7\"));\nvar type_annotations_1 = tslib_1.__importDefault(require(\"./type-annotations\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es7_1.default);\n fork.use(type_annotations_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n // Base types\n def(\"Flow\").bases(\"Node\");\n def(\"FlowType\").bases(\"Flow\");\n // Type annotations\n def(\"AnyTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"EmptyTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"MixedTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"VoidTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"NumberTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"NumberLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", Number)\n .field(\"raw\", String);\n // Babylon 6 differs in AST from Flow\n // same as NumberLiteralTypeAnnotation\n def(\"NumericLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", Number)\n .field(\"raw\", String);\n def(\"StringTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"StringLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", String)\n .field(\"raw\", String);\n def(\"BooleanTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"BooleanLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", Boolean)\n .field(\"raw\", String);\n def(\"TypeAnnotation\")\n .bases(\"Node\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"FlowType\"));\n def(\"NullableTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"FlowType\"));\n def(\"NullLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"NullTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"ThisTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"ExistsTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"ExistentialTypeParam\")\n .bases(\"FlowType\")\n .build();\n def(\"FunctionTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"params\", \"returnType\", \"rest\", \"typeParameters\")\n .field(\"params\", [def(\"FunctionTypeParam\")])\n .field(\"returnType\", def(\"FlowType\"))\n .field(\"rest\", or(def(\"FunctionTypeParam\"), null))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null));\n def(\"FunctionTypeParam\")\n .bases(\"Node\")\n .build(\"name\", \"typeAnnotation\", \"optional\")\n .field(\"name\", def(\"Identifier\"))\n .field(\"typeAnnotation\", def(\"FlowType\"))\n .field(\"optional\", Boolean);\n def(\"ArrayTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"elementType\")\n .field(\"elementType\", def(\"FlowType\"));\n def(\"ObjectTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"properties\", \"indexers\", \"callProperties\")\n .field(\"properties\", [\n or(def(\"ObjectTypeProperty\"), def(\"ObjectTypeSpreadProperty\"))\n ])\n .field(\"indexers\", [def(\"ObjectTypeIndexer\")], defaults.emptyArray)\n .field(\"callProperties\", [def(\"ObjectTypeCallProperty\")], defaults.emptyArray)\n .field(\"inexact\", or(Boolean, void 0), defaults[\"undefined\"])\n .field(\"exact\", Boolean, defaults[\"false\"])\n .field(\"internalSlots\", [def(\"ObjectTypeInternalSlot\")], defaults.emptyArray);\n def(\"Variance\")\n .bases(\"Node\")\n .build(\"kind\")\n .field(\"kind\", or(\"plus\", \"minus\"));\n var LegacyVariance = or(def(\"Variance\"), \"plus\", \"minus\", null);\n def(\"ObjectTypeProperty\")\n .bases(\"Node\")\n .build(\"key\", \"value\", \"optional\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\")))\n .field(\"value\", def(\"FlowType\"))\n .field(\"optional\", Boolean)\n .field(\"variance\", LegacyVariance, defaults[\"null\"]);\n def(\"ObjectTypeIndexer\")\n .bases(\"Node\")\n .build(\"id\", \"key\", \"value\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"key\", def(\"FlowType\"))\n .field(\"value\", def(\"FlowType\"))\n .field(\"variance\", LegacyVariance, defaults[\"null\"]);\n def(\"ObjectTypeCallProperty\")\n .bases(\"Node\")\n .build(\"value\")\n .field(\"value\", def(\"FunctionTypeAnnotation\"))\n .field(\"static\", Boolean, defaults[\"false\"]);\n def(\"QualifiedTypeIdentifier\")\n .bases(\"Node\")\n .build(\"qualification\", \"id\")\n .field(\"qualification\", or(def(\"Identifier\"), def(\"QualifiedTypeIdentifier\")))\n .field(\"id\", def(\"Identifier\"));\n def(\"GenericTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"id\", \"typeParameters\")\n .field(\"id\", or(def(\"Identifier\"), def(\"QualifiedTypeIdentifier\")))\n .field(\"typeParameters\", or(def(\"TypeParameterInstantiation\"), null));\n def(\"MemberTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"object\", \"property\")\n .field(\"object\", def(\"Identifier\"))\n .field(\"property\", or(def(\"MemberTypeAnnotation\"), def(\"GenericTypeAnnotation\")));\n def(\"UnionTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"types\")\n .field(\"types\", [def(\"FlowType\")]);\n def(\"IntersectionTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"types\")\n .field(\"types\", [def(\"FlowType\")]);\n def(\"TypeofTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"argument\")\n .field(\"argument\", def(\"FlowType\"));\n def(\"ObjectTypeSpreadProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"FlowType\"));\n def(\"ObjectTypeInternalSlot\")\n .bases(\"Node\")\n .build(\"id\", \"value\", \"optional\", \"static\", \"method\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"value\", def(\"FlowType\"))\n .field(\"optional\", Boolean)\n .field(\"static\", Boolean)\n .field(\"method\", Boolean);\n def(\"TypeParameterDeclaration\")\n .bases(\"Node\")\n .build(\"params\")\n .field(\"params\", [def(\"TypeParameter\")]);\n def(\"TypeParameterInstantiation\")\n .bases(\"Node\")\n .build(\"params\")\n .field(\"params\", [def(\"FlowType\")]);\n def(\"TypeParameter\")\n .bases(\"FlowType\")\n .build(\"name\", \"variance\", \"bound\")\n .field(\"name\", String)\n .field(\"variance\", LegacyVariance, defaults[\"null\"])\n .field(\"bound\", or(def(\"TypeAnnotation\"), null), defaults[\"null\"]);\n def(\"ClassProperty\")\n .field(\"variance\", LegacyVariance, defaults[\"null\"]);\n def(\"ClassImplements\")\n .bases(\"Node\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"superClass\", or(def(\"Expression\"), null), defaults[\"null\"])\n .field(\"typeParameters\", or(def(\"TypeParameterInstantiation\"), null), defaults[\"null\"]);\n def(\"InterfaceTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"body\", \"extends\")\n .field(\"body\", def(\"ObjectTypeAnnotation\"))\n .field(\"extends\", or([def(\"InterfaceExtends\")], null), defaults[\"null\"]);\n def(\"InterfaceDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"body\", \"extends\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null), defaults[\"null\"])\n .field(\"body\", def(\"ObjectTypeAnnotation\"))\n .field(\"extends\", [def(\"InterfaceExtends\")]);\n def(\"DeclareInterface\")\n .bases(\"InterfaceDeclaration\")\n .build(\"id\", \"body\", \"extends\");\n def(\"InterfaceExtends\")\n .bases(\"Node\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterInstantiation\"), null), defaults[\"null\"]);\n def(\"TypeAlias\")\n .bases(\"Declaration\")\n .build(\"id\", \"typeParameters\", \"right\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null))\n .field(\"right\", def(\"FlowType\"));\n def(\"OpaqueType\")\n .bases(\"Declaration\")\n .build(\"id\", \"typeParameters\", \"impltype\", \"supertype\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null))\n .field(\"impltype\", def(\"FlowType\"))\n .field(\"supertype\", def(\"FlowType\"));\n def(\"DeclareTypeAlias\")\n .bases(\"TypeAlias\")\n .build(\"id\", \"typeParameters\", \"right\");\n def(\"DeclareOpaqueType\")\n .bases(\"TypeAlias\")\n .build(\"id\", \"typeParameters\", \"supertype\");\n def(\"TypeCastExpression\")\n .bases(\"Expression\")\n .build(\"expression\", \"typeAnnotation\")\n .field(\"expression\", def(\"Expression\"))\n .field(\"typeAnnotation\", def(\"TypeAnnotation\"));\n def(\"TupleTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"types\")\n .field(\"types\", [def(\"FlowType\")]);\n def(\"DeclareVariable\")\n .bases(\"Statement\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n def(\"DeclareFunction\")\n .bases(\"Statement\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n def(\"DeclareClass\")\n .bases(\"InterfaceDeclaration\")\n .build(\"id\");\n def(\"DeclareModule\")\n .bases(\"Statement\")\n .build(\"id\", \"body\")\n .field(\"id\", or(def(\"Identifier\"), def(\"Literal\")))\n .field(\"body\", def(\"BlockStatement\"));\n def(\"DeclareModuleExports\")\n .bases(\"Statement\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TypeAnnotation\"));\n def(\"DeclareExportDeclaration\")\n .bases(\"Declaration\")\n .build(\"default\", \"declaration\", \"specifiers\", \"source\")\n .field(\"default\", Boolean)\n .field(\"declaration\", or(def(\"DeclareVariable\"), def(\"DeclareFunction\"), def(\"DeclareClass\"), def(\"FlowType\"), // Implies default.\n null))\n .field(\"specifiers\", [or(def(\"ExportSpecifier\"), def(\"ExportBatchSpecifier\"))], defaults.emptyArray)\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"DeclareExportAllDeclaration\")\n .bases(\"Declaration\")\n .build(\"source\")\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"FlowPredicate\").bases(\"Flow\");\n def(\"InferredPredicate\")\n .bases(\"FlowPredicate\")\n .build();\n def(\"DeclaredPredicate\")\n .bases(\"FlowPredicate\")\n .build(\"value\")\n .field(\"value\", def(\"Expression\"));\n def(\"CallExpression\")\n .field(\"typeArguments\", or(null, def(\"TypeParameterInstantiation\")), defaults[\"null\"]);\n def(\"NewExpression\")\n .field(\"typeArguments\", or(null, def(\"TypeParameterInstantiation\")), defaults[\"null\"]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es7_1 = tslib_1.__importDefault(require(\"./es7\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es7_1.default);\n var types = fork.use(types_1.default);\n var defaults = fork.use(shared_1.default).defaults;\n var def = types.Type.def;\n var or = types.Type.or;\n def(\"VariableDeclaration\")\n .field(\"declarations\", [or(def(\"VariableDeclarator\"), def(\"Identifier\") // Esprima deviation.\n )]);\n def(\"Property\")\n .field(\"value\", or(def(\"Expression\"), def(\"Pattern\") // Esprima deviation.\n ));\n def(\"ArrayPattern\")\n .field(\"elements\", [or(def(\"Pattern\"), def(\"SpreadElement\"), null)]);\n def(\"ObjectPattern\")\n .field(\"properties\", [or(def(\"Property\"), def(\"PropertyPattern\"), def(\"SpreadPropertyPattern\"), def(\"SpreadProperty\") // Used by Esprima.\n )]);\n // Like ModuleSpecifier, except type:\"ExportSpecifier\" and buildable.\n // export {<id [as name]>} [from ...];\n def(\"ExportSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"id\", \"name\");\n // export <*> from ...;\n def(\"ExportBatchSpecifier\")\n .bases(\"Specifier\")\n .build();\n def(\"ExportDeclaration\")\n .bases(\"Declaration\")\n .build(\"default\", \"declaration\", \"specifiers\", \"source\")\n .field(\"default\", Boolean)\n .field(\"declaration\", or(def(\"Declaration\"), def(\"Expression\"), // Implies default.\n null))\n .field(\"specifiers\", [or(def(\"ExportSpecifier\"), def(\"ExportBatchSpecifier\"))], defaults.emptyArray)\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"Block\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n def(\"Line\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nvar es7_1 = tslib_1.__importDefault(require(\"./es7\"));\nfunction default_1(fork) {\n fork.use(es7_1.default);\n var types = fork.use(types_1.default);\n var defaults = fork.use(shared_1.default).defaults;\n var def = types.Type.def;\n var or = types.Type.or;\n def(\"Noop\")\n .bases(\"Statement\")\n .build();\n def(\"DoExpression\")\n .bases(\"Expression\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n def(\"Super\")\n .bases(\"Expression\")\n .build();\n def(\"BindExpression\")\n .bases(\"Expression\")\n .build(\"object\", \"callee\")\n .field(\"object\", or(def(\"Expression\"), null))\n .field(\"callee\", def(\"Expression\"));\n def(\"Decorator\")\n .bases(\"Node\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"Property\")\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n def(\"MethodDefinition\")\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n def(\"MetaProperty\")\n .bases(\"Expression\")\n .build(\"meta\", \"property\")\n .field(\"meta\", def(\"Identifier\"))\n .field(\"property\", def(\"Identifier\"));\n def(\"ParenthesizedExpression\")\n .bases(\"Expression\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"ImportSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"imported\", \"local\")\n .field(\"imported\", def(\"Identifier\"));\n def(\"ImportDefaultSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"local\");\n def(\"ImportNamespaceSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"local\");\n def(\"ExportDefaultDeclaration\")\n .bases(\"Declaration\")\n .build(\"declaration\")\n .field(\"declaration\", or(def(\"Declaration\"), def(\"Expression\")));\n def(\"ExportNamedDeclaration\")\n .bases(\"Declaration\")\n .build(\"declaration\", \"specifiers\", \"source\")\n .field(\"declaration\", or(def(\"Declaration\"), null))\n .field(\"specifiers\", [def(\"ExportSpecifier\")], defaults.emptyArray)\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"ExportSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"local\", \"exported\")\n .field(\"exported\", def(\"Identifier\"));\n def(\"ExportNamespaceSpecifier\")\n .bases(\"Specifier\")\n .build(\"exported\")\n .field(\"exported\", def(\"Identifier\"));\n def(\"ExportDefaultSpecifier\")\n .bases(\"Specifier\")\n .build(\"exported\")\n .field(\"exported\", def(\"Identifier\"));\n def(\"ExportAllDeclaration\")\n .bases(\"Declaration\")\n .build(\"exported\", \"source\")\n .field(\"exported\", or(def(\"Identifier\"), null))\n .field(\"source\", def(\"Literal\"));\n def(\"CommentBlock\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n def(\"CommentLine\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n def(\"Directive\")\n .bases(\"Node\")\n .build(\"value\")\n .field(\"value\", def(\"DirectiveLiteral\"));\n def(\"DirectiveLiteral\")\n .bases(\"Node\", \"Expression\")\n .build(\"value\")\n .field(\"value\", String, defaults[\"use strict\"]);\n def(\"InterpreterDirective\")\n .bases(\"Node\")\n .build(\"value\")\n .field(\"value\", String);\n def(\"BlockStatement\")\n .bases(\"Statement\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")])\n .field(\"directives\", [def(\"Directive\")], defaults.emptyArray);\n def(\"Program\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")])\n .field(\"directives\", [def(\"Directive\")], defaults.emptyArray)\n .field(\"interpreter\", or(def(\"InterpreterDirective\"), null), defaults[\"null\"]);\n // Split Literal\n def(\"StringLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n .field(\"value\", String);\n def(\"NumericLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n .field(\"value\", Number)\n .field(\"raw\", or(String, null), defaults[\"null\"])\n .field(\"extra\", {\n rawValue: Number,\n raw: String\n }, function getDefault() {\n return {\n rawValue: this.value,\n raw: this.value + \"\"\n };\n });\n def(\"BigIntLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n // Only String really seems appropriate here, since BigInt values\n // often exceed the limits of JS numbers.\n .field(\"value\", or(String, Number))\n .field(\"extra\", {\n rawValue: String,\n raw: String\n }, function getDefault() {\n return {\n rawValue: String(this.value),\n raw: this.value + \"n\"\n };\n });\n def(\"NullLiteral\")\n .bases(\"Literal\")\n .build()\n .field(\"value\", null, defaults[\"null\"]);\n def(\"BooleanLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n .field(\"value\", Boolean);\n def(\"RegExpLiteral\")\n .bases(\"Literal\")\n .build(\"pattern\", \"flags\")\n .field(\"pattern\", String)\n .field(\"flags\", String)\n .field(\"value\", RegExp, function () {\n return new RegExp(this.pattern, this.flags);\n });\n var ObjectExpressionProperty = or(def(\"Property\"), def(\"ObjectMethod\"), def(\"ObjectProperty\"), def(\"SpreadProperty\"), def(\"SpreadElement\"));\n // Split Property -> ObjectProperty and ObjectMethod\n def(\"ObjectExpression\")\n .bases(\"Expression\")\n .build(\"properties\")\n .field(\"properties\", [ObjectExpressionProperty]);\n // ObjectMethod hoist .value properties to own properties\n def(\"ObjectMethod\")\n .bases(\"Node\", \"Function\")\n .build(\"kind\", \"key\", \"params\", \"body\", \"computed\")\n .field(\"kind\", or(\"method\", \"get\", \"set\"))\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"params\", [def(\"Pattern\")])\n .field(\"body\", def(\"BlockStatement\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"async\", Boolean, defaults[\"false\"])\n .field(\"accessibility\", // TypeScript\n or(def(\"Literal\"), null), defaults[\"null\"])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n def(\"ObjectProperty\")\n .bases(\"Node\")\n .build(\"key\", \"value\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"value\", or(def(\"Expression\"), def(\"Pattern\")))\n .field(\"accessibility\", // TypeScript\n or(def(\"Literal\"), null), defaults[\"null\"])\n .field(\"computed\", Boolean, defaults[\"false\"]);\n var ClassBodyElement = or(def(\"MethodDefinition\"), def(\"VariableDeclarator\"), def(\"ClassPropertyDefinition\"), def(\"ClassProperty\"), def(\"ClassPrivateProperty\"), def(\"ClassMethod\"), def(\"ClassPrivateMethod\"));\n // MethodDefinition -> ClassMethod\n def(\"ClassBody\")\n .bases(\"Declaration\")\n .build(\"body\")\n .field(\"body\", [ClassBodyElement]);\n def(\"ClassMethod\")\n .bases(\"Declaration\", \"Function\")\n .build(\"kind\", \"key\", \"params\", \"body\", \"computed\", \"static\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")));\n def(\"ClassPrivateMethod\")\n .bases(\"Declaration\", \"Function\")\n .build(\"key\", \"params\", \"body\", \"kind\", \"computed\", \"static\")\n .field(\"key\", def(\"PrivateName\"));\n [\"ClassMethod\",\n \"ClassPrivateMethod\",\n ].forEach(function (typeName) {\n def(typeName)\n .field(\"kind\", or(\"get\", \"set\", \"method\", \"constructor\"), function () { return \"method\"; })\n .field(\"body\", def(\"BlockStatement\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"static\", or(Boolean, null), defaults[\"null\"])\n .field(\"abstract\", or(Boolean, null), defaults[\"null\"])\n .field(\"access\", or(\"public\", \"private\", \"protected\", null), defaults[\"null\"])\n .field(\"accessibility\", or(\"public\", \"private\", \"protected\", null), defaults[\"null\"])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"])\n .field(\"optional\", or(Boolean, null), defaults[\"null\"]);\n });\n def(\"ClassPrivateProperty\")\n .bases(\"ClassProperty\")\n .build(\"key\", \"value\")\n .field(\"key\", def(\"PrivateName\"))\n .field(\"value\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"PrivateName\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n var ObjectPatternProperty = or(def(\"Property\"), def(\"PropertyPattern\"), def(\"SpreadPropertyPattern\"), def(\"SpreadProperty\"), // Used by Esprima\n def(\"ObjectProperty\"), // Babel 6\n def(\"RestProperty\") // Babel 6\n );\n // Split into RestProperty and SpreadProperty\n def(\"ObjectPattern\")\n .bases(\"Pattern\")\n .build(\"properties\")\n .field(\"properties\", [ObjectPatternProperty])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n def(\"SpreadProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"RestProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"ForAwaitStatement\")\n .bases(\"Statement\")\n .build(\"left\", \"right\", \"body\")\n .field(\"left\", or(def(\"VariableDeclaration\"), def(\"Expression\")))\n .field(\"right\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n // The callee node of a dynamic import(...) expression.\n def(\"Import\")\n .bases(\"Expression\")\n .build();\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar babel_core_1 = tslib_1.__importDefault(require(\"./babel-core\"));\nvar flow_1 = tslib_1.__importDefault(require(\"./flow\"));\nfunction default_1(fork) {\n fork.use(babel_core_1.default);\n fork.use(flow_1.default);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar babel_core_1 = tslib_1.__importDefault(require(\"./babel-core\"));\nvar type_annotations_1 = tslib_1.__importDefault(require(\"./type-annotations\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n // Since TypeScript is parsed by Babylon, include the core Babylon types\n // but omit the Flow-related types.\n fork.use(babel_core_1.default);\n fork.use(type_annotations_1.default);\n var types = fork.use(types_1.default);\n var n = types.namedTypes;\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n var StringLiteral = types.Type.from(function (value, deep) {\n if (n.StringLiteral &&\n n.StringLiteral.check(value, deep)) {\n return true;\n }\n if (n.Literal &&\n n.Literal.check(value, deep) &&\n typeof value.value === \"string\") {\n return true;\n }\n return false;\n }, \"StringLiteral\");\n def(\"TSType\")\n .bases(\"Node\");\n var TSEntityName = or(def(\"Identifier\"), def(\"TSQualifiedName\"));\n def(\"TSTypeReference\")\n .bases(\"TSType\", \"TSHasOptionalTypeParameterInstantiation\")\n .build(\"typeName\", \"typeParameters\")\n .field(\"typeName\", TSEntityName);\n // An abstract (non-buildable) base type that provide a commonly-needed\n // optional .typeParameters field.\n def(\"TSHasOptionalTypeParameterInstantiation\")\n .field(\"typeParameters\", or(def(\"TSTypeParameterInstantiation\"), null), defaults[\"null\"]);\n // An abstract (non-buildable) base type that provide a commonly-needed\n // optional .typeParameters field.\n def(\"TSHasOptionalTypeParameters\")\n .field(\"typeParameters\", or(def(\"TSTypeParameterDeclaration\"), null, void 0), defaults[\"null\"]);\n // An abstract (non-buildable) base type that provide a commonly-needed\n // optional .typeAnnotation field.\n def(\"TSHasOptionalTypeAnnotation\")\n .field(\"typeAnnotation\", or(def(\"TSTypeAnnotation\"), null), defaults[\"null\"]);\n def(\"TSQualifiedName\")\n .bases(\"Node\")\n .build(\"left\", \"right\")\n .field(\"left\", TSEntityName)\n .field(\"right\", TSEntityName);\n def(\"TSAsExpression\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"expression\", \"typeAnnotation\")\n .field(\"expression\", def(\"Expression\"))\n .field(\"typeAnnotation\", def(\"TSType\"))\n .field(\"extra\", or({ parenthesized: Boolean }, null), defaults[\"null\"]);\n def(\"TSNonNullExpression\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n [\n \"TSAnyKeyword\",\n \"TSBigIntKeyword\",\n \"TSBooleanKeyword\",\n \"TSNeverKeyword\",\n \"TSNullKeyword\",\n \"TSNumberKeyword\",\n \"TSObjectKeyword\",\n \"TSStringKeyword\",\n \"TSSymbolKeyword\",\n \"TSUndefinedKeyword\",\n \"TSUnknownKeyword\",\n \"TSVoidKeyword\",\n \"TSThisType\",\n ].forEach(function (keywordType) {\n def(keywordType)\n .bases(\"TSType\")\n .build();\n });\n def(\"TSArrayType\")\n .bases(\"TSType\")\n .build(\"elementType\")\n .field(\"elementType\", def(\"TSType\"));\n def(\"TSLiteralType\")\n .bases(\"TSType\")\n .build(\"literal\")\n .field(\"literal\", or(def(\"NumericLiteral\"), def(\"StringLiteral\"), def(\"BooleanLiteral\"), def(\"TemplateLiteral\"), def(\"UnaryExpression\")));\n [\"TSUnionType\",\n \"TSIntersectionType\",\n ].forEach(function (typeName) {\n def(typeName)\n .bases(\"TSType\")\n .build(\"types\")\n .field(\"types\", [def(\"TSType\")]);\n });\n def(\"TSConditionalType\")\n .bases(\"TSType\")\n .build(\"checkType\", \"extendsType\", \"trueType\", \"falseType\")\n .field(\"checkType\", def(\"TSType\"))\n .field(\"extendsType\", def(\"TSType\"))\n .field(\"trueType\", def(\"TSType\"))\n .field(\"falseType\", def(\"TSType\"));\n def(\"TSInferType\")\n .bases(\"TSType\")\n .build(\"typeParameter\")\n .field(\"typeParameter\", def(\"TSTypeParameter\"));\n def(\"TSParenthesizedType\")\n .bases(\"TSType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TSType\"));\n var ParametersType = [or(def(\"Identifier\"), def(\"RestElement\"), def(\"ArrayPattern\"), def(\"ObjectPattern\"))];\n [\"TSFunctionType\",\n \"TSConstructorType\",\n ].forEach(function (typeName) {\n def(typeName)\n .bases(\"TSType\", \"TSHasOptionalTypeParameters\", \"TSHasOptionalTypeAnnotation\")\n .build(\"parameters\")\n .field(\"parameters\", ParametersType);\n });\n def(\"TSDeclareFunction\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"id\", \"params\", \"returnType\")\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"async\", Boolean, defaults[\"false\"])\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"params\", [def(\"Pattern\")])\n // tSFunctionTypeAnnotationCommon\n .field(\"returnType\", or(def(\"TSTypeAnnotation\"), def(\"Noop\"), // Still used?\n null), defaults[\"null\"]);\n def(\"TSDeclareMethod\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"key\", \"params\", \"returnType\")\n .field(\"async\", Boolean, defaults[\"false\"])\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"params\", [def(\"Pattern\")])\n // classMethodOrPropertyCommon\n .field(\"abstract\", Boolean, defaults[\"false\"])\n .field(\"accessibility\", or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"])\n .field(\"static\", Boolean, defaults[\"false\"])\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"key\", or(def(\"Identifier\"), def(\"StringLiteral\"), def(\"NumericLiteral\"), \n // Only allowed if .computed is true.\n def(\"Expression\")))\n // classMethodOrDeclareMethodCommon\n .field(\"kind\", or(\"get\", \"set\", \"method\", \"constructor\"), function getDefault() { return \"method\"; })\n .field(\"access\", // Not \"accessibility\"?\n or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"])\n // tSFunctionTypeAnnotationCommon\n .field(\"returnType\", or(def(\"TSTypeAnnotation\"), def(\"Noop\"), // Still used?\n null), defaults[\"null\"]);\n def(\"TSMappedType\")\n .bases(\"TSType\")\n .build(\"typeParameter\", \"typeAnnotation\")\n .field(\"readonly\", or(Boolean, \"+\", \"-\"), defaults[\"false\"])\n .field(\"typeParameter\", def(\"TSTypeParameter\"))\n .field(\"optional\", or(Boolean, \"+\", \"-\"), defaults[\"false\"])\n .field(\"typeAnnotation\", or(def(\"TSType\"), null), defaults[\"null\"]);\n def(\"TSTupleType\")\n .bases(\"TSType\")\n .build(\"elementTypes\")\n .field(\"elementTypes\", [or(def(\"TSType\"), def(\"TSNamedTupleMember\"))]);\n def(\"TSNamedTupleMember\")\n .bases(\"TSType\")\n .build(\"label\", \"elementType\", \"optional\")\n .field(\"label\", def(\"Identifier\"))\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"elementType\", def(\"TSType\"));\n def(\"TSRestType\")\n .bases(\"TSType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSOptionalType\")\n .bases(\"TSType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSIndexedAccessType\")\n .bases(\"TSType\")\n .build(\"objectType\", \"indexType\")\n .field(\"objectType\", def(\"TSType\"))\n .field(\"indexType\", def(\"TSType\"));\n def(\"TSTypeOperator\")\n .bases(\"TSType\")\n .build(\"operator\")\n .field(\"operator\", String)\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSTypeAnnotation\")\n .bases(\"Node\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", or(def(\"TSType\"), def(\"TSTypeAnnotation\")));\n def(\"TSIndexSignature\")\n .bases(\"Declaration\", \"TSHasOptionalTypeAnnotation\")\n .build(\"parameters\", \"typeAnnotation\")\n .field(\"parameters\", [def(\"Identifier\")]) // Length === 1\n .field(\"readonly\", Boolean, defaults[\"false\"]);\n def(\"TSPropertySignature\")\n .bases(\"Declaration\", \"TSHasOptionalTypeAnnotation\")\n .build(\"key\", \"typeAnnotation\", \"optional\")\n .field(\"key\", def(\"Expression\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"readonly\", Boolean, defaults[\"false\"])\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"initializer\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"TSMethodSignature\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\", \"TSHasOptionalTypeAnnotation\")\n .build(\"key\", \"parameters\", \"typeAnnotation\")\n .field(\"key\", def(\"Expression\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"parameters\", ParametersType);\n def(\"TSTypePredicate\")\n .bases(\"TSTypeAnnotation\", \"TSType\")\n .build(\"parameterName\", \"typeAnnotation\", \"asserts\")\n .field(\"parameterName\", or(def(\"Identifier\"), def(\"TSThisType\")))\n .field(\"typeAnnotation\", or(def(\"TSTypeAnnotation\"), null), defaults[\"null\"])\n .field(\"asserts\", Boolean, defaults[\"false\"]);\n [\"TSCallSignatureDeclaration\",\n \"TSConstructSignatureDeclaration\",\n ].forEach(function (typeName) {\n def(typeName)\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\", \"TSHasOptionalTypeAnnotation\")\n .build(\"parameters\", \"typeAnnotation\")\n .field(\"parameters\", ParametersType);\n });\n def(\"TSEnumMember\")\n .bases(\"Node\")\n .build(\"id\", \"initializer\")\n .field(\"id\", or(def(\"Identifier\"), StringLiteral))\n .field(\"initializer\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"TSTypeQuery\")\n .bases(\"TSType\")\n .build(\"exprName\")\n .field(\"exprName\", or(TSEntityName, def(\"TSImportType\")));\n // Inferred from Babylon's tsParseTypeMember method.\n var TSTypeMember = or(def(\"TSCallSignatureDeclaration\"), def(\"TSConstructSignatureDeclaration\"), def(\"TSIndexSignature\"), def(\"TSMethodSignature\"), def(\"TSPropertySignature\"));\n def(\"TSTypeLiteral\")\n .bases(\"TSType\")\n .build(\"members\")\n .field(\"members\", [TSTypeMember]);\n def(\"TSTypeParameter\")\n .bases(\"Identifier\")\n .build(\"name\", \"constraint\", \"default\")\n .field(\"name\", String)\n .field(\"constraint\", or(def(\"TSType\"), void 0), defaults[\"undefined\"])\n .field(\"default\", or(def(\"TSType\"), void 0), defaults[\"undefined\"]);\n def(\"TSTypeAssertion\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"typeAnnotation\", \"expression\")\n .field(\"typeAnnotation\", def(\"TSType\"))\n .field(\"expression\", def(\"Expression\"))\n .field(\"extra\", or({ parenthesized: Boolean }, null), defaults[\"null\"]);\n def(\"TSTypeParameterDeclaration\")\n .bases(\"Declaration\")\n .build(\"params\")\n .field(\"params\", [def(\"TSTypeParameter\")]);\n def(\"TSTypeParameterInstantiation\")\n .bases(\"Node\")\n .build(\"params\")\n .field(\"params\", [def(\"TSType\")]);\n def(\"TSEnumDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"members\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"const\", Boolean, defaults[\"false\"])\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"members\", [def(\"TSEnumMember\")])\n .field(\"initializer\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"TSTypeAliasDeclaration\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"id\", \"typeAnnotation\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSModuleBlock\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n def(\"TSModuleDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"body\")\n .field(\"id\", or(StringLiteral, TSEntityName))\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"global\", Boolean, defaults[\"false\"])\n .field(\"body\", or(def(\"TSModuleBlock\"), def(\"TSModuleDeclaration\"), null), defaults[\"null\"]);\n def(\"TSImportType\")\n .bases(\"TSType\", \"TSHasOptionalTypeParameterInstantiation\")\n .build(\"argument\", \"qualifier\", \"typeParameters\")\n .field(\"argument\", StringLiteral)\n .field(\"qualifier\", or(TSEntityName, void 0), defaults[\"undefined\"]);\n def(\"TSImportEqualsDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"moduleReference\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"isExport\", Boolean, defaults[\"false\"])\n .field(\"moduleReference\", or(TSEntityName, def(\"TSExternalModuleReference\")));\n def(\"TSExternalModuleReference\")\n .bases(\"Declaration\")\n .build(\"expression\")\n .field(\"expression\", StringLiteral);\n def(\"TSExportAssignment\")\n .bases(\"Statement\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"TSNamespaceExportDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n def(\"TSInterfaceBody\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [TSTypeMember]);\n def(\"TSExpressionWithTypeArguments\")\n .bases(\"TSType\", \"TSHasOptionalTypeParameterInstantiation\")\n .build(\"expression\", \"typeParameters\")\n .field(\"expression\", TSEntityName);\n def(\"TSInterfaceDeclaration\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"id\", \"body\")\n .field(\"id\", TSEntityName)\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"extends\", or([def(\"TSExpressionWithTypeArguments\")], null), defaults[\"null\"])\n .field(\"body\", def(\"TSInterfaceBody\"));\n def(\"TSParameterProperty\")\n .bases(\"Pattern\")\n .build(\"parameter\")\n .field(\"accessibility\", or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"])\n .field(\"readonly\", Boolean, defaults[\"false\"])\n .field(\"parameter\", or(def(\"Identifier\"), def(\"AssignmentPattern\")));\n def(\"ClassProperty\")\n .field(\"access\", // Not \"accessibility\"?\n or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"]);\n // Defined already in es6 and babel-core.\n def(\"ClassBody\")\n .field(\"body\", [or(def(\"MethodDefinition\"), def(\"VariableDeclarator\"), def(\"ClassPropertyDefinition\"), def(\"ClassProperty\"), def(\"ClassPrivateProperty\"), def(\"ClassMethod\"), def(\"ClassPrivateMethod\"), \n // Just need to add these types:\n def(\"TSDeclareMethod\"), TSTypeMember)]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nvar core_1 = tslib_1.__importDefault(require(\"./core\"));\nfunction default_1(fork) {\n fork.use(core_1.default);\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var def = types.Type.def;\n var or = Type.or;\n var shared = fork.use(shared_1.default);\n var defaults = shared.defaults;\n // https://github.com/tc39/proposal-optional-chaining\n // `a?.b` as per https://github.com/estree/estree/issues/146\n def(\"OptionalMemberExpression\")\n .bases(\"MemberExpression\")\n .build(\"object\", \"property\", \"computed\", \"optional\")\n .field(\"optional\", Boolean, defaults[\"true\"]);\n // a?.b()\n def(\"OptionalCallExpression\")\n .bases(\"CallExpression\")\n .build(\"callee\", \"arguments\", \"optional\")\n .field(\"optional\", Boolean, defaults[\"true\"]);\n // https://github.com/tc39/proposal-nullish-coalescing\n // `a ?? b` as per https://github.com/babel/babylon/pull/761/files\n var LogicalOperator = or(\"||\", \"&&\", \"??\");\n def(\"LogicalExpression\")\n .field(\"operator\", LogicalOperator);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.namedTypes = void 0;\nvar namedTypes;\n(function (namedTypes) {\n})(namedTypes = exports.namedTypes || (exports.namedTypes = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.visit = exports.use = exports.Type = exports.someField = exports.PathVisitor = exports.Path = exports.NodePath = exports.namedTypes = exports.getSupertypeNames = exports.getFieldValue = exports.getFieldNames = exports.getBuilderName = exports.finalize = exports.eachField = exports.defineMethod = exports.builtInTypes = exports.builders = exports.astNodesAreEquivalent = void 0;\nvar tslib_1 = require(\"tslib\");\nvar fork_1 = tslib_1.__importDefault(require(\"./fork\"));\nvar core_1 = tslib_1.__importDefault(require(\"./def/core\"));\nvar es6_1 = tslib_1.__importDefault(require(\"./def/es6\"));\nvar es7_1 = tslib_1.__importDefault(require(\"./def/es7\"));\nvar es2020_1 = tslib_1.__importDefault(require(\"./def/es2020\"));\nvar jsx_1 = tslib_1.__importDefault(require(\"./def/jsx\"));\nvar flow_1 = tslib_1.__importDefault(require(\"./def/flow\"));\nvar esprima_1 = tslib_1.__importDefault(require(\"./def/esprima\"));\nvar babel_1 = tslib_1.__importDefault(require(\"./def/babel\"));\nvar typescript_1 = tslib_1.__importDefault(require(\"./def/typescript\"));\nvar es_proposals_1 = tslib_1.__importDefault(require(\"./def/es-proposals\"));\nvar namedTypes_1 = require(\"./gen/namedTypes\");\nObject.defineProperty(exports, \"namedTypes\", { enumerable: true, get: function () { return namedTypes_1.namedTypes; } });\nvar _a = fork_1.default([\n // This core module of AST types captures ES5 as it is parsed today by\n // git://github.com/ariya/esprima.git#master.\n core_1.default,\n // Feel free to add to or remove from this list of extension modules to\n // configure the precise type hierarchy that you need.\n es6_1.default,\n es7_1.default,\n es2020_1.default,\n jsx_1.default,\n flow_1.default,\n esprima_1.default,\n babel_1.default,\n typescript_1.default,\n es_proposals_1.default,\n]), astNodesAreEquivalent = _a.astNodesAreEquivalent, builders = _a.builders, builtInTypes = _a.builtInTypes, defineMethod = _a.defineMethod, eachField = _a.eachField, finalize = _a.finalize, getBuilderName = _a.getBuilderName, getFieldNames = _a.getFieldNames, getFieldValue = _a.getFieldValue, getSupertypeNames = _a.getSupertypeNames, n = _a.namedTypes, NodePath = _a.NodePath, Path = _a.Path, PathVisitor = _a.PathVisitor, someField = _a.someField, Type = _a.Type, use = _a.use, visit = _a.visit;\nexports.astNodesAreEquivalent = astNodesAreEquivalent;\nexports.builders = builders;\nexports.builtInTypes = builtInTypes;\nexports.defineMethod = defineMethod;\nexports.eachField = eachField;\nexports.finalize = finalize;\nexports.getBuilderName = getBuilderName;\nexports.getFieldNames = getFieldNames;\nexports.getFieldValue = getFieldValue;\nexports.getSupertypeNames = getSupertypeNames;\nexports.NodePath = NodePath;\nexports.Path = Path;\nexports.PathVisitor = PathVisitor;\nexports.someField = someField;\nexports.Type = Type;\nexports.use = use;\nexports.visit = visit;\n// Populate the exported fields of the namedTypes namespace, while still\n// retaining its member types.\nObject.assign(namedTypes_1.namedTypes, n);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Netmask4Impl = void 0;\nexports.ip2long = ip2long;\nexports.long2ip = long2ip;\nfunction long2ip(long) {\n const a = (long & (0xff << 24)) >>> 24;\n const b = (long & (0xff << 16)) >>> 16;\n const c = (long & (0xff << 8)) >>> 8;\n const d = long & 0xff;\n return [a, b, c, d].join('.');\n}\nconst chr0 = '0'.charCodeAt(0);\nconst chra = 'a'.charCodeAt(0);\nconst chrA = 'A'.charCodeAt(0);\nfunction parseNum(s) {\n let n = 0;\n let base = 10;\n let dmax = '9';\n let i = 0;\n if (s.length > 1 && s[i] === '0') {\n if (s[i + 1] === 'x' || s[i + 1] === 'X') {\n i += 2;\n base = 16;\n }\n else if ('0' <= s[i + 1] && s[i + 1] <= '9') {\n i++;\n base = 8;\n dmax = '7';\n }\n }\n const start = i;\n while (i < s.length) {\n if ('0' <= s[i] && s[i] <= dmax) {\n n = (n * base + (s.charCodeAt(i) - chr0)) >>> 0;\n }\n else if (base === 16) {\n if ('a' <= s[i] && s[i] <= 'f') {\n n = (n * base + (10 + s.charCodeAt(i) - chra)) >>> 0;\n }\n else if ('A' <= s[i] && s[i] <= 'F') {\n n = (n * base + (10 + s.charCodeAt(i) - chrA)) >>> 0;\n }\n else {\n break;\n }\n }\n else {\n break;\n }\n if (n > 0xFFFFFFFF) {\n throw new Error('too large');\n }\n i++;\n }\n if (i === start) {\n throw new Error('empty octet');\n }\n return [n, i];\n}\nfunction ip2long(ip) {\n const b = [];\n for (let i = 0; i <= 3; i++) {\n if (ip.length === 0) {\n break;\n }\n if (i > 0) {\n if (ip[0] !== '.') {\n throw new Error('Invalid IP');\n }\n ip = ip.substring(1);\n }\n const [n, c] = parseNum(ip);\n ip = ip.substring(c);\n b.push(n);\n }\n if (ip.length !== 0) {\n throw new Error('Invalid IP');\n }\n switch (b.length) {\n case 1:\n if (b[0] > 0xFFFFFFFF) {\n throw new Error('Invalid IP');\n }\n return b[0] >>> 0;\n case 2:\n if (b[0] > 0xFF || b[1] > 0xFFFFFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1]) >>> 0;\n case 3:\n if (b[0] > 0xFF || b[1] > 0xFF || b[2] > 0xFFFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1] << 16 | b[2]) >>> 0;\n case 4:\n if (b[0] > 0xFF || b[1] > 0xFF || b[2] > 0xFF || b[3] > 0xFF) {\n throw new Error('Invalid IP');\n }\n return (b[0] << 24 | b[1] << 16 | b[2] << 8 | b[3]) >>> 0;\n default:\n throw new Error('Invalid IP');\n }\n}\nclass Netmask4Impl {\n constructor(net, mask) {\n if (typeof net !== 'string') {\n throw new Error(\"Missing `net' parameter\");\n }\n let maskStr = mask;\n if (!maskStr) {\n const parts = net.split('/', 2);\n net = parts[0];\n maskStr = parts[1];\n }\n if (!maskStr) {\n maskStr = 32;\n }\n if (typeof maskStr === 'string' && maskStr.indexOf('.') > -1) {\n try {\n this.maskLong = ip2long(maskStr);\n }\n catch (error) {\n throw new Error(\"Invalid mask: \" + maskStr);\n }\n this.bitmask = NaN;\n for (let i = 32; i >= 0; i--) {\n if (this.maskLong === (0xffffffff << (32 - i)) >>> 0) {\n this.bitmask = i;\n break;\n }\n }\n }\n else if (maskStr || maskStr === 0) {\n this.bitmask = parseInt(maskStr, 10);\n this.maskLong = 0;\n if (this.bitmask > 0) {\n this.maskLong = (0xffffffff << (32 - this.bitmask)) >>> 0;\n }\n }\n else {\n throw new Error(\"Invalid mask: empty\");\n }\n try {\n this.netLong = (ip2long(net) & this.maskLong) >>> 0;\n }\n catch (error) {\n throw new Error(\"Invalid net address: \" + net);\n }\n if (!(this.bitmask <= 32)) {\n throw new Error(\"Invalid mask for ip4: \" + maskStr);\n }\n this.size = Math.pow(2, 32 - this.bitmask);\n this.base = long2ip(this.netLong);\n this.mask = long2ip(this.maskLong);\n this.hostmask = long2ip(~this.maskLong);\n this.first = this.bitmask <= 30 ? long2ip(this.netLong + 1) : this.base;\n this.last = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 2) : long2ip(this.netLong + this.size - 1);\n this.broadcast = this.bitmask <= 30 ? long2ip(this.netLong + this.size - 1) : undefined;\n }\n contains(ip) {\n if (typeof ip === 'string' && (ip.indexOf('/') > 0 || ip.split('.').length !== 4)) {\n ip = new Netmask4Impl(ip);\n }\n if (ip instanceof Netmask4Impl) {\n return this.contains(ip.base) && this.contains((ip.broadcast || ip.last));\n }\n else {\n return (ip2long(ip) & this.maskLong) >>> 0 === (this.netLong & this.maskLong) >>> 0;\n }\n }\n next(count = 1) {\n return new Netmask4Impl(long2ip(this.netLong + (this.size * count)), this.mask);\n }\n forEach(fn) {\n let long = ip2long(this.first);\n const lastLong = ip2long(this.last);\n let index = 0;\n while (long <= lastLong) {\n fn(long2ip(long), long, index);\n index++;\n long++;\n }\n }\n toString() {\n return this.base + \"/\" + this.bitmask;\n }\n}\nexports.Netmask4Impl = Netmask4Impl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Netmask6Impl = void 0;\nexports.ip6bigint = ip6bigint;\nexports.bigint2ip6 = bigint2ip6;\nconst netmask4_1 = require(\"./netmask4\");\nconst MAX_IPV6 = (1n << 128n) - 1n;\nfunction ip6bigint(ip) {\n // Strip zone ID (e.g. %eth0)\n const zoneIdx = ip.indexOf('%');\n if (zoneIdx !== -1) {\n ip = ip.substring(0, zoneIdx);\n }\n // Handle mixed IPv4-mapped (e.g. ::ffff:192.168.1.1)\n const lastColon = ip.lastIndexOf(':');\n if (lastColon !== -1 && ip.indexOf('.', lastColon) !== -1) {\n const ipv4Part = ip.substring(lastColon + 1);\n const ipv4Long = (0, netmask4_1.ip2long)(ipv4Part);\n // IPv4 part replaces last 2 groups (32 bits), expand prefix to 6 groups\n const ipv6Prefix = ip.substring(0, lastColon + 1) + '0:0';\n const prefixVal = parseIPv6Pure(ipv6Prefix);\n return (prefixVal & ~0xffffffffn) | BigInt(ipv4Long);\n }\n return parseIPv6Pure(ip);\n}\nfunction parseIPv6Pure(ip) {\n const doubleColonIdx = ip.indexOf('::');\n let groups;\n if (doubleColonIdx !== -1) {\n const left = ip.substring(0, doubleColonIdx);\n const right = ip.substring(doubleColonIdx + 2);\n const leftGroups = left === '' ? [] : left.split(':');\n const rightGroups = right === '' ? [] : right.split(':');\n const missing = 8 - leftGroups.length - rightGroups.length;\n if (missing < 0) {\n throw new Error('Invalid IPv6: too many groups');\n }\n groups = [...leftGroups, ...Array(missing).fill('0'), ...rightGroups];\n }\n else {\n groups = ip.split(':');\n }\n if (groups.length !== 8) {\n throw new Error('Invalid IPv6: expected 8 groups, got ' + groups.length);\n }\n let result = 0n;\n for (let i = 0; i < 8; i++) {\n const g = groups[i];\n if (g.length === 0 || g.length > 4) {\n throw new Error('Invalid IPv6: bad group \"' + g + '\"');\n }\n const val = parseInt(g, 16);\n if (isNaN(val) || val < 0 || val > 0xffff) {\n throw new Error('Invalid IPv6: bad group \"' + g + '\"');\n }\n result = (result << 16n) | BigInt(val);\n }\n return result;\n}\nfunction bigint2ip6(n) {\n if (n < 0n || n > MAX_IPV6) {\n throw new Error('Invalid IPv6 address value');\n }\n const groups = [];\n for (let i = 0; i < 8; i++) {\n groups.unshift(Number(n & 0xffffn));\n n >>= 16n;\n }\n // RFC 5952: find longest run of consecutive zero groups\n let bestStart = -1;\n let bestLen = 0;\n let curStart = -1;\n let curLen = 0;\n for (let i = 0; i < 8; i++) {\n if (groups[i] === 0) {\n if (curStart === -1) {\n curStart = i;\n curLen = 1;\n }\n else {\n curLen++;\n }\n }\n else {\n if (curLen > bestLen && curLen >= 2) {\n bestStart = curStart;\n bestLen = curLen;\n }\n curStart = -1;\n curLen = 0;\n }\n }\n if (curLen > bestLen && curLen >= 2) {\n bestStart = curStart;\n bestLen = curLen;\n }\n if (bestStart !== -1 && bestStart + bestLen === 8 && bestStart > 0) {\n const before = groups.slice(0, bestStart).map(g => g.toString(16));\n return before.join(':') + '::';\n }\n else if (bestStart === 0) {\n const after = groups.slice(bestLen).map(g => g.toString(16));\n return '::' + after.join(':');\n }\n else if (bestStart > 0) {\n const before = groups.slice(0, bestStart).map(g => g.toString(16));\n const after = groups.slice(bestStart + bestLen).map(g => g.toString(16));\n return before.join(':') + '::' + after.join(':');\n }\n else {\n return groups.map(g => g.toString(16)).join(':');\n }\n}\nclass Netmask6Impl {\n constructor(net, mask) {\n if (typeof net !== 'string') {\n throw new Error(\"Missing `net' parameter\");\n }\n let prefixLen = mask;\n if (prefixLen === undefined || prefixLen === null) {\n const slashIdx = net.indexOf('/');\n if (slashIdx !== -1) {\n prefixLen = parseInt(net.substring(slashIdx + 1), 10);\n net = net.substring(0, slashIdx);\n }\n else {\n prefixLen = 128;\n }\n }\n if (isNaN(prefixLen) || prefixLen < 0 || prefixLen > 128) {\n throw new Error('Invalid mask for IPv6: ' + prefixLen);\n }\n this.bitmask = prefixLen;\n if (this.bitmask === 0) {\n this.maskBigint = 0n;\n }\n else {\n this.maskBigint = (MAX_IPV6 >> BigInt(128 - this.bitmask)) << BigInt(128 - this.bitmask);\n }\n try {\n this.netBigint = ip6bigint(net) & this.maskBigint;\n }\n catch (error) {\n throw new Error('Invalid IPv6 net address: ' + net);\n }\n this.size = Number(1n << BigInt(128 - this.bitmask));\n this.base = bigint2ip6(this.netBigint);\n this.mask = bigint2ip6(this.maskBigint);\n this.hostmask = bigint2ip6(~this.maskBigint & MAX_IPV6);\n this.first = this.base;\n this.last = bigint2ip6(this.netBigint + (1n << BigInt(128 - this.bitmask)) - 1n);\n this.broadcast = undefined;\n }\n contains(ip) {\n if (typeof ip === 'string') {\n if (ip.indexOf('/') > 0) {\n ip = new Netmask6Impl(ip);\n }\n }\n if (ip instanceof Netmask6Impl) {\n return this.contains(ip.base) && this.contains(ip.last);\n }\n else {\n const addr = ip6bigint(ip);\n return (addr & this.maskBigint) === this.netBigint;\n }\n }\n next(count = 1) {\n const sizeBig = 1n << BigInt(128 - this.bitmask);\n return new Netmask6Impl(bigint2ip6(this.netBigint + sizeBig * BigInt(count)), this.bitmask);\n }\n forEach(fn) {\n let addr = this.netBigint;\n const sizeBig = 1n << BigInt(128 - this.bitmask);\n const lastAddr = this.netBigint + sizeBig - 1n;\n let index = 0;\n while (addr <= lastAddr) {\n fn(bigint2ip6(addr), Number(addr), index);\n index++;\n addr++;\n }\n }\n toString() {\n return this.base + '/' + this.bitmask;\n }\n}\nexports.Netmask6Impl = Netmask6Impl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.long2ip = exports.ip2long = exports.Netmask = void 0;\nconst netmask4_1 = require(\"./netmask4\");\nObject.defineProperty(exports, \"ip2long\", { enumerable: true, get: function () { return netmask4_1.ip2long; } });\nObject.defineProperty(exports, \"long2ip\", { enumerable: true, get: function () { return netmask4_1.long2ip; } });\nconst netmask6_1 = require(\"./netmask6\");\nclass Netmask {\n constructor(net, mask) {\n if (typeof net !== 'string') {\n throw new Error(\"Missing `net' parameter\");\n }\n // Detect IPv6: check the address part (before any /) for ':'\n const addrPart = net.indexOf('/') !== -1 ? net.substring(0, net.indexOf('/')) : net;\n if (addrPart.indexOf(':') !== -1) {\n this._impl = new netmask6_1.Netmask6Impl(net, mask);\n }\n else {\n this._impl = new netmask4_1.Netmask4Impl(net, mask);\n }\n this.base = this._impl.base;\n this.mask = this._impl.mask;\n this.hostmask = this._impl.hostmask;\n this.bitmask = this._impl.bitmask;\n this.size = this._impl.size;\n this.first = this._impl.first;\n this.last = this._impl.last;\n this.broadcast = this._impl.broadcast;\n if (this._impl instanceof netmask4_1.Netmask4Impl) {\n this.maskLong = this._impl.maskLong;\n this.netLong = this._impl.netLong;\n }\n else {\n this.maskLong = 0;\n this.netLong = 0;\n }\n }\n contains(ip) {\n if (typeof ip === 'string') {\n // If it has a '/', it's a CIDR block — wrap it\n if (ip.indexOf('/') > 0) {\n ip = new Netmask(ip);\n }\n // IPv4 shorthand (fewer than 4 octets, no colons) — wrap it\n else if (ip.indexOf(':') === -1 && ip.split('.').length !== 4) {\n ip = new Netmask(ip);\n }\n }\n if (ip instanceof Netmask) {\n return this.contains(ip.base) && this.contains(ip.broadcast || ip.last);\n }\n // Plain IP string — delegate to impl\n return this._impl.contains(ip);\n }\n next(count = 1) {\n const nextImpl = this._impl.next(count);\n const result = new Netmask(nextImpl.base, nextImpl.bitmask);\n return result;\n }\n /** @deprecated */\n forEach(fn) {\n this._impl.forEach(fn);\n }\n toString() {\n return this._impl.toString();\n }\n}\nexports.Netmask = Netmask;\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"mappings":"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AA,cACP,MAAM;AAAA,cACN,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAM;AAAA,cACN,KAAK;AAAA,cACL,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAM;AAAA,cACN,KAAK;AAAA,cACL,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,MAAM;AAAA,cACN,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,MAAM;AAAA,cACN,MAAM;AAAA,cACN,OAAO;AAAA,cACP,OAAO;AA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","names":["data","ip","FileType","file","file","b","file","__createBinding","__setModuleDefault","__importStar","ownKeys","o","ftp","Client","file","ftp","__createBinding","__exportStar","exports","exports","replace","result","path","traverse","element","key","comment","ch","sourceFile","file","needle","section","target","indent","fragment","i","iz","generate","module","exports","parseScript","CommentHandler","__extends","extendStatics","b","JSXParser","JSXClosingElement","JSXElement","JSXEmptyExpression","JSXExpressionContainer","JSXIdentifier","JSXMemberExpression","JSXAttribute","JSXNamespacedName","JSXOpeningElement","JSXSpreadAttribute","JSXText","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AssignmentExpression","AssignmentPattern","AsyncArrowFunctionExpression","AsyncFunctionDeclaration","AsyncFunctionExpression","AwaitExpression","BinaryExpression","BlockStatement","BreakStatement","CallExpression","CatchClause","ClassBody","ClassDeclaration","ClassExpression","ComputedMemberExpression","ConditionalExpression","ContinueStatement","DebuggerStatement","Directive","DoWhileStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForInStatement","ForOfStatement","ForStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","LabeledStatement","Literal","MetaProperty","MethodDefinition","Module","NewExpression","ObjectExpression","ObjectPattern","Property","RegexLiteral","RestElement","ReturnStatement","Script","SequenceExpression","SpreadElement","StaticMemberExpression","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","Parser","ErrorHandler","Scanner","Reader","Tokenizer","b","n","v","d","__assign","o","BaseType","ArrayType","IdentityType","ObjectType","OrType","types","PredicateType","Def","Field","name","DefImpl","_i","types","Path","newIndex","childPath","types","b","Scope","scopeTypes","types","n","b","NodePath","types","undefined","PathVisitor","Visitor","visit","types","b","types","types","types","types","types","types","types","types","types","require_esprima","types","types","types","n","types","namedTypes","n","visit","b","n","ip","net","ip","n","net","Netmask","net","ip","import_debug","net","crypto","once","URL","import_debug","data","createDebug","import_debug","debug","createDebug","import_debug","debug","createDebug","isNotModified","import_debug","debug","createDebug","type","https","debug","createDebug","https","n","path","b","types","types","ip","n","valueInRange","data","__addDisposableResource","n","view","debug","createDebug","URL","once"]}