UNPKG

541 kBSource Map (JSON)View Raw
1{"version":3,"file":"buble.es.js","sources":["../node_modules/acorn-jsx/xhtml.js","../node_modules/acorn-jsx/inject.js","../node_modules/acorn-dynamic-import/lib/inject.js","../src/program/Node.js","../src/program/extractNames.js","../src/utils/reserved.js","../src/program/Scope.js","../src/utils/locate.js","../src/utils/getSnippet.js","../src/utils/CompileError.js","../src/utils/array.js","../src/utils/destructure.js","../src/program/BlockStatement.js","../src/utils/spread.js","../src/program/types/ArrayExpression.js","../src/utils/removeTrailingComma.js","../src/program/types/ArrowFunctionExpression.js","../src/utils/checkConst.js","../src/program/types/AssignmentExpression.js","../src/program/types/BinaryExpression.js","../src/utils/patterns.js","../src/program/types/BreakStatement.js","../src/program/types/CallExpression.js","../src/program/types/ClassBody.js","../src/utils/deindent.js","../src/program/types/ClassDeclaration.js","../src/program/types/ClassExpression.js","../src/program/types/ContinueStatement.js","../src/program/types/ExportDefaultDeclaration.js","../src/program/types/ExportNamedDeclaration.js","../src/program/types/shared/LoopStatement.js","../src/program/types/ForStatement.js","../src/program/types/ForInStatement.js","../src/program/types/ForOfStatement.js","../src/program/types/FunctionDeclaration.js","../src/program/types/FunctionExpression.js","../src/utils/isReference.js","../src/program/types/Identifier.js","../src/program/types/IfStatement.js","../src/program/types/ImportDeclaration.js","../src/program/types/ImportDefaultSpecifier.js","../src/program/types/ImportSpecifier.js","../src/program/types/JSXAttribute.js","../src/program/types/JSXClosingElement.js","../src/program/types/JSXClosingFragment.js","../src/program/types/JSXElement.js","../src/program/types/JSXExpressionContainer.js","../src/program/types/JSXFragment.js","../src/program/types/JSXOpeningElement.js","../src/program/types/JSXOpeningFragment.js","../src/program/types/JSXSpreadAttribute.js","../node_modules/regjsgen/regjsgen.js","../node_modules/regjsparser/parser.js","../node_modules/regenerate/regenerate.js","../node_modules/unicode-canonical-property-names-ecmascript/index.js","../node_modules/unicode-property-aliases-ecmascript/index.js","../node_modules/unicode-match-property-ecmascript/index.js","../node_modules/unicode-match-property-value-ecmascript/data/mappings.js","../node_modules/unicode-match-property-value-ecmascript/index.js","../node_modules/regexpu-core/data/iu-mappings.js","../node_modules/regexpu-core/data/character-class-escape-sets.js","../node_modules/regexpu-core/rewrite-pattern.js","../src/program/types/Literal.js","../src/program/types/MemberExpression.js","../src/program/types/NewExpression.js","../src/program/types/ObjectExpression.js","../src/program/types/Property.js","../src/program/types/ReturnStatement.js","../src/program/types/SpreadElement.js","../src/program/types/Super.js","../src/program/types/TaggedTemplateExpression.js","../src/program/types/TemplateElement.js","../src/program/types/TemplateLiteral.js","../src/program/types/ThisExpression.js","../src/program/types/UpdateExpression.js","../src/program/types/VariableDeclaration.js","../src/program/types/VariableDeclarator.js","../src/program/types/index.js","../src/program/keys.js","../src/program/wrap.js","../src/program/Program.js","../src/support.js","../src/index.js"],"sourcesContent":["module.exports = {\n quot: '\\u0022',\n amp: '&',\n apos: '\\u0027',\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\\u00A1',\n cent: '\\u00A2',\n pound: '\\u00A3',\n curren: '\\u00A4',\n yen: '\\u00A5',\n brvbar: '\\u00A6',\n sect: '\\u00A7',\n uml: '\\u00A8',\n copy: '\\u00A9',\n ordf: '\\u00AA',\n laquo: '\\u00AB',\n not: '\\u00AC',\n shy: '\\u00AD',\n reg: '\\u00AE',\n macr: '\\u00AF',\n deg: '\\u00B0',\n plusmn: '\\u00B1',\n sup2: '\\u00B2',\n sup3: '\\u00B3',\n acute: '\\u00B4',\n micro: '\\u00B5',\n para: '\\u00B6',\n middot: '\\u00B7',\n cedil: '\\u00B8',\n sup1: '\\u00B9',\n ordm: '\\u00BA',\n raquo: '\\u00BB',\n frac14: '\\u00BC',\n frac12: '\\u00BD',\n frac34: '\\u00BE',\n iquest: '\\u00BF',\n Agrave: '\\u00C0',\n Aacute: '\\u00C1',\n Acirc: '\\u00C2',\n Atilde: '\\u00C3',\n Auml: '\\u00C4',\n Aring: '\\u00C5',\n AElig: '\\u00C6',\n Ccedil: '\\u00C7',\n Egrave: '\\u00C8',\n Eacute: '\\u00C9',\n Ecirc: '\\u00CA',\n Euml: '\\u00CB',\n Igrave: '\\u00CC',\n Iacute: '\\u00CD',\n Icirc: '\\u00CE',\n Iuml: '\\u00CF',\n ETH: '\\u00D0',\n Ntilde: '\\u00D1',\n Ograve: '\\u00D2',\n Oacute: '\\u00D3',\n Ocirc: '\\u00D4',\n Otilde: '\\u00D5',\n Ouml: '\\u00D6',\n times: '\\u00D7',\n Oslash: '\\u00D8',\n Ugrave: '\\u00D9',\n Uacute: '\\u00DA',\n Ucirc: '\\u00DB',\n Uuml: '\\u00DC',\n Yacute: '\\u00DD',\n THORN: '\\u00DE',\n szlig: '\\u00DF',\n agrave: '\\u00E0',\n aacute: '\\u00E1',\n acirc: '\\u00E2',\n atilde: '\\u00E3',\n auml: '\\u00E4',\n aring: '\\u00E5',\n aelig: '\\u00E6',\n ccedil: '\\u00E7',\n egrave: '\\u00E8',\n eacute: '\\u00E9',\n ecirc: '\\u00EA',\n euml: '\\u00EB',\n igrave: '\\u00EC',\n iacute: '\\u00ED',\n icirc: '\\u00EE',\n iuml: '\\u00EF',\n eth: '\\u00F0',\n ntilde: '\\u00F1',\n ograve: '\\u00F2',\n oacute: '\\u00F3',\n ocirc: '\\u00F4',\n otilde: '\\u00F5',\n ouml: '\\u00F6',\n divide: '\\u00F7',\n oslash: '\\u00F8',\n ugrave: '\\u00F9',\n uacute: '\\u00FA',\n ucirc: '\\u00FB',\n uuml: '\\u00FC',\n yacute: '\\u00FD',\n thorn: '\\u00FE',\n yuml: '\\u00FF',\n OElig: '\\u0152',\n oelig: '\\u0153',\n Scaron: '\\u0160',\n scaron: '\\u0161',\n Yuml: '\\u0178',\n fnof: '\\u0192',\n circ: '\\u02C6',\n tilde: '\\u02DC',\n Alpha: '\\u0391',\n Beta: '\\u0392',\n Gamma: '\\u0393',\n Delta: '\\u0394',\n Epsilon: '\\u0395',\n Zeta: '\\u0396',\n Eta: '\\u0397',\n Theta: '\\u0398',\n Iota: '\\u0399',\n Kappa: '\\u039A',\n Lambda: '\\u039B',\n Mu: '\\u039C',\n Nu: '\\u039D',\n Xi: '\\u039E',\n Omicron: '\\u039F',\n Pi: '\\u03A0',\n Rho: '\\u03A1',\n Sigma: '\\u03A3',\n Tau: '\\u03A4',\n Upsilon: '\\u03A5',\n Phi: '\\u03A6',\n Chi: '\\u03A7',\n Psi: '\\u03A8',\n Omega: '\\u03A9',\n alpha: '\\u03B1',\n beta: '\\u03B2',\n gamma: '\\u03B3',\n delta: '\\u03B4',\n epsilon: '\\u03B5',\n zeta: '\\u03B6',\n eta: '\\u03B7',\n theta: '\\u03B8',\n iota: '\\u03B9',\n kappa: '\\u03BA',\n lambda: '\\u03BB',\n mu: '\\u03BC',\n nu: '\\u03BD',\n xi: '\\u03BE',\n omicron: '\\u03BF',\n pi: '\\u03C0',\n rho: '\\u03C1',\n sigmaf: '\\u03C2',\n sigma: '\\u03C3',\n tau: '\\u03C4',\n upsilon: '\\u03C5',\n phi: '\\u03C6',\n chi: '\\u03C7',\n psi: '\\u03C8',\n omega: '\\u03C9',\n thetasym: '\\u03D1',\n upsih: '\\u03D2',\n piv: '\\u03D6',\n ensp: '\\u2002',\n emsp: '\\u2003',\n thinsp: '\\u2009',\n zwnj: '\\u200C',\n zwj: '\\u200D',\n lrm: '\\u200E',\n rlm: '\\u200F',\n ndash: '\\u2013',\n mdash: '\\u2014',\n lsquo: '\\u2018',\n rsquo: '\\u2019',\n sbquo: '\\u201A',\n ldquo: '\\u201C',\n rdquo: '\\u201D',\n bdquo: '\\u201E',\n dagger: '\\u2020',\n Dagger: '\\u2021',\n bull: '\\u2022',\n hellip: '\\u2026',\n permil: '\\u2030',\n prime: '\\u2032',\n Prime: '\\u2033',\n lsaquo: '\\u2039',\n rsaquo: '\\u203A',\n oline: '\\u203E',\n frasl: '\\u2044',\n euro: '\\u20AC',\n image: '\\u2111',\n weierp: '\\u2118',\n real: '\\u211C',\n trade: '\\u2122',\n alefsym: '\\u2135',\n larr: '\\u2190',\n uarr: '\\u2191',\n rarr: '\\u2192',\n darr: '\\u2193',\n harr: '\\u2194',\n crarr: '\\u21B5',\n lArr: '\\u21D0',\n uArr: '\\u21D1',\n rArr: '\\u21D2',\n dArr: '\\u21D3',\n hArr: '\\u21D4',\n forall: '\\u2200',\n part: '\\u2202',\n exist: '\\u2203',\n empty: '\\u2205',\n nabla: '\\u2207',\n isin: '\\u2208',\n notin: '\\u2209',\n ni: '\\u220B',\n prod: '\\u220F',\n sum: '\\u2211',\n minus: '\\u2212',\n lowast: '\\u2217',\n radic: '\\u221A',\n prop: '\\u221D',\n infin: '\\u221E',\n ang: '\\u2220',\n and: '\\u2227',\n or: '\\u2228',\n cap: '\\u2229',\n cup: '\\u222A',\n 'int': '\\u222B',\n there4: '\\u2234',\n sim: '\\u223C',\n cong: '\\u2245',\n asymp: '\\u2248',\n ne: '\\u2260',\n equiv: '\\u2261',\n le: '\\u2264',\n ge: '\\u2265',\n sub: '\\u2282',\n sup: '\\u2283',\n nsub: '\\u2284',\n sube: '\\u2286',\n supe: '\\u2287',\n oplus: '\\u2295',\n otimes: '\\u2297',\n perp: '\\u22A5',\n sdot: '\\u22C5',\n lceil: '\\u2308',\n rceil: '\\u2309',\n lfloor: '\\u230A',\n rfloor: '\\u230B',\n lang: '\\u2329',\n rang: '\\u232A',\n loz: '\\u25CA',\n spades: '\\u2660',\n clubs: '\\u2663',\n hearts: '\\u2665',\n diams: '\\u2666'\n};\n","'use strict';\n\nvar XHTMLEntities = require('./xhtml');\n\nvar hexNumber = /^[\\da-fA-F]+$/;\nvar decimalNumber = /^\\d+$/;\n\nmodule.exports = function(acorn) {\n var tt = acorn.tokTypes;\n var tc = acorn.tokContexts;\n\n tc.j_oTag = new acorn.TokContext('<tag', false);\n tc.j_cTag = new acorn.TokContext('</tag', false);\n tc.j_expr = new acorn.TokContext('<tag>...</tag>', true, true);\n\n tt.jsxName = new acorn.TokenType('jsxName');\n tt.jsxText = new acorn.TokenType('jsxText', {beforeExpr: true});\n tt.jsxTagStart = new acorn.TokenType('jsxTagStart');\n tt.jsxTagEnd = new acorn.TokenType('jsxTagEnd');\n\n tt.jsxTagStart.updateContext = function() {\n this.context.push(tc.j_expr); // treat as beginning of JSX expression\n this.context.push(tc.j_oTag); // start opening tag context\n this.exprAllowed = false;\n };\n tt.jsxTagEnd.updateContext = function(prevType) {\n var out = this.context.pop();\n if (out === tc.j_oTag && prevType === tt.slash || out === tc.j_cTag) {\n this.context.pop();\n this.exprAllowed = this.curContext() === tc.j_expr;\n } else {\n this.exprAllowed = true;\n }\n };\n\n var pp = acorn.Parser.prototype;\n\n // Reads inline JSX contents token.\n\n pp.jsx_readToken = function() {\n var out = '', chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length)\n this.raise(this.start, 'Unterminated JSX contents');\n var ch = this.input.charCodeAt(this.pos);\n\n switch (ch) {\n case 60: // '<'\n case 123: // '{'\n if (this.pos === this.start) {\n if (ch === 60 && this.exprAllowed) {\n ++this.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return this.getTokenFromCode(ch);\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(tt.jsxText, out);\n\n case 38: // '&'\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readEntity();\n chunkStart = this.pos;\n break;\n\n default:\n if (acorn.isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readNewLine(true);\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n }\n };\n\n pp.jsx_readNewLine = function(normalizeCRLF) {\n var ch = this.input.charCodeAt(this.pos);\n var out;\n ++this.pos;\n if (ch === 13 && this.input.charCodeAt(this.pos) === 10) {\n ++this.pos;\n out = normalizeCRLF ? '\\n' : '\\r\\n';\n } else {\n out = String.fromCharCode(ch);\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n\n return out;\n };\n\n pp.jsx_readString = function(quote) {\n var out = '', chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length)\n this.raise(this.start, 'Unterminated string constant');\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) break;\n if (ch === 38) { // '&'\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readEntity();\n chunkStart = this.pos;\n } else if (acorn.isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readNewLine(false);\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(tt.string, out);\n };\n\n pp.jsx_readEntity = function() {\n var str = '', count = 0, entity;\n var ch = this.input[this.pos];\n if (ch !== '&')\n this.raise(this.pos, 'Entity must start with an ampersand');\n var startPos = ++this.pos;\n while (this.pos < this.input.length && count++ < 10) {\n ch = this.input[this.pos++];\n if (ch === ';') {\n if (str[0] === '#') {\n if (str[1] === 'x') {\n str = str.substr(2);\n if (hexNumber.test(str))\n entity = String.fromCharCode(parseInt(str, 16));\n } else {\n str = str.substr(1);\n if (decimalNumber.test(str))\n entity = String.fromCharCode(parseInt(str, 10));\n }\n } else {\n entity = XHTMLEntities[str];\n }\n break;\n }\n str += ch;\n }\n if (!entity) {\n this.pos = startPos;\n return '&';\n }\n return entity;\n };\n\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can't contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n pp.jsx_readWord = function() {\n var ch, start = this.pos;\n do {\n ch = this.input.charCodeAt(++this.pos);\n } while (acorn.isIdentifierChar(ch) || ch === 45); // '-'\n return this.finishToken(tt.jsxName, this.input.slice(start, this.pos));\n };\n\n // Transforms JSX element name to string.\n\n function getQualifiedJSXName(object) {\n if (!object)\n return object;\n\n if (object.type === 'JSXIdentifier')\n return object.name;\n\n if (object.type === 'JSXNamespacedName')\n return object.namespace.name + ':' + object.name.name;\n\n if (object.type === 'JSXMemberExpression')\n return getQualifiedJSXName(object.object) + '.' +\n getQualifiedJSXName(object.property);\n }\n\n // Parse next token as JSX identifier\n\n pp.jsx_parseIdentifier = function() {\n var node = this.startNode();\n if (this.type === tt.jsxName)\n node.name = this.value;\n else if (this.type.keyword)\n node.name = this.type.keyword;\n else\n this.unexpected();\n this.next();\n return this.finishNode(node, 'JSXIdentifier');\n };\n\n // Parse namespaced identifier.\n\n pp.jsx_parseNamespacedName = function() {\n var startPos = this.start, startLoc = this.startLoc;\n var name = this.jsx_parseIdentifier();\n if (!this.options.plugins.jsx.allowNamespaces || !this.eat(tt.colon)) return name;\n var node = this.startNodeAt(startPos, startLoc);\n node.namespace = name;\n node.name = this.jsx_parseIdentifier();\n return this.finishNode(node, 'JSXNamespacedName');\n };\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n pp.jsx_parseElementName = function() {\n if (this.type === tt.jsxTagEnd)\n return '';\n var startPos = this.start, startLoc = this.startLoc;\n var node = this.jsx_parseNamespacedName();\n if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !this.options.plugins.jsx.allowNamespacedObjects) {\n this.unexpected();\n }\n while (this.eat(tt.dot)) {\n var newNode = this.startNodeAt(startPos, startLoc);\n newNode.object = node;\n newNode.property = this.jsx_parseIdentifier();\n node = this.finishNode(newNode, 'JSXMemberExpression');\n }\n return node;\n };\n\n // Parses any type of JSX attribute value.\n\n pp.jsx_parseAttributeValue = function() {\n switch (this.type) {\n case tt.braceL:\n var node = this.jsx_parseExpressionContainer();\n if (node.expression.type === 'JSXEmptyExpression')\n this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression');\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom();\n\n default:\n this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text');\n }\n };\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n pp.jsx_parseEmptyExpression = function() {\n var node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);\n return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc);\n };\n\n // Parses JSX expression enclosed into curly brackets.\n\n\n pp.jsx_parseExpressionContainer = function() {\n var node = this.startNode();\n this.next();\n node.expression = this.type === tt.braceR\n ? this.jsx_parseEmptyExpression()\n : this.parseExpression();\n this.expect(tt.braceR);\n return this.finishNode(node, 'JSXExpressionContainer');\n };\n\n // Parses following JSX attribute name-value pair.\n\n pp.jsx_parseAttribute = function() {\n var node = this.startNode();\n if (this.eat(tt.braceL)) {\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssign();\n this.expect(tt.braceR);\n return this.finishNode(node, 'JSXSpreadAttribute');\n }\n node.name = this.jsx_parseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null;\n return this.finishNode(node, 'JSXAttribute');\n };\n\n // Parses JSX opening tag starting after '<'.\n\n pp.jsx_parseOpeningElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n node.attributes = [];\n var nodeName = this.jsx_parseElementName();\n if (nodeName) node.name = nodeName;\n while (this.type !== tt.slash && this.type !== tt.jsxTagEnd)\n node.attributes.push(this.jsx_parseAttribute());\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, nodeName ? 'JSXOpeningElement' : 'JSXOpeningFragment');\n };\n\n // Parses JSX closing tag starting after '</'.\n\n pp.jsx_parseClosingElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n var nodeName = this.jsx_parseElementName();\n if (nodeName) node.name = nodeName;\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, nodeName ? 'JSXClosingElement' : 'JSXClosingFragment');\n };\n\n // Parses entire JSX element, including it's opening tag\n // (starting after '<'), attributes, contents and closing tag.\n\n pp.jsx_parseElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n var children = [];\n var openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc);\n var closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.type) {\n case tt.jsxTagStart:\n startPos = this.start; startLoc = this.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);\n break contents;\n }\n children.push(this.jsx_parseElementAt(startPos, startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseExprAtom());\n break;\n\n case tt.braceL:\n children.push(this.jsx_parseExpressionContainer());\n break;\n\n default:\n this.unexpected();\n }\n }\n if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n this.raise(\n closingElement.start,\n 'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>');\n }\n }\n\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n node.children = children;\n if (this.type === tt.relational && this.value === \"<\") {\n this.raise(this.start, \"Adjacent JSX elements must be wrapped in an enclosing tag\");\n }\n return this.finishNode(node, openingElement.name ? 'JSXElement' : 'JSXFragment');\n };\n\n // Parse JSX text\n\n pp.jsx_parseText = function(value) {\n var node = this.parseLiteral(value);\n node.type = \"JSXText\";\n\n return node;\n };\n\n // Parses entire JSX element from current position.\n\n pp.jsx_parseElement = function() {\n var startPos = this.start, startLoc = this.startLoc;\n this.next();\n return this.jsx_parseElementAt(startPos, startLoc);\n };\n\n acorn.plugins.jsx = function(instance, opts) {\n if (!opts) {\n return;\n }\n\n if (typeof opts !== 'object') {\n opts = {};\n }\n\n instance.options.plugins.jsx = {\n allowNamespaces: opts.allowNamespaces !== false,\n allowNamespacedObjects: !!opts.allowNamespacedObjects\n };\n\n instance.extend('parseExprAtom', function(inner) {\n return function(refShortHandDefaultPos) {\n if (this.type === tt.jsxText)\n return this.jsx_parseText(this.value);\n else if (this.type === tt.jsxTagStart)\n return this.jsx_parseElement();\n else\n return inner.call(this, refShortHandDefaultPos);\n };\n });\n\n instance.extend('readToken', function(inner) {\n return function(code) {\n var context = this.curContext();\n\n if (context === tc.j_expr) return this.jsx_readToken();\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (acorn.isIdentifierStart(code)) return this.jsx_readWord();\n\n if (code == 62) {\n ++this.pos;\n return this.finishToken(tt.jsxTagEnd);\n }\n\n if ((code === 34 || code === 39) && context == tc.j_oTag)\n return this.jsx_readString(code);\n }\n\n if (code === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33) {\n ++this.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return inner.call(this, code);\n };\n });\n\n instance.extend('updateContext', function(inner) {\n return function(prevType) {\n if (this.type == tt.braceL) {\n var curContext = this.curContext();\n if (curContext == tc.j_oTag) this.context.push(tc.b_expr);\n else if (curContext == tc.j_expr) this.context.push(tc.b_tmpl);\n else inner.call(this, prevType);\n this.exprAllowed = true;\n } else if (this.type === tt.slash && prevType === tt.jsxTagStart) {\n this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n this.context.push(tc.j_cTag); // reconsider as closing tag context\n this.exprAllowed = false;\n } else {\n return inner.call(this, prevType);\n }\n };\n });\n };\n\n return acorn;\n};\n","Object.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports['default'] = injectDynamicImport;\n/* eslint-disable no-underscore-dangle */\n\nvar DynamicImportKey = exports.DynamicImportKey = 'Import';\n\nfunction injectDynamicImport(acorn) {\n var tt = acorn.tokTypes;\n\n // NOTE: This allows `yield import()` to parse correctly.\n tt._import.startsExpr = true;\n\n function parseDynamicImport() {\n var node = this.startNode();\n this.next();\n if (this.type !== tt.parenL) {\n this.unexpected();\n }\n return this.finishNode(node, DynamicImportKey);\n }\n\n function peekNext() {\n return this.input[this.pos];\n }\n\n // eslint-disable-next-line no-param-reassign\n acorn.plugins.dynamicImport = function () {\n function dynamicImportPlugin(instance) {\n instance.extend('parseStatement', function (nextMethod) {\n return function () {\n function parseStatement() {\n var node = this.startNode();\n if (this.type === tt._import) {\n var nextToken = peekNext.call(this);\n if (nextToken === tt.parenL.label) {\n var expr = this.parseExpression();\n return this.parseExpressionStatement(node, expr);\n }\n }\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return nextMethod.apply(this, args);\n }\n\n return parseStatement;\n }();\n });\n\n instance.extend('parseExprAtom', function (nextMethod) {\n return function () {\n function parseExprAtom(refDestructuringErrors) {\n if (this.type === tt._import) {\n return parseDynamicImport.call(this);\n }\n return nextMethod.call(this, refDestructuringErrors);\n }\n\n return parseExprAtom;\n }();\n });\n }\n\n return dynamicImportPlugin;\n }();\n\n return acorn;\n}","// used for debugging, without the noise created by\n// circular references\nfunction toJSON(node) {\n\tvar obj = {};\n\n\tObject.keys(node).forEach(key => {\n\t\tif (\n\t\t\tkey === 'parent' ||\n\t\t\tkey === 'program' ||\n\t\t\tkey === 'keys' ||\n\t\t\tkey === '__wrapped'\n\t\t)\n\t\t\treturn;\n\n\t\tif (Array.isArray(node[key])) {\n\t\t\tobj[key] = node[key].map(toJSON);\n\t\t} else if (node[key] && node[key].toJSON) {\n\t\t\tobj[key] = node[key].toJSON();\n\t\t} else {\n\t\t\tobj[key] = node[key];\n\t\t}\n\t});\n\n\treturn obj;\n}\n\nexport default class Node {\n\tancestor(level) {\n\t\tlet node = this;\n\t\twhile (level--) {\n\t\t\tnode = node.parent;\n\t\t\tif (!node) return null;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tcontains(node) {\n\t\twhile (node) {\n\t\t\tif (node === this) return true;\n\t\t\tnode = node.parent;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfindLexicalBoundary() {\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindNearest(type) {\n\t\tif (typeof type === 'string') type = new RegExp(`^${type}$`);\n\t\tif (type.test(this.type)) return this;\n\t\treturn this.parent.findNearest(type);\n\t}\n\n\tunparenthesizedParent() {\n\t\tlet node = this.parent;\n\t\twhile (node && node.type === 'ParenthesizedExpression') {\n\t\t\tnode = node.parent;\n\t\t}\n\t\treturn node;\n\t}\n\n\tunparenthesize() {\n\t\tlet node = this;\n\t\twhile (node.type === 'ParenthesizedExpression') {\n\t\t\tnode = node.expression;\n\t\t}\n\t\treturn node;\n\t}\n\n\tfindScope(functionScope) {\n\t\treturn this.parent.findScope(functionScope);\n\t}\n\n\tgetIndentation() {\n\t\treturn this.parent.getIndentation();\n\t}\n\n\tinitialise(transforms) {\n\t\tfor (var key of this.keys) {\n\t\t\tconst value = this[key];\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tvalue.forEach(node => node && node.initialise(transforms));\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\tvalue.initialise(transforms);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\treturn toJSON(this);\n\t}\n\n\ttoString() {\n\t\treturn this.program.magicString.original.slice(this.start, this.end);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tfor (const key of this.keys) {\n\t\t\tconst value = this[key];\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tvalue.forEach(node => node && node.transpile(code, transforms));\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\tvalue.transpile(code, transforms);\n\t\t\t}\n\t\t}\n\t}\n}\n","export default function extractNames(node) {\n\tconst names = [];\n\textractors[node.type](names, node);\n\treturn names;\n}\n\nconst extractors = {\n\tIdentifier(names, node) {\n\t\tnames.push(node);\n\t},\n\n\tObjectPattern(names, node) {\n\t\tfor (const prop of node.properties) {\n\t\t\textractors[prop.type](names, prop);\n\t\t}\n\t},\n\n\tProperty(names, node) {\n\t\textractors[node.value.type](names, node.value);\n\t},\n\n\tArrayPattern(names, node) {\n\t\tfor (const element of node.elements) {\n\t\t\tif (element) extractors[element.type](names, element);\n\t\t}\n\t},\n\n\tRestElement(names, node) {\n\t\textractors[node.argument.type](names, node.argument);\n\t},\n\n\tAssignmentPattern(names, node) {\n\t\textractors[node.left.type](names, node.left);\n\t}\n};\n","let reserved = Object.create(null);\n'do if in for let new try var case else enum eval null this true void with await break catch class const false super throw while yield delete export import public return static switch typeof default extends finally package private continue debugger function arguments interface protected implements instanceof'\n\t.split(' ')\n\t.forEach(word => (reserved[word] = true));\n\nexport default reserved;\n","import extractNames from './extractNames.js';\nimport reserved from '../utils/reserved.js';\n\nexport default function Scope(options) {\n\toptions = options || {};\n\n\tthis.parent = options.parent;\n\tthis.isBlockScope = !!options.block;\n\tthis.createDeclarationCallback = options.declare;\n\n\tlet scope = this;\n\twhile (scope.isBlockScope) scope = scope.parent;\n\tthis.functionScope = scope;\n\n\tthis.identifiers = [];\n\tthis.declarations = Object.create(null);\n\tthis.references = Object.create(null);\n\tthis.blockScopedDeclarations = this.isBlockScope ? null : Object.create(null);\n\tthis.aliases = Object.create(null);\n}\n\nScope.prototype = {\n\taddDeclaration(node, kind) {\n\t\tfor (const identifier of extractNames(node)) {\n\t\t\tconst name = identifier.name;\n\n\t\t\tconst declaration = { name, node: identifier, kind, instances: [] };\n\t\t\tthis.declarations[name] = declaration;\n\n\t\t\tif (this.isBlockScope) {\n\t\t\t\tif (!this.functionScope.blockScopedDeclarations[name])\n\t\t\t\t\tthis.functionScope.blockScopedDeclarations[name] = [];\n\t\t\t\tthis.functionScope.blockScopedDeclarations[name].push(declaration);\n\t\t\t}\n\t\t}\n\t},\n\n\taddReference(identifier) {\n\t\tif (this.consolidated) {\n\t\t\tthis.consolidateReference(identifier);\n\t\t} else {\n\t\t\tthis.identifiers.push(identifier);\n\t\t}\n\t},\n\n\tconsolidate() {\n\t\tfor (let i = 0; i < this.identifiers.length; i += 1) {\n\t\t\t// we might push to the array during consolidation, so don't cache length\n\t\t\tconst identifier = this.identifiers[i];\n\t\t\tthis.consolidateReference(identifier);\n\t\t}\n\n\t\tthis.consolidated = true; // TODO understand why this is necessary... seems bad\n\t},\n\n\tconsolidateReference(identifier) {\n\t\tconst declaration = this.declarations[identifier.name];\n\t\tif (declaration) {\n\t\t\tdeclaration.instances.push(identifier);\n\t\t} else {\n\t\t\tthis.references[identifier.name] = true;\n\t\t\tif (this.parent) this.parent.addReference(identifier);\n\t\t}\n\t},\n\n\tcontains(name) {\n\t\treturn (\n\t\t\tthis.declarations[name] ||\n\t\t\t(this.parent ? this.parent.contains(name) : false)\n\t\t);\n\t},\n\n\tcreateIdentifier(base) {\n\t\tif (typeof base === 'number') base = base.toString();\n\n\t\tbase = base\n\t\t\t.replace(/\\s/g, '')\n\t\t\t.replace(/\\[([^\\]]+)\\]/g, '_$1')\n\t\t\t.replace(/[^a-zA-Z0-9_$]/g, '_')\n\t\t\t.replace(/_{2,}/, '_');\n\n\t\tlet name = base;\n\t\tlet counter = 1;\n\n\t\twhile (\n\t\t\tthis.declarations[name] ||\n\t\t\tthis.references[name] ||\n\t\t\tthis.aliases[name] ||\n\t\t\tname in reserved\n\t\t) {\n\t\t\tname = `${base}$${counter++}`;\n\t\t}\n\n\t\tthis.aliases[name] = true;\n\t\treturn name;\n\t},\n\n\tcreateDeclaration(base) {\n\t\tconst id = this.createIdentifier(base);\n\t\tthis.createDeclarationCallback(id);\n\t\treturn id;\n\t},\n\n\tfindDeclaration(name) {\n\t\treturn (\n\t\t\tthis.declarations[name] ||\n\t\t\t(this.parent && this.parent.findDeclaration(name))\n\t\t);\n\t},\n\n\t// Sometimes, block scope declarations change name during transpilation\n\tresolveName(name) {\n\t\tconst declaration = this.findDeclaration(name);\n\t\treturn declaration ? declaration.name : name;\n\t}\n};\n","export default function locate(source, index) {\n\tvar lines = source.split('\\n');\n\tvar len = lines.length;\n\n\tvar lineStart = 0;\n\tvar i;\n\n\tfor (i = 0; i < len; i += 1) {\n\t\tvar line = lines[i];\n\t\tvar lineEnd = lineStart + line.length + 1; // +1 for newline\n\n\t\tif (lineEnd > index) {\n\t\t\treturn { line: i + 1, column: index - lineStart, char: i };\n\t\t}\n\n\t\tlineStart = lineEnd;\n\t}\n\n\tthrow new Error('Could not determine location of character');\n}\n","function pad(num, len) {\n\tlet result = String(num);\n\treturn result + repeat(' ', len - result.length);\n}\n\nfunction repeat(str, times) {\n\tlet result = '';\n\twhile (times--) result += str;\n\treturn result;\n}\n\nexport default function getSnippet(source, loc, length = 1) {\n\tconst first = Math.max(loc.line - 5, 0);\n\tconst last = loc.line;\n\n\tconst numDigits = String(last).length;\n\n\tconst lines = source.split('\\n').slice(first, last);\n\n\tconst lastLine = lines[lines.length - 1];\n\tconst offset = lastLine.slice(0, loc.column).replace(/\\t/g, ' ').length;\n\n\tlet snippet = lines\n\t\t.map((line, i) => `${pad(i + first + 1, numDigits)} : ${line.replace(/\\t/g, ' ')}`)\n\t\t.join('\\n');\n\n\tsnippet += '\\n' + repeat(' ', numDigits + 3 + offset) + repeat('^', length);\n\n\treturn snippet;\n}\n","import locate from './locate.js';\nimport getSnippet from './getSnippet.js';\n\nexport default class CompileError extends Error {\n\tconstructor(message, node) {\n\t\tsuper(message);\n\n\t\tthis.name = 'CompileError';\n\t\tif (!node) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst source = node.program.magicString.original;\n\t\tconst loc = locate(source, node.start);\n\n\t\tthis.message = message + ` (${loc.line}:${loc.column})`;\n\n\t\tthis.stack = new Error().stack.replace(\n\t\t\tnew RegExp(`.+new ${this.name}.+\\\\n`, 'm'),\n\t\t\t''\n\t\t);\n\n\t\tthis.loc = loc;\n\t\tthis.snippet = getSnippet(source, loc, node.end - node.start);\n\t}\n\n\ttoString() {\n\t\treturn `${this.name}: ${this.message}\\n${this.snippet}`;\n\t}\n}\n","export function findIndex(array, fn) {\n\tfor (let i = 0; i < array.length; i += 1) {\n\t\tif (fn(array[i], i)) return i;\n\t}\n\n\treturn -1;\n}\n\nexport function find(array, fn) {\n\treturn array[findIndex(array, fn)];\n}\n","import CompileError from '../utils/CompileError.js';\nimport { findIndex } from './array.js';\n\nconst handlers = {\n\tIdentifier: destructureIdentifier,\n\tAssignmentPattern: destructureAssignmentPattern,\n\tArrayPattern: destructureArrayPattern,\n\tObjectPattern: destructureObjectPattern\n};\n\nexport default function destructure(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\thandlers[node.type](code, createIdentifier, resolveName, node, ref, inline, statementGenerators);\n}\n\nfunction destructureIdentifier(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tstatementGenerators.push((start, prefix, suffix) => {\n\t\tcode.overwrite(node.start, node.end, (inline ? prefix : `${prefix}var `) + resolveName(node) + ` = ${ref}${suffix}`);\n\t\tcode.move(node.start, node.end, start);\n\t});\n}\n\nfunction destructureMemberExpression(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tstatementGenerators.push((start, prefix, suffix) => {\n\t\tcode.prependRight(node.start, inline ? prefix : `${prefix}var `);\n\t\tcode.appendLeft(node.end, ` = ${ref}${suffix}`);\n\t\tcode.move(node.start, node.end, start);\n\t});\n}\n\nfunction destructureAssignmentPattern(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tconst isIdentifier = node.left.type === 'Identifier';\n\tconst name = isIdentifier ? node.left.name : ref;\n\n\tif (!inline) {\n\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\tcode.prependRight(\n\t\t\t\tnode.left.end,\n\t\t\t\t`${prefix}if ( ${name} === void 0 ) ${name}`\n\t\t\t);\n\t\t\tcode.move(node.left.end, node.right.end, start);\n\t\t\tcode.appendLeft(node.right.end, suffix);\n\t\t});\n\t}\n\n\tif (!isIdentifier) {\n\t\tdestructure(code, createIdentifier, resolveName, node.left, ref, inline, statementGenerators);\n\t}\n}\n\nfunction destructureArrayPattern(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tlet c = node.start;\n\n\tnode.elements.forEach((element, i) => {\n\t\tif (!element) return;\n\n\t\tif (element.type === 'RestElement') {\n\t\t\thandleProperty(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tc,\n\t\t\t\telement.argument,\n\t\t\t\t`${ref}.slice(${i})`,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t} else {\n\t\t\thandleProperty(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tc,\n\t\t\t\telement,\n\t\t\t\t`${ref}[${i}]`,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t}\n\t\tc = element.end;\n\t});\n\n\tcode.remove(c, node.end);\n}\n\nfunction destructureObjectPattern(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tlet c = node.start;\n\n\tconst nonRestKeys = [];\n\tnode.properties.forEach(prop => {\n\t\tlet value;\n\t\tlet content;\n\t\tif (prop.type === 'Property') {\n\t\t\tconst isComputedKey = prop.computed || prop.key.type !== 'Identifier';\n\t\t\tconst key = isComputedKey\n\t\t\t\t? code.slice(prop.key.start, prop.key.end)\n\t\t\t\t: prop.key.name;\n\t\t\tvalue = isComputedKey ? `${ref}[${key}]` : `${ref}.${key}`;\n\t\t\tcontent = prop.value;\n\t\t\tnonRestKeys.push(isComputedKey ? key : '\"' + key + '\"');\n\t\t} else if (prop.type === 'RestElement') {\n\t\t\tcontent = prop.argument;\n\t\t\tvalue = createIdentifier('rest');\n\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst helper = prop.program.getObjectWithoutPropertiesHelper(code);\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tprop.start,\n\t\t\t\t\t(c = prop.argument.start),\n\t\t\t\t\t(inline ? prefix : `${prefix}var `) + `${value} = ${helper}( ${ref}, [${nonRestKeys.join(', ')}] )${suffix}`\n\t\t\t\t);\n\t\t\t\tcode.move(prop.start, c, start);\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new CompileError(\n\t\t\t\tthis,\n\t\t\t\t`Unexpected node of type ${prop.type} in object pattern`\n\t\t\t);\n\t\t}\n\t\thandleProperty(code, createIdentifier, resolveName, c, content, value, inline, statementGenerators);\n\t\tc = prop.end;\n\t});\n\n\tcode.remove(c, node.end);\n}\n\nfunction handleProperty(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tc,\n\tnode,\n\tvalue,\n\tinline,\n\tstatementGenerators\n) {\n\tswitch (node.type) {\n\t\tcase 'Identifier': {\n\t\t\tcode.remove(c, node.start);\n\t\t\tdestructureIdentifier(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tnode,\n\t\t\t\tvalue,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'MemberExpression':\n\t\t\tcode.remove(c, node.start);\n\t\t\tdestructureMemberExpression(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tnode,\n\t\t\t\tvalue,\n\t\t\t\ttrue,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase 'AssignmentPattern': {\n\t\t\tlet name;\n\n\t\t\tconst isIdentifier = node.left.type === 'Identifier';\n\n\t\t\tif (isIdentifier) {\n\t\t\t\tname = resolveName(node.left);\n\t\t\t} else {\n\t\t\t\tname = createIdentifier(value);\n\t\t\t}\n\n\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tif (inline) {\n\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\tnode.right.start,\n\t\t\t\t\t\t`${name} = ${value}, ${name} = ${name} === void 0 ? `\n\t\t\t\t\t);\n\t\t\t\t\tcode.appendLeft(node.right.end, ` : ${name}${suffix}`);\n\t\t\t\t} else {\n\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\tnode.right.start,\n\t\t\t\t\t\t`${prefix}var ${name} = ${value}; if ( ${name} === void 0 ) ${name} = `\n\t\t\t\t\t);\n\t\t\t\t\tcode.appendLeft(node.right.end, suffix);\n\t\t\t\t}\n\n\t\t\t\tcode.move(node.right.start, node.right.end, start);\n\t\t\t});\n\n\t\t\tif (isIdentifier) {\n\t\t\t\tcode.remove(c, node.right.start);\n\t\t\t} else {\n\t\t\t\tcode.remove(c, node.left.start);\n\t\t\t\tcode.remove(node.left.end, node.right.start);\n\t\t\t\thandleProperty(\n\t\t\t\t\tcode,\n\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\tresolveName,\n\t\t\t\t\tc,\n\t\t\t\t\tnode.left,\n\t\t\t\t\tname,\n\t\t\t\t\tinline,\n\t\t\t\t\tstatementGenerators\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'ObjectPattern': {\n\t\t\tcode.remove(c, (c = node.start));\n\n\t\t\tlet ref = value;\n\t\t\tif (node.properties.length > 1) {\n\t\t\t\tref = createIdentifier(value);\n\n\t\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t// this feels a tiny bit hacky, but we can't do a\n\t\t\t\t\t// straightforward appendLeft and keep correct order...\n\t\t\t\t\tcode.prependRight(node.start, (inline ? '' : `${prefix}var `) + `${ref} = `);\n\t\t\t\t\tcode.overwrite(node.start, (c = node.start + 1), value);\n\t\t\t\t\tcode.appendLeft(c, suffix);\n\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tnode.start,\n\t\t\t\t\t\t(c = node.start + 1),\n\t\t\t\t\t\t(inline ? '' : `${prefix}var `) + `${ref} = ${value}${suffix}`\n\t\t\t\t\t);\n\t\t\t\t\tcode.move(node.start, c, start);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdestructureObjectPattern(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tnode,\n\t\t\t\tref,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'ArrayPattern': {\n\t\t\tcode.remove(c, (c = node.start));\n\n\t\t\tif (node.elements.filter(Boolean).length > 1) {\n\t\t\t\tconst ref = createIdentifier(value);\n\n\t\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\tcode.prependRight(node.start, (inline ? '' : `${prefix}var `) + `${ref} = `);\n\t\t\t\t\tcode.overwrite(node.start, (c = node.start + 1), value, {\n\t\t\t\t\t\tcontentOnly: true\n\t\t\t\t\t});\n\t\t\t\t\tcode.appendLeft(c, suffix);\n\n\t\t\t\t\tcode.move(node.start, c, start);\n\t\t\t\t});\n\n\t\t\t\tnode.elements.forEach((element, i) => {\n\t\t\t\t\tif (!element) return;\n\n\t\t\t\t\tif (element.type === 'RestElement') {\n\t\t\t\t\t\thandleProperty(\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\telement.argument,\n\t\t\t\t\t\t\t`${ref}.slice(${i})`,\n\t\t\t\t\t\t\tinline,\n\t\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleProperty(\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\telement,\n\t\t\t\t\t\t\t`${ref}[${i}]`,\n\t\t\t\t\t\t\tinline,\n\t\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tc = element.end;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst index = findIndex(node.elements, Boolean);\n\t\t\t\tconst element = node.elements[index];\n\t\t\t\tif (element.type === 'RestElement') {\n\t\t\t\t\thandleProperty(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\tc,\n\t\t\t\t\t\telement.argument,\n\t\t\t\t\t\t`${value}.slice(${index})`,\n\t\t\t\t\t\tinline,\n\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\thandleProperty(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\tc,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\t`${value}[${index}]`,\n\t\t\t\t\t\tinline,\n\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tc = element.end;\n\t\t\t}\n\n\t\t\tcode.remove(c, node.end);\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tthrow new Error(`Unexpected node type in destructuring (${node.type})`);\n\t\t}\n\t}\n}\n","import Node from './Node.js';\nimport Scope from './Scope.js';\nimport destructure from '../utils/destructure.js';\n\nfunction isUseStrict(node) {\n\tif (!node) return false;\n\tif (node.type !== 'ExpressionStatement') return false;\n\tif (node.expression.type !== 'Literal') return false;\n\treturn node.expression.value === 'use strict';\n}\n\nexport default class BlockStatement extends Node {\n\tcreateScope() {\n\t\tthis.parentIsFunction = /Function/.test(this.parent.type);\n\t\tthis.isFunctionBlock = this.parentIsFunction || this.parent.type === 'Root';\n\t\tthis.scope = new Scope({\n\t\t\tblock: !this.isFunctionBlock,\n\t\t\tparent: this.parent.findScope(false),\n\t\t\tdeclare: id => this.createdDeclarations.push(id)\n\t\t});\n\n\t\tif (this.parentIsFunction) {\n\t\t\tthis.parent.params.forEach(node => {\n\t\t\t\tthis.scope.addDeclaration(node, 'param');\n\t\t\t});\n\t\t}\n\t}\n\n\tinitialise(transforms) {\n\t\tthis.thisAlias = null;\n\t\tthis.argumentsAlias = null;\n\t\tthis.defaultParameters = [];\n\t\tthis.createdDeclarations = [];\n\n\t\t// normally the scope gets created here, during initialisation,\n\t\t// but in some cases (e.g. `for` statements), we need to create\n\t\t// the scope early, as it pertains to both the init block and\n\t\t// the body of the statement\n\t\tif (!this.scope) this.createScope();\n\n\t\tthis.body.forEach(node => node.initialise(transforms));\n\n\t\tthis.scope.consolidate();\n\t}\n\n\tfindLexicalBoundary() {\n\t\tif (this.type === 'Program') return this;\n\t\tif (/^Function/.test(this.parent.type)) return this;\n\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindScope(functionScope) {\n\t\tif (functionScope && !this.isFunctionBlock)\n\t\t\treturn this.parent.findScope(functionScope);\n\t\treturn this.scope;\n\t}\n\n\tgetArgumentsAlias() {\n\t\tif (!this.argumentsAlias) {\n\t\t\tthis.argumentsAlias = this.scope.createIdentifier('arguments');\n\t\t}\n\n\t\treturn this.argumentsAlias;\n\t}\n\n\tgetArgumentsArrayAlias() {\n\t\tif (!this.argumentsArrayAlias) {\n\t\t\tthis.argumentsArrayAlias = this.scope.createIdentifier('argsArray');\n\t\t}\n\n\t\treturn this.argumentsArrayAlias;\n\t}\n\n\tgetThisAlias() {\n\t\tif (!this.thisAlias) {\n\t\t\tthis.thisAlias = this.scope.createIdentifier('this');\n\t\t}\n\n\t\treturn this.thisAlias;\n\t}\n\n\tgetIndentation() {\n\t\tif (this.indentation === undefined) {\n\t\t\tconst source = this.program.magicString.original;\n\n\t\t\tconst useOuter = this.synthetic || !this.body.length;\n\t\t\tlet c = useOuter ? this.start : this.body[0].start;\n\n\t\t\twhile (c && source[c] !== '\\n') c -= 1;\n\n\t\t\tthis.indentation = '';\n\n\t\t\t// eslint-disable-next-line no-constant-condition\n\t\t\twhile (true) {\n\t\t\t\tc += 1;\n\t\t\t\tconst char = source[c];\n\n\t\t\t\tif (char !== ' ' && char !== '\\t') break;\n\n\t\t\t\tthis.indentation += char;\n\t\t\t}\n\n\t\t\tconst indentString = this.program.magicString.getIndentString();\n\n\t\t\t// account for dedented class constructors\n\t\t\tlet parent = this.parent;\n\t\t\twhile (parent) {\n\t\t\t\tif (parent.kind === 'constructor' && !parent.parent.parent.superClass) {\n\t\t\t\t\tthis.indentation = this.indentation.replace(indentString, '');\n\t\t\t\t}\n\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\tif (useOuter) this.indentation += indentString;\n\t\t}\n\n\t\treturn this.indentation;\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst indentation = this.getIndentation();\n\n\t\tlet introStatementGenerators = [];\n\n\t\tif (this.argumentsAlias) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.argumentsAlias} = arguments${\n\t\t\t\t\tsuffix\n\t\t\t\t}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (this.thisAlias) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.thisAlias} = this${suffix}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (this.argumentsArrayAlias) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst i = this.scope.createIdentifier('i');\n\t\t\t\tconst assignment = `${prefix}var ${i} = arguments.length, ${\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t} = Array(${i});\\n${indentation}while ( ${i}-- ) ${\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t}[${i}] = arguments[${i}]${suffix}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (/Function/.test(this.parent.type)) {\n\t\t\tthis.transpileParameters(\n\t\t\t\tthis.parent.params,\n\t\t\t\tcode,\n\t\t\t\ttransforms,\n\t\t\t\tindentation,\n\t\t\t\tintroStatementGenerators\n\t\t\t);\n\t\t} else if ('CatchClause' === this.parent.type) {\n\t\t\tthis.transpileParameters(\n\t\t\t\t[this.parent.param],\n\t\t\t\tcode,\n\t\t\t\ttransforms,\n\t\t\t\tindentation,\n\t\t\t\tintroStatementGenerators\n\t\t\t);\n\t\t}\n\n\t\tif (transforms.letConst && this.isFunctionBlock) {\n\t\t\tthis.transpileBlockScopedIdentifiers(code);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (this.createdDeclarations.length) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.createdDeclarations.join(', ')}${suffix}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (this.synthetic) {\n\t\t\tif (this.parent.type === 'ArrowFunctionExpression') {\n\t\t\t\tconst expr = this.body[0];\n\n\t\t\t\tif (introStatementGenerators.length) {\n\t\t\t\t\tcode\n\t\t\t\t\t\t.appendLeft(this.start, `{`)\n\t\t\t\t\t\t.prependRight(this.end, `${this.parent.getIndentation()}}`);\n\n\t\t\t\t\tcode.prependRight(expr.start, `\\n${indentation}return `);\n\t\t\t\t\tcode.appendLeft(expr.end, `;\\n`);\n\t\t\t\t} else if (transforms.arrow) {\n\t\t\t\t\tcode.prependRight(expr.start, `{ return `);\n\t\t\t\t\tcode.appendLeft(expr.end, `; }`);\n\t\t\t\t}\n\t\t\t} else if (introStatementGenerators.length) {\n\t\t\t\tcode.prependRight(this.start, `{`).appendLeft(this.end, `}`);\n\t\t\t}\n\t\t}\n\n\t\tlet start;\n\t\tif (isUseStrict(this.body[0])) {\n\t\t\tstart = this.body[0].end;\n\t\t} else if (this.synthetic || this.parent.type === 'Root') {\n\t\t\tstart = this.start;\n\t\t} else {\n\t\t\tstart = this.start + 1;\n\t\t}\n\n\t\tlet prefix = `\\n${indentation}`;\n\t\tlet suffix = ';';\n\t\tintroStatementGenerators.forEach((fn, i) => {\n\t\t\tif (i === introStatementGenerators.length - 1) suffix = `;\\n`;\n\t\t\tfn(start, prefix, suffix);\n\t\t});\n\t}\n\n\ttranspileParameters(params, code, transforms, indentation, introStatementGenerators) {\n\t\tparams.forEach(param => {\n\t\t\tif (\n\t\t\t\tparam.type === 'AssignmentPattern' &&\n\t\t\t\tparam.left.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tif (transforms.defaultParameter) {\n\t\t\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t\tconst lhs = `${prefix}if ( ${param.left.name} === void 0 ) ${\n\t\t\t\t\t\t\tparam.left.name\n\t\t\t\t\t\t}`;\n\n\t\t\t\t\t\tcode\n\t\t\t\t\t\t\t.prependRight(param.left.end, lhs)\n\t\t\t\t\t\t\t.move(param.left.end, param.right.end, start)\n\t\t\t\t\t\t\t.appendLeft(param.right.end, suffix);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (param.type === 'RestElement') {\n\t\t\t\tif (transforms.spreadRest) {\n\t\t\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t\tconst penultimateParam = params[params.length - 2];\n\n\t\t\t\t\t\tif (penultimateParam) {\n\t\t\t\t\t\t\tcode.remove(\n\t\t\t\t\t\t\t\tpenultimateParam ? penultimateParam.end : param.start,\n\t\t\t\t\t\t\t\tparam.end\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet start = param.start,\n\t\t\t\t\t\t\t\tend = param.end; // TODO https://gitlab.com/Rich-Harris/buble/issues/8\n\n\t\t\t\t\t\t\twhile (/\\s/.test(code.original[start - 1])) start -= 1;\n\t\t\t\t\t\t\twhile (/\\s/.test(code.original[end])) end += 1;\n\n\t\t\t\t\t\t\tcode.remove(start, end);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst name = param.argument.name;\n\t\t\t\t\t\tconst len = this.scope.createIdentifier('len');\n\t\t\t\t\t\tconst count = params.length - 1;\n\n\t\t\t\t\t\tif (count) {\n\t\t\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\t\t\tstart,\n\t\t\t\t\t\t\t\t`${prefix}var ${name} = [], ${len} = arguments.length - ${\n\t\t\t\t\t\t\t\t\tcount\n\t\t\t\t\t\t\t\t};\\n${indentation}while ( ${len}-- > 0 ) ${name}[ ${\n\t\t\t\t\t\t\t\t\tlen\n\t\t\t\t\t\t\t\t} ] = arguments[ ${len} + ${count} ]${suffix}`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\t\t\tstart,\n\t\t\t\t\t\t\t\t`${prefix}var ${name} = [], ${len} = arguments.length;\\n${\n\t\t\t\t\t\t\t\t\tindentation\n\t\t\t\t\t\t\t\t}while ( ${len}-- ) ${name}[ ${len} ] = arguments[ ${len} ]${\n\t\t\t\t\t\t\t\t\tsuffix\n\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (param.type !== 'Identifier') {\n\t\t\t\tif (transforms.parameterDestructuring) {\n\t\t\t\t\tconst ref = this.scope.createIdentifier('ref');\n\t\t\t\t\tdestructure(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tid => this.scope.createIdentifier(id),\n\t\t\t\t\t\t({ name }) => this.scope.resolveName(name),\n\t\t\t\t\t\tparam,\n\t\t\t\t\t\tref,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tintroStatementGenerators\n\t\t\t\t\t);\n\t\t\t\t\tcode.prependRight(param.start, ref);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\ttranspileBlockScopedIdentifiers(code) {\n\t\tObject.keys(this.scope.blockScopedDeclarations).forEach(name => {\n\t\t\tconst declarations = this.scope.blockScopedDeclarations[name];\n\n\t\t\tfor (let declaration of declarations) {\n\t\t\t\tlet cont = false; // TODO implement proper continue...\n\n\t\t\t\tif (declaration.kind === 'for.let') {\n\t\t\t\t\t// special case\n\t\t\t\t\tconst forStatement = declaration.node.findNearest('ForStatement');\n\n\t\t\t\t\tif (forStatement.shouldRewriteAsFunction) {\n\t\t\t\t\t\tconst outerAlias = this.scope.createIdentifier(name);\n\t\t\t\t\t\tconst innerAlias = forStatement.reassigned[name]\n\t\t\t\t\t\t\t? this.scope.createIdentifier(name)\n\t\t\t\t\t\t\t: name;\n\n\t\t\t\t\t\tdeclaration.name = outerAlias;\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tdeclaration.node.start,\n\t\t\t\t\t\t\tdeclaration.node.end,\n\t\t\t\t\t\t\touterAlias,\n\t\t\t\t\t\t\t{ storeName: true }\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tforStatement.aliases[name] = {\n\t\t\t\t\t\t\touter: outerAlias,\n\t\t\t\t\t\t\tinner: innerAlias\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfor (const identifier of declaration.instances) {\n\t\t\t\t\t\t\tconst alias = forStatement.body.contains(identifier)\n\t\t\t\t\t\t\t\t? innerAlias\n\t\t\t\t\t\t\t\t: outerAlias;\n\n\t\t\t\t\t\t\tif (name !== alias) {\n\t\t\t\t\t\t\t\tcode.overwrite(identifier.start, identifier.end, alias, {\n\t\t\t\t\t\t\t\t\tstoreName: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcont = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!cont) {\n\t\t\t\t\tconst alias = this.scope.createIdentifier(name);\n\n\t\t\t\t\tif (name !== alias) {\n\t\t\t\t\t\tdeclaration.name = alias;\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tdeclaration.node.start,\n\t\t\t\t\t\t\tdeclaration.node.end,\n\t\t\t\t\t\t\talias,\n\t\t\t\t\t\t\t{ storeName: true }\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfor (const identifier of declaration.instances) {\n\t\t\t\t\t\t\tidentifier.rewritten = true;\n\t\t\t\t\t\t\tcode.overwrite(identifier.start, identifier.end, alias, {\n\t\t\t\t\t\t\t\tstoreName: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","export function isArguments(node) {\n\treturn node.type === 'Identifier' && node.name === 'arguments';\n}\n\nexport default function spread(\n\tcode,\n\telements,\n\tstart,\n\targumentsArrayAlias,\n\tisNew\n) {\n\tlet i = elements.length;\n\tlet firstSpreadIndex = -1;\n\n\twhile (i--) {\n\t\tconst element = elements[i];\n\t\tif (element && element.type === 'SpreadElement') {\n\t\t\tif (isArguments(element.argument)) {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\telement.argument.start,\n\t\t\t\t\telement.argument.end,\n\t\t\t\t\targumentsArrayAlias\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfirstSpreadIndex = i;\n\t\t}\n\t}\n\n\tif (firstSpreadIndex === -1) return false; // false indicates no spread elements\n\n\tif (isNew) {\n\t\tfor (i = 0; i < elements.length; i += 1) {\n\t\t\tlet element = elements[i];\n\t\t\tif (element.type === 'SpreadElement') {\n\t\t\t\tcode.remove(element.start, element.argument.start);\n\t\t\t} else {\n\t\t\t\tcode.prependRight(element.start, '[');\n\t\t\t\tcode.prependRight(element.end, ']');\n\t\t\t}\n\t\t}\n\n\t\treturn true; // true indicates some spread elements\n\t}\n\n\tlet element = elements[firstSpreadIndex];\n\tconst previousElement = elements[firstSpreadIndex - 1];\n\n\tif (!previousElement) {\n\t\tcode.remove(start, element.start);\n\t\tcode.overwrite(element.end, elements[1].start, '.concat( ');\n\t} else {\n\t\tcode.overwrite(previousElement.end, element.start, ' ].concat( ');\n\t}\n\n\tfor (i = firstSpreadIndex; i < elements.length; i += 1) {\n\t\telement = elements[i];\n\n\t\tif (element) {\n\t\t\tif (element.type === 'SpreadElement') {\n\t\t\t\tcode.remove(element.start, element.argument.start);\n\t\t\t} else {\n\t\t\t\tcode.appendLeft(element.start, '[');\n\t\t\t\tcode.appendLeft(element.end, ']');\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true; // true indicates some spread elements\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\n\nexport default class ArrayExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.spreadRest && this.elements.length) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.elements.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst element = this.elements[i];\n\t\t\t\tif (\n\t\t\t\t\telement &&\n\t\t\t\t\telement.type === 'SpreadElement' &&\n\t\t\t\t\tisArguments(element.argument)\n\t\t\t\t) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (transforms.spreadRest) {\n\t\t\t// erase trailing comma after last array element if not an array hole\n\t\t\tif (this.elements.length) {\n\t\t\t\tlet lastElement = this.elements[this.elements.length - 1];\n\t\t\t\tif (\n\t\t\t\t\tlastElement &&\n\t\t\t\t\t/\\s*,/.test(code.original.slice(lastElement.end, this.end))\n\t\t\t\t) {\n\t\t\t\t\tcode.overwrite(lastElement.end, this.end - 1, ' ');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.elements.length === 1) {\n\t\t\t\tconst element = this.elements[0];\n\n\t\t\t\tif (element && element.type === 'SpreadElement') {\n\t\t\t\t\t// special case – [ ...arguments ]\n\t\t\t\t\tif (isArguments(element.argument)) {\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tthis.start,\n\t\t\t\t\t\t\tthis.end,\n\t\t\t\t\t\t\t`[].concat( ${this.argumentsArrayAlias} )`\n\t\t\t\t\t\t); // TODO if this is the only use of argsArray, don't bother concating\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite(this.start, element.argument.start, '[].concat( ');\n\t\t\t\t\t\tcode.overwrite(element.end, this.end, ' )');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst hasSpreadElements = spread(\n\t\t\t\t\tcode,\n\t\t\t\t\tthis.elements,\n\t\t\t\t\tthis.start,\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t);\n\n\t\t\t\tif (hasSpreadElements) {\n\t\t\t\t\tcode.overwrite(this.end - 1, this.end, ')');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","export default function removeTrailingComma(code, c) {\n\twhile (code.original[c] !== ')') {\n\t\tif (code.original[c] === ',') {\n\t\t\tcode.remove(c, c + 1);\n\t\t\treturn;\n\t\t}\n\n\t\tif (code.original[c] === '/') {\n\t\t\tc = code.original.indexOf(code.original[c + 1] === '/' ? '\\n' : '*/', c) + 1;\n\t\t}\n\t\tc += 1;\n\t}\n}\n","import Node from '../Node.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class ArrowFunctionExpression extends Node {\n\tinitialise(transforms) {\n\t\tthis.body.createScope();\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst naked = this.params.length === 1 && this.start === this.params[0].start;\n\n\t\tif (transforms.arrow || this.needsArguments(transforms)) {\n\t\t\t// remove arrow\n\t\t\tlet charIndex = this.body.start;\n\t\t\twhile (code.original[charIndex] !== '=') {\n\t\t\t\tcharIndex -= 1;\n\t\t\t}\n\t\t\tcode.remove(charIndex, this.body.start);\n\n\t\t\tsuper.transpile(code, transforms);\n\n\t\t\t// wrap naked parameter\n\t\t\tif (naked) {\n\t\t\t\tcode.prependRight(this.params[0].start, '(');\n\t\t\t\tcode.appendLeft(this.params[0].end, ')');\n\t\t\t}\n\n\t\t\t// add function\n\t\t\tif (this.parent && this.parent.type === 'ExpressionStatement') {\n\t\t\t\t// standalone expression statement\n\t\t\t\tcode.prependRight(this.start, '!function');\n\t\t\t} else {\n\t\t\t\tcode.prependRight(this.start, 'function ');\n\t\t\t}\n\t\t} else {\n\t\t\tsuper.transpile(code, transforms);\n\t\t}\n\n\t\tif (transforms.trailingFunctionCommas && this.params.length && !naked) {\n\t\t\tremoveTrailingComma(code, this.params[this.params.length - 1].end);\n\t\t}\n\t}\n\n\t// Returns whether any transforms that will happen use `arguments`\n\tneedsArguments(transforms) {\n\t\treturn (\n\t\t\ttransforms.spreadRest &&\n\t\t\tthis.params.filter(param => param.type === 'RestElement').length > 0\n\t\t);\n\t}\n}\n","import CompileError from './CompileError.js';\n\nexport default function checkConst(identifier, scope) {\n\tconst declaration = scope.findDeclaration(identifier.name);\n\tif (declaration && declaration.kind === 'const') {\n\t\tthrow new CompileError(`${identifier.name} is read-only`, identifier);\n\t}\n}\n","import Node from '../Node.js';\nimport checkConst from '../../utils/checkConst.js';\nimport destructure from '../../utils/destructure.js';\n\nexport default class AssignmentExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (this.left.type === 'Identifier') {\n\t\t\tconst declaration = this.findScope(false).findDeclaration(this.left.name);\n\t\t\t// special case – https://gitlab.com/Rich-Harris/buble/issues/11\n\t\t\tconst statement = declaration && declaration.node.ancestor(3);\n\t\t\tif (\n\t\t\t\tstatement &&\n\t\t\t\tstatement.type === 'ForStatement' &&\n\t\t\t\tstatement.body.contains(this)\n\t\t\t) {\n\t\t\t\tstatement.reassigned[this.left.name] = true;\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (this.left.type === 'Identifier') {\n\t\t\t// Do this check after everything has been initialized to find\n\t\t\t// shadowing declarations after this expression\n\t\t\tcheckConst(this.left, this.findScope(false));\n\t\t}\n\n\t\tif (this.operator === '**=' && transforms.exponentiation) {\n\t\t\tthis.transpileExponentiation(code, transforms);\n\t\t} else if (/Pattern/.test(this.left.type) && transforms.destructuring) {\n\t\t\tthis.transpileDestructuring(code, transforms);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n\n\ttranspileDestructuring(code) {\n\t\tconst writeScope = this.findScope(true);\n\t\tconst lookupScope = this.findScope(false);\n\t\tconst assign = writeScope.createDeclaration('assign');\n\t\tcode.appendRight(this.left.end, `(${assign}`);\n\n\t\tcode.appendLeft(this.right.end, ', ');\n\t\tconst statementGenerators = [];\n\t\tdestructure(\n\t\t\tcode,\n\t\t\tid => writeScope.createDeclaration(id),\n\t\t\tnode => {\n\t\t\t\tconst name = lookupScope.resolveName(node.name);\n\t\t\t\tcheckConst(node, lookupScope);\n\t\t\t\treturn name;\n\t\t\t},\n\t\t\tthis.left,\n\t\t\tassign,\n\t\t\ttrue,\n\t\t\tstatementGenerators\n\t\t);\n\n\t\tlet suffix = ', ';\n\t\tstatementGenerators.forEach((fn, j) => {\n\t\t\tif (j === statementGenerators.length - 1) {\n\t\t\t\tsuffix = '';\n\t\t\t}\n\n\t\t\tfn(this.end, '', suffix);\n\t\t});\n\n\t\tif (this.unparenthesizedParent().type === 'ExpressionStatement') {\n\t\t\t// no rvalue needed for expression statement\n\t\t\tcode.appendRight(this.end, `)`);\n\t\t} else {\n\t\t\t// destructuring is part of an expression - need an rvalue\n\t\t\tcode.appendRight(this.end, `, ${assign})`);\n\t\t}\n\t}\n\n\ttranspileExponentiation(code) {\n\t\tconst scope = this.findScope(false);\n\n\t\t// first, the easy part – `**=` -> `=`\n\t\tlet charIndex = this.left.end;\n\t\twhile (code.original[charIndex] !== '*') charIndex += 1;\n\t\tcode.remove(charIndex, charIndex + 2);\n\n\t\t// how we do the next part depends on a number of factors – whether\n\t\t// this is a top-level statement, and whether we're updating a\n\t\t// simple or complex reference\n\t\tlet base;\n\n\t\tconst left = this.left.unparenthesize();\n\n\t\tif (left.type === 'Identifier') {\n\t\t\tbase = scope.resolveName(left.name);\n\t\t} else if (left.type === 'MemberExpression') {\n\t\t\tlet object;\n\t\t\tlet needsObjectVar = false;\n\t\t\tlet property;\n\t\t\tlet needsPropertyVar = false;\n\n\t\t\tconst statement = this.findNearest(/(?:Statement|Declaration)$/);\n\t\t\tconst i0 = statement.getIndentation();\n\n\t\t\tif (left.property.type === 'Identifier') {\n\t\t\t\tproperty = left.computed\n\t\t\t\t\t? scope.resolveName(left.property.name)\n\t\t\t\t\t: left.property.name;\n\t\t\t} else {\n\t\t\t\tproperty = scope.createDeclaration('property');\n\t\t\t\tneedsPropertyVar = true;\n\t\t\t}\n\n\t\t\tif (left.object.type === 'Identifier') {\n\t\t\t\tobject = scope.resolveName(left.object.name);\n\t\t\t} else {\n\t\t\t\tobject = scope.createDeclaration('object');\n\t\t\t\tneedsObjectVar = true;\n\t\t\t}\n\n\t\t\tif (left.start === statement.start) {\n\t\t\t\tif (needsObjectVar && needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(statement.start, `${object} = `);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.object.end,\n\t\t\t\t\t\tleft.property.start,\n\t\t\t\t\t\t`;\\n${i0}${property} = `\n\t\t\t\t\t);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.property.end,\n\t\t\t\t\t\tleft.end,\n\t\t\t\t\t\t`;\\n${i0}${object}[${property}]`\n\t\t\t\t\t);\n\t\t\t\t} else if (needsObjectVar) {\n\t\t\t\t\tcode.prependRight(statement.start, `${object} = `);\n\t\t\t\t\tcode.appendLeft(left.object.end, `;\\n${i0}`);\n\t\t\t\t\tcode.appendLeft(left.object.end, object);\n\t\t\t\t} else if (needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(left.property.start, `${property} = `);\n\t\t\t\t\tcode.appendLeft(left.property.end, `;\\n${i0}`);\n\t\t\t\t\tcode.move(left.property.start, left.property.end, this.start);\n\n\t\t\t\t\tcode.appendLeft(left.object.end, `[${property}]`);\n\t\t\t\t\tcode.remove(left.object.end, left.property.start);\n\t\t\t\t\tcode.remove(left.property.end, left.end);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (needsObjectVar && needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(left.start, `( ${object} = `);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.object.end,\n\t\t\t\t\t\tleft.property.start,\n\t\t\t\t\t\t`, ${property} = `\n\t\t\t\t\t);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.property.end,\n\t\t\t\t\t\tleft.end,\n\t\t\t\t\t\t`, ${object}[${property}]`\n\t\t\t\t\t);\n\t\t\t\t} else if (needsObjectVar) {\n\t\t\t\t\tcode.prependRight(left.start, `( ${object} = `);\n\t\t\t\t\tcode.appendLeft(left.object.end, `, ${object}`);\n\t\t\t\t} else if (needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(left.property.start, `( ${property} = `);\n\t\t\t\t\tcode.appendLeft(left.property.end, `, `);\n\t\t\t\t\tcode.move(left.property.start, left.property.end, left.start);\n\n\t\t\t\t\tcode.overwrite(left.object.end, left.property.start, `[${property}]`);\n\t\t\t\t\tcode.remove(left.property.end, left.end);\n\t\t\t\t}\n\n\t\t\t\tif (needsPropertyVar) {\n\t\t\t\t\tcode.appendLeft(this.end, ` )`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase =\n\t\t\t\tobject +\n\t\t\t\t(left.computed || needsPropertyVar ? `[${property}]` : `.${property}`);\n\t\t}\n\n\t\tcode.prependRight(this.right.start, `Math.pow( ${base}, `);\n\t\tcode.appendLeft(this.right.end, ` )`);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class BinaryExpression extends Node {\n\ttranspile(code, transforms) {\n\t\tif (this.operator === '**' && transforms.exponentiation) {\n\t\t\tcode.prependRight(this.start, `Math.pow( `);\n\t\t\tcode.overwrite(this.left.end, this.right.start, `, `);\n\t\t\tcode.appendLeft(this.end, ` )`);\n\t\t}\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","export const loopStatement = /(?:For(?:In|Of)?|While)Statement/;\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class BreakStatement extends Node {\n\tinitialise() {\n\t\tconst loop = this.findNearest(loopStatement);\n\t\tconst switchCase = this.findNearest('SwitchCase');\n\n\t\tif (loop && (!switchCase || loop.depth > switchCase.depth)) {\n\t\t\tloop.canBreak = true;\n\t\t\tthis.loop = loop;\n\t\t}\n\t}\n\n\ttranspile(code) {\n\t\tif (this.loop && this.loop.shouldRewriteAsFunction) {\n\t\t\tif (this.label)\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'Labels are not currently supported in a loop with locally-scoped variables',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\tcode.overwrite(this.start, this.start + 5, `return 'break'`);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class CallExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.spreadRest && this.arguments.length > 1) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.arguments.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst arg = this.arguments[i];\n\t\t\t\tif (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tlet hasSpreadElements = false;\n\t\t\tlet context;\n\n\t\t\tconst firstArgument = this.arguments[0];\n\n\t\t\tif (this.arguments.length === 1) {\n\t\t\t\tif (firstArgument.type === 'SpreadElement') {\n\t\t\t\t\tcode.remove(firstArgument.start, firstArgument.argument.start);\n\t\t\t\t\thasSpreadElements = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thasSpreadElements = spread(\n\t\t\t\t\tcode,\n\t\t\t\t\tthis.arguments,\n\t\t\t\t\tfirstArgument.start,\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (hasSpreadElements) {\n\t\t\t\t// we need to handle super() and super.method() differently\n\t\t\t\t// due to its instance\n\t\t\t\tlet _super = null;\n\t\t\t\tif (this.callee.type === 'Super') {\n\t\t\t\t\t_super = this.callee;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.callee.type === 'MemberExpression' &&\n\t\t\t\t\tthis.callee.object.type === 'Super'\n\t\t\t\t) {\n\t\t\t\t\t_super = this.callee.object;\n\t\t\t\t}\n\n\t\t\t\tif (!_super && this.callee.type === 'MemberExpression') {\n\t\t\t\t\tif (this.callee.object.type === 'Identifier') {\n\t\t\t\t\t\tcontext = this.callee.object.name;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext = this.findScope(true).createDeclaration('ref');\n\t\t\t\t\t\tconst callExpression = this.callee.object;\n\t\t\t\t\t\tcode.prependRight(callExpression.start, `(${context} = `);\n\t\t\t\t\t\tcode.appendLeft(callExpression.end, `)`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext = 'void 0';\n\t\t\t\t}\n\n\t\t\t\tcode.appendLeft(this.callee.end, '.apply');\n\n\t\t\t\tif (_super) {\n\t\t\t\t\t_super.noCall = true; // bit hacky...\n\n\t\t\t\t\tif (this.arguments.length > 1) {\n\t\t\t\t\t\tif (firstArgument.type !== 'SpreadElement') {\n\t\t\t\t\t\t\tcode.prependRight(firstArgument.start, `[ `);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode.appendLeft(\n\t\t\t\t\t\t\tthis.arguments[this.arguments.length - 1].end,\n\t\t\t\t\t\t\t' )'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else if (this.arguments.length === 1) {\n\t\t\t\t\tcode.prependRight(firstArgument.start, `${context}, `);\n\t\t\t\t} else {\n\t\t\t\t\tif (firstArgument.type === 'SpreadElement') {\n\t\t\t\t\t\tcode.appendLeft(firstArgument.start, `${context}, `);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.appendLeft(firstArgument.start, `${context}, [ `);\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.appendLeft(this.arguments[this.arguments.length - 1].end, ' )');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (transforms.trailingFunctionCommas && this.arguments.length) {\n\t\t\tremoveTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport { findIndex } from '../../utils/array.js';\nimport reserved from '../../utils/reserved.js';\n\n// TODO this code is pretty wild, tidy it up\nexport default class ClassBody extends Node {\n\ttranspile(code, transforms, inFunctionExpression, superName) {\n\t\tif (transforms.classes) {\n\t\t\tconst name = this.parent.name;\n\n\t\t\tconst indentStr = code.getIndentString();\n\t\t\tconst i0 =\n\t\t\t\tthis.getIndentation() + (inFunctionExpression ? indentStr : '');\n\t\t\tconst i1 = i0 + indentStr;\n\n\t\t\tconst constructorIndex = findIndex(\n\t\t\t\tthis.body,\n\t\t\t\tnode => node.kind === 'constructor'\n\t\t\t);\n\t\t\tconst constructor = this.body[constructorIndex];\n\n\t\t\tlet introBlock = '';\n\t\t\tlet outroBlock = '';\n\n\t\t\tif (this.body.length) {\n\t\t\t\tcode.remove(this.start, this.body[0].start);\n\t\t\t\tcode.remove(this.body[this.body.length - 1].end, this.end);\n\t\t\t} else {\n\t\t\t\tcode.remove(this.start, this.end);\n\t\t\t}\n\n\t\t\tif (constructor) {\n\t\t\t\tconstructor.value.body.isConstructorBody = true;\n\n\t\t\t\tconst previousMethod = this.body[constructorIndex - 1];\n\t\t\t\tconst nextMethod = this.body[constructorIndex + 1];\n\n\t\t\t\t// ensure constructor is first\n\t\t\t\tif (constructorIndex > 0) {\n\t\t\t\t\tcode.remove(previousMethod.end, constructor.start);\n\t\t\t\t\tcode.move(\n\t\t\t\t\t\tconstructor.start,\n\t\t\t\t\t\tnextMethod ? nextMethod.start : this.end - 1,\n\t\t\t\t\t\tthis.body[0].start\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!inFunctionExpression) code.appendLeft(constructor.end, ';');\n\t\t\t}\n\n\t\t\tlet namedFunctions =\n\t\t\t\tthis.program.options.namedFunctionExpressions !== false;\n\t\t\tlet namedConstructor =\n\t\t\t\tnamedFunctions ||\n\t\t\t\tthis.parent.superClass ||\n\t\t\t\tthis.parent.type !== 'ClassDeclaration';\n\t\t\tif (this.parent.superClass) {\n\t\t\t\tlet inheritanceBlock = `if ( ${superName} ) ${name}.__proto__ = ${\n\t\t\t\t\tsuperName\n\t\t\t\t};\\n${i0}${name}.prototype = Object.create( ${superName} && ${\n\t\t\t\t\tsuperName\n\t\t\t\t}.prototype );\\n${i0}${name}.prototype.constructor = ${name};`;\n\n\t\t\t\tif (constructor) {\n\t\t\t\t\tintroBlock += `\\n\\n${i0}` + inheritanceBlock;\n\t\t\t\t} else {\n\t\t\t\t\tconst fn =\n\t\t\t\t\t\t`function ${name} () {` +\n\t\t\t\t\t\t(superName\n\t\t\t\t\t\t\t? `\\n${i1}${superName}.apply(this, arguments);\\n${i0}}`\n\t\t\t\t\t\t\t: `}`) +\n\t\t\t\t\t\t(inFunctionExpression ? '' : ';') +\n\t\t\t\t\t\t(this.body.length ? `\\n\\n${i0}` : '');\n\n\t\t\t\t\tinheritanceBlock = fn + inheritanceBlock;\n\t\t\t\t\tintroBlock += inheritanceBlock + `\\n\\n${i0}`;\n\t\t\t\t}\n\t\t\t} else if (!constructor) {\n\t\t\t\tlet fn = 'function ' + (namedConstructor ? name + ' ' : '') + '() {}';\n\t\t\t\tif (this.parent.type === 'ClassDeclaration') fn += ';';\n\t\t\t\tif (this.body.length) fn += `\\n\\n${i0}`;\n\n\t\t\t\tintroBlock += fn;\n\t\t\t}\n\n\t\t\tconst scope = this.findScope(false);\n\n\t\t\tlet prototypeGettersAndSetters = [];\n\t\t\tlet staticGettersAndSetters = [];\n\t\t\tlet prototypeAccessors;\n\t\t\tlet staticAccessors;\n\n\t\t\tthis.body.forEach((method, i) => {\n\t\t\t\tif (method.kind === 'constructor') {\n\t\t\t\t\tlet constructorName = namedConstructor ? ' ' + name : '';\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tmethod.key.start,\n\t\t\t\t\t\tmethod.key.end,\n\t\t\t\t\t\t`function${constructorName}`\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (method.static) {\n\t\t\t\t\tconst len = code.original[method.start + 6] == ' ' ? 7 : 6;\n\t\t\t\t\tcode.remove(method.start, method.start + len);\n\t\t\t\t}\n\n\t\t\t\tconst isAccessor = method.kind !== 'method';\n\t\t\t\tlet lhs;\n\n\t\t\t\tlet methodName = method.key.name;\n\t\t\t\tif (\n\t\t\t\t\treserved[methodName] ||\n\t\t\t\t\tmethod.value.body.scope.references[methodName]\n\t\t\t\t) {\n\t\t\t\t\tmethodName = scope.createIdentifier(methodName);\n\t\t\t\t}\n\n\t\t\t\t// when method name is a string or a number let's pretend it's a computed method\n\n\t\t\t\tlet fake_computed = false;\n\t\t\t\tif (!method.computed && method.key.type === 'Literal') {\n\t\t\t\t\tfake_computed = true;\n\t\t\t\t\tmethod.computed = true;\n\t\t\t\t}\n\n\t\t\t\tif (isAccessor) {\n\t\t\t\t\tif (method.computed) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Computed accessor properties are not currently supported'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.remove(method.start, method.key.start);\n\n\t\t\t\t\tif (method.static) {\n\t\t\t\t\t\tif (!~staticGettersAndSetters.indexOf(method.key.name))\n\t\t\t\t\t\t\tstaticGettersAndSetters.push(method.key.name);\n\t\t\t\t\t\tif (!staticAccessors)\n\t\t\t\t\t\t\tstaticAccessors = scope.createIdentifier('staticAccessors');\n\n\t\t\t\t\t\tlhs = `${staticAccessors}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!~prototypeGettersAndSetters.indexOf(method.key.name))\n\t\t\t\t\t\t\tprototypeGettersAndSetters.push(method.key.name);\n\t\t\t\t\t\tif (!prototypeAccessors)\n\t\t\t\t\t\t\tprototypeAccessors = scope.createIdentifier('prototypeAccessors');\n\n\t\t\t\t\t\tlhs = `${prototypeAccessors}`;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlhs = method.static ? `${name}` : `${name}.prototype`;\n\t\t\t\t}\n\n\t\t\t\tif (!method.computed) lhs += '.';\n\n\t\t\t\tconst insertNewlines =\n\t\t\t\t\t(constructorIndex > 0 && i === constructorIndex + 1) ||\n\t\t\t\t\t(i === 0 && constructorIndex === this.body.length - 1);\n\n\t\t\t\tif (insertNewlines) lhs = `\\n\\n${i0}${lhs}`;\n\n\t\t\t\tlet c = method.key.end;\n\t\t\t\tif (method.computed) {\n\t\t\t\t\tif (fake_computed) {\n\t\t\t\t\t\tcode.prependRight(method.key.start, '[');\n\t\t\t\t\t\tcode.appendLeft(method.key.end, ']');\n\t\t\t\t\t} else {\n\t\t\t\t\t\twhile (code.original[c] !== ']') c += 1;\n\t\t\t\t\t\tc += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst funcName =\n\t\t\t\t\tmethod.computed || isAccessor || !namedFunctions\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: `${methodName} `;\n\t\t\t\tconst rhs =\n\t\t\t\t\t(isAccessor ? `.${method.kind}` : '') +\n\t\t\t\t\t` = function` +\n\t\t\t\t\t(method.value.generator ? '* ' : ' ') +\n\t\t\t\t\tfuncName;\n\t\t\t\tcode.remove(c, method.value.start);\n\t\t\t\tcode.prependRight(method.value.start, rhs);\n\t\t\t\tcode.appendLeft(method.end, ';');\n\n\t\t\t\tif (method.value.generator) code.remove(method.start, method.key.start);\n\n\t\t\t\tcode.prependRight(method.start, lhs);\n\t\t\t});\n\n\t\t\tif (prototypeGettersAndSetters.length || staticGettersAndSetters.length) {\n\t\t\t\tlet intro = [];\n\t\t\t\tlet outro = [];\n\n\t\t\t\tif (prototypeGettersAndSetters.length) {\n\t\t\t\t\tintro.push(\n\t\t\t\t\t\t`var ${prototypeAccessors} = { ${prototypeGettersAndSetters\n\t\t\t\t\t\t\t.map(name => `${name}: { configurable: true }`)\n\t\t\t\t\t\t\t.join(',')} };`\n\t\t\t\t\t);\n\t\t\t\t\toutro.push(\n\t\t\t\t\t\t`Object.defineProperties( ${name}.prototype, ${\n\t\t\t\t\t\t\tprototypeAccessors\n\t\t\t\t\t\t} );`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (staticGettersAndSetters.length) {\n\t\t\t\t\tintro.push(\n\t\t\t\t\t\t`var ${staticAccessors} = { ${staticGettersAndSetters\n\t\t\t\t\t\t\t.map(name => `${name}: { configurable: true }`)\n\t\t\t\t\t\t\t.join(',')} };`\n\t\t\t\t\t);\n\t\t\t\t\toutro.push(`Object.defineProperties( ${name}, ${staticAccessors} );`);\n\t\t\t\t}\n\n\t\t\t\tif (constructor) introBlock += `\\n\\n${i0}`;\n\t\t\t\tintroBlock += intro.join(`\\n${i0}`);\n\t\t\t\tif (!constructor) introBlock += `\\n\\n${i0}`;\n\n\t\t\t\toutroBlock += `\\n\\n${i0}` + outro.join(`\\n${i0}`);\n\t\t\t}\n\n\t\t\tif (constructor) {\n\t\t\t\tcode.appendLeft(constructor.end, introBlock);\n\t\t\t} else {\n\t\t\t\tcode.prependRight(this.start, introBlock);\n\t\t\t}\n\n\t\t\tcode.appendLeft(this.end, outroBlock);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","// TODO this function is slightly flawed – it works on the original string,\n// not its current edited state.\n// That's not a problem for the way that it's currently used, but it could\n// be in future...\nexport default function deindent(node, code) {\n\tconst start = node.start;\n\tconst end = node.end;\n\n\tconst indentStr = code.getIndentString();\n\tconst indentStrLen = indentStr.length;\n\tconst indentStart = start - indentStrLen;\n\n\tif (\n\t\t!node.program.indentExclusions[indentStart] &&\n\t\tcode.original.slice(indentStart, start) === indentStr\n\t) {\n\t\tcode.remove(indentStart, start);\n\t}\n\n\tconst pattern = new RegExp(indentStr + '\\\\S', 'g');\n\tconst slice = code.original.slice(start, end);\n\tlet match;\n\n\twhile ((match = pattern.exec(slice))) {\n\t\tconst removeStart = start + match.index;\n\t\tif (!node.program.indentExclusions[removeStart]) {\n\t\t\tcode.remove(removeStart, removeStart + indentStrLen);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport deindent from '../../utils/deindent.js';\n\nexport default class ClassDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (this.id) {\n\t\t\tthis.name = this.id.name;\n\t\t\tthis.findScope(true).addDeclaration(this.id, 'class');\n\t\t} else {\n\t\t\tthis.name = this.findScope(true).createIdentifier(\"defaultExport\");\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.classes) {\n\t\t\tif (!this.superClass) deindent(this.body, code);\n\n\t\t\tconst superName =\n\t\t\t\tthis.superClass && (this.superClass.name || 'superclass');\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\t// if this is an export default statement, we have to move the export to\n\t\t\t// after the declaration, because `export default var Foo = ...` is illegal\n\t\t\tconst isExportDefaultDeclaration = this.parent.type === 'ExportDefaultDeclaration';\n\n\t\t\tif (isExportDefaultDeclaration) {\n\t\t\t\tcode.remove(this.parent.start, this.start);\n\t\t\t}\n\n\t\t\tlet c = this.start;\n\t\t\tif (this.id) {\n\t\t\t\tcode.overwrite(c, this.id.start, 'var ');\n\t\t\t\tc = this.id.end;\n\t\t\t} else {\n\t\t\t\tcode.prependLeft(c, `var ${this.name}`);\n\t\t\t}\n\n\t\t\tif (this.superClass) {\n\t\t\t\tif (this.superClass.end === this.body.start) {\n\t\t\t\t\tcode.remove(c, this.superClass.start);\n\t\t\t\t\tcode.appendLeft(c, ` = (function (${superName}) {\\n${i1}`);\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite(c, this.superClass.start, ' = ');\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tthis.superClass.end,\n\t\t\t\t\t\tthis.body.start,\n\t\t\t\t\t\t`(function (${superName}) {\\n${i1}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (c === this.body.start) {\n\t\t\t\t\tcode.appendLeft(c, ' = ');\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite(c, this.body.start, ' = ');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.body.transpile(code, transforms, !!this.superClass, superName);\n\n\t\t\tconst syntheticDefaultExport =\n\t\t\t\tisExportDefaultDeclaration\n\t\t\t\t\t? `\\n\\n${i0}export default ${this.name};`\n\t\t\t\t\t: '';\n\t\t\tif (this.superClass) {\n\t\t\t\tcode.appendLeft(this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}(`);\n\t\t\t\tcode.move(this.superClass.start, this.superClass.end, this.end);\n\t\t\t\tcode.prependRight(this.end, `));${syntheticDefaultExport}`);\n\t\t\t} else if (syntheticDefaultExport) {\n\t\t\t\tcode.prependRight(this.end, syntheticDefaultExport);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.body.transpile(code, transforms, false, null);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ClassExpression extends Node {\n\tinitialise(transforms) {\n\t\tthis.name = ( this.id\n\t\t\t? this.id.name\n\t\t\t: this.parent.type === 'VariableDeclarator'\n\t\t\t\t? this.parent.id.name\n\t\t\t\t: this.parent.type !== 'AssignmentExpression'\n\t\t\t\t\t? null\n\t\t\t\t\t: this.parent.left.type === 'Identifier'\n\t\t\t\t\t\t? this.parent.left.name\n\t\t\t\t\t\t: this.parent.left.type === 'MemberExpression'\n\t\t\t\t\t\t\t? this.parent.left.property.name\n\t\t\t\t\t\t\t: null ) || this.findScope(true).createIdentifier('anonymous');\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.classes) {\n\t\t\tconst superName =\n\t\t\t\tthis.superClass && (this.superClass.name || 'superclass');\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tif (this.superClass) {\n\t\t\t\tcode.remove(this.start, this.superClass.start);\n\t\t\t\tcode.remove(this.superClass.end, this.body.start);\n\t\t\t\tcode.appendLeft(this.start, `(function (${superName}) {\\n${i1}`);\n\t\t\t} else {\n\t\t\t\tcode.overwrite(this.start, this.body.start, `(function () {\\n${i1}`);\n\t\t\t}\n\n\t\t\tthis.body.transpile(code, transforms, true, superName);\n\n\t\t\tconst outro = `\\n\\n${i1}return ${this.name};\\n${i0}}(`;\n\n\t\t\tif (this.superClass) {\n\t\t\t\tcode.appendLeft(this.end, outro);\n\t\t\t\tcode.move(this.superClass.start, this.superClass.end, this.end);\n\t\t\t\tcode.prependRight(this.end, '))');\n\t\t\t} else {\n\t\t\t\tcode.appendLeft(this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}())`);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.body.transpile(code, transforms, false);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ContinueStatement extends Node {\n\ttranspile(code) {\n\t\tconst loop = this.findNearest(loopStatement);\n\t\tif (loop.shouldRewriteAsFunction) {\n\t\t\tif (this.label)\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'Labels are not currently supported in a loop with locally-scoped variables',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\tcode.overwrite(this.start, this.start + 8, 'return');\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportDefaultDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.moduleExport)\n\t\t\tthrow new CompileError('export is not supported', this);\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportNamedDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.moduleExport)\n\t\t\tthrow new CompileError('export is not supported', this);\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../../Node.js';\n\nexport default class LoopStatement extends Node {\n\tfindScope(functionScope) {\n\t\treturn functionScope || !this.createdScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.body.scope;\n\t}\n\n\tinitialise(transforms) {\n\t\tthis.body.createScope();\n\t\tthis.createdScope = true;\n\n\t\t// this is populated as and when reassignments occur\n\t\tthis.reassigned = Object.create(null);\n\t\tthis.aliases = Object.create(null);\n\n\t\tsuper.initialise(transforms);\n\n\t\tif (transforms.letConst) {\n\t\t\t// see if any block-scoped declarations are referenced\n\t\t\t// inside function expressions\n\t\t\tconst names = Object.keys(this.body.scope.declarations);\n\n\t\t\tlet i = names.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst name = names[i];\n\t\t\t\tconst declaration = this.body.scope.declarations[name];\n\n\t\t\t\tlet j = declaration.instances.length;\n\t\t\t\twhile (j--) {\n\t\t\t\t\tconst instance = declaration.instances[j];\n\t\t\t\t\tconst nearestFunctionExpression = instance.findNearest(/Function/);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tnearestFunctionExpression &&\n\t\t\t\t\t\tnearestFunctionExpression.depth > this.depth\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.shouldRewriteAsFunction = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.shouldRewriteAsFunction) break;\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst needsBlock =\n\t\t\tthis.type != 'ForOfStatement' &&\n\t\t\t(this.body.type !== 'BlockStatement' ||\n\t\t\t\t(this.body.type === 'BlockStatement' && this.body.synthetic));\n\n\t\tif (this.shouldRewriteAsFunction) {\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tconst argString = this.args ? ` ${this.args.join(', ')} ` : '';\n\t\t\tconst paramString = this.params ? ` ${this.params.join(', ')} ` : '';\n\n\t\t\tconst functionScope = this.findScope(true);\n\t\t\tconst loop = functionScope.createIdentifier('loop');\n\n\t\t\tconst before =\n\t\t\t\t`var ${loop} = function (${paramString}) ` +\n\t\t\t\t(this.body.synthetic ? `{\\n${i0}${code.getIndentString()}` : '');\n\t\t\tconst after = (this.body.synthetic ? `\\n${i0}}` : '') + `;\\n\\n${i0}`;\n\n\t\t\tcode.prependRight(this.body.start, before);\n\t\t\tcode.appendLeft(this.body.end, after);\n\t\t\tcode.move(this.start, this.body.start, this.body.end);\n\n\t\t\tif (this.canBreak || this.canReturn) {\n\t\t\t\tconst returned = functionScope.createIdentifier('returned');\n\n\t\t\t\tlet insert = `{\\n${i1}var ${returned} = ${loop}(${argString});\\n`;\n\t\t\t\tif (this.canBreak)\n\t\t\t\t\tinsert += `\\n${i1}if ( ${returned} === 'break' ) break;`;\n\t\t\t\tif (this.canReturn)\n\t\t\t\t\tinsert += `\\n${i1}if ( ${returned} ) return ${returned}.v;`;\n\t\t\t\tinsert += `\\n${i0}}`;\n\n\t\t\t\tcode.prependRight(this.body.end, insert);\n\t\t\t} else {\n\t\t\t\tconst callExpression = `${loop}(${argString});`;\n\n\t\t\t\tif (this.type === 'DoWhileStatement') {\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tthis.start,\n\t\t\t\t\t\tthis.body.start,\n\t\t\t\t\t\t`do {\\n${i1}${callExpression}\\n${i0}}`\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tcode.prependRight(this.body.end, callExpression);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (needsBlock) {\n\t\t\tcode.appendLeft(this.body.start, '{ ');\n\t\t\tcode.prependRight(this.body.end, ' }');\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForStatement extends LoopStatement {\n\tfindScope(functionScope) {\n\t\treturn functionScope || !this.createdScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.body.scope;\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst i1 = this.getIndentation() + code.getIndentString();\n\n\t\tif (this.shouldRewriteAsFunction) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names =\n\t\t\t\tthis.init.type === 'VariableDeclaration'\n\t\t\t\t\t? [].concat.apply(\n\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\tthis.init.declarations.map(declarator =>\n\t\t\t\t\t\t\t\textractNames(declarator.id)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t: [];\n\n\t\t\tconst aliases = this.aliases;\n\n\t\t\tthis.args = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].outer : name)\n\t\t\t);\n\t\t\tthis.params = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].inner : name)\n\t\t\t);\n\n\t\t\tconst updates = Object.keys(this.reassigned).map(\n\t\t\t\tname => `${aliases[name].outer} = ${aliases[name].inner};`\n\t\t\t);\n\n\t\t\tif (updates.length) {\n\t\t\t\tif (this.body.synthetic) {\n\t\t\t\t\tcode.appendLeft(this.body.body[0].end, `; ${updates.join(` `)}`);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastStatement = this.body.body[this.body.body.length - 1];\n\t\t\t\t\tcode.appendLeft(\n\t\t\t\t\t\tlastStatement.end,\n\t\t\t\t\t\t`\\n\\n${i1}${updates.join(`\\n${i1}`)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport destructure from '../../utils/destructure.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForInStatement extends LoopStatement {\n\tfindScope(functionScope) {\n\t\treturn functionScope || !this.createdScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.body.scope;\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst hasDeclaration = this.left.type === 'VariableDeclaration';\n\n\t\tif (this.shouldRewriteAsFunction) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names =\n\t\t\t\thasDeclaration\n\t\t\t\t\t? [].concat.apply(\n\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\tthis.left.declarations.map(declarator =>\n\t\t\t\t\t\t\t\textractNames(declarator.id)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t: [];\n\n\t\t\tthis.args = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].outer : name)\n\t\t\t);\n\t\t\tthis.params = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].inner : name)\n\t\t\t);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\n\t\tconst maybePattern = hasDeclaration ? this.left.declarations[0].id : this.left;\n\t\tif (maybePattern.type !== 'Identifier') {\n\t\t\tthis.destructurePattern(code, maybePattern, hasDeclaration);\n\t\t}\n\t}\n\n\tdestructurePattern(code, pattern, isDeclaration) {\n\t\tconst scope = this.findScope(true);\n\t\tconst i0 = this.getIndentation();\n\t\tconst i1 = i0 + code.getIndentString();\n\n\t\tconst ref = scope.createIdentifier('ref');\n\n\t\tconst bodyStart = this.body.body.length ? this.body.body[0].start : this.body.start + 1;\n\n\t\tcode.move(pattern.start, pattern.end, bodyStart);\n\n\t\tcode.prependRight(pattern.end, isDeclaration ? ref : `var ${ref}`);\n\n\t\tlet statementGenerators = [];\n\t\tdestructure(\n\t\t\tcode,\n\t\t\tid => scope.createIdentifier(id),\n\t\t\t({ name }) => scope.resolveName(name),\n\t\t\tpattern,\n\t\t\tref,\n\t\t\tfalse,\n\t\t\tstatementGenerators\n\t\t);\n\n\t\tlet suffix = `;\\n${i1}`;\n\t\tstatementGenerators.forEach((fn, i) => {\n\t\t\tif (i === statementGenerators.length - 1) {\n\t\t\t\tsuffix = `;\\n\\n${i1}`;\n\t\t\t}\n\n\t\t\tfn(bodyStart, '', suffix);\n\t\t});\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport CompileError from '../../utils/CompileError.js';\nimport destructure from '../../utils/destructure.js';\n\nexport default class ForOfStatement extends LoopStatement {\n\tinitialise(transforms) {\n\t\tif (transforms.forOf && !transforms.dangerousForOf)\n\t\t\tthrow new CompileError(\n\t\t\t\t\"for...of statements are not supported. Use `transforms: { forOf: false }` to skip transformation and disable this error, or `transforms: { dangerousForOf: true }` if you know what you're doing\",\n\t\t\t\tthis\n\t\t\t);\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\t\tif (!transforms.dangerousForOf) return;\n\n\t\t// edge case (#80)\n\t\tif (!this.body.body[0]) {\n\t\t\tif (\n\t\t\t\tthis.left.type === 'VariableDeclaration' &&\n\t\t\t\tthis.left.kind === 'var'\n\t\t\t) {\n\t\t\t\tcode.remove(this.start, this.left.start);\n\t\t\t\tcode.appendLeft(this.left.end, ';');\n\t\t\t\tcode.remove(this.left.end, this.end);\n\t\t\t} else {\n\t\t\t\tcode.remove(this.start, this.end);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = this.findScope(true);\n\t\tconst i0 = this.getIndentation();\n\t\tconst i1 = i0 + code.getIndentString();\n\n\t\tconst key = scope.createIdentifier('i');\n\t\tconst list = scope.createIdentifier('list');\n\n\t\tif (this.body.synthetic) {\n\t\t\tcode.prependRight(this.left.start, `{\\n${i1}`);\n\t\t\tcode.appendLeft(this.body.body[0].end, `\\n${i0}}`);\n\t\t}\n\n\t\tconst bodyStart = this.body.body[0].start;\n\n\t\tcode.remove(this.left.end, this.right.start);\n\t\tcode.move(this.left.start, this.left.end, bodyStart);\n\n\t\tcode.prependRight(this.right.start, `var ${key} = 0, ${list} = `);\n\t\tcode.appendLeft(this.right.end, `; ${key} < ${list}.length; ${key} += 1`);\n\n\t\tconst isDeclaration = this.left.type === 'VariableDeclaration';\n\t\tconst maybeDestructuring = isDeclaration ? this.left.declarations[0].id : this.left;\n\t\tif (maybeDestructuring.type !== 'Identifier') {\n\t\t\tlet statementGenerators = [];\n\t\t\tconst ref = scope.createIdentifier('ref');\n\t\t\tdestructure(\n\t\t\t\tcode,\n\t\t\t\tid => scope.createIdentifier(id),\n\t\t\t\t({ name }) => scope.resolveName(name),\n\t\t\t\tmaybeDestructuring,\n\t\t\t\tref,\n\t\t\t\t!isDeclaration,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\n\t\t\tlet suffix = `;\\n${i1}`;\n\t\t\tstatementGenerators.forEach((fn, i) => {\n\t\t\t\tif (i === statementGenerators.length - 1) {\n\t\t\t\t\tsuffix = `;\\n\\n${i1}`;\n\t\t\t\t}\n\n\t\t\t\tfn(bodyStart, '', suffix);\n\t\t\t});\n\n\t\t\tif (isDeclaration) {\n\t\t\t\tcode.appendLeft(this.left.start + this.left.kind.length + 1, ref);\n\t\t\t\tcode.appendLeft(this.left.end, ` = ${list}[${key}];\\n${i1}`);\n\t\t\t} else {\n\t\t\t\tcode.appendLeft(this.left.end, `var ${ref} = ${list}[${key}];\\n${i1}`);\n\t\t\t}\n\t\t} else {\n\t\t\tcode.appendLeft(this.left.end, ` = ${list}[${key}];\\n\\n${i1}`);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class FunctionDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (this.generator && transforms.generator) {\n\t\t\tthrow new CompileError('Generators are not supported', this);\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tif (this.id) {\n\t\t\tthis.findScope(true).addDeclaration(this.id, 'function');\n\t\t}\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\t\tif (transforms.trailingFunctionCommas && this.params.length) {\n\t\t\tremoveTrailingComma(code, this.params[this.params.length - 1].end);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class FunctionExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (this.generator && transforms.generator) {\n\t\t\tthrow new CompileError('Generators are not supported', this);\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tif (this.id) {\n\t\t\t// function expression IDs belong to the child scope...\n\t\t\tthis.body.scope.addDeclaration(this.id, 'function');\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\n\t\tconst parent = this.parent;\n\t\tlet methodName;\n\n\t\tif (\n\t\t\ttransforms.conciseMethodProperty &&\n\t\t\tparent.type === 'Property' &&\n\t\t\tparent.kind === 'init' &&\n\t\t\tparent.method &&\n\t\t\tparent.key.type === 'Identifier'\n\t\t) {\n\t\t\t// object literal concise method\n\t\t\tmethodName = parent.key.name;\n\t\t} else if (\n\t\t\ttransforms.classes &&\n\t\t\tparent.type === 'MethodDefinition' &&\n\t\t\tparent.kind === 'method' &&\n\t\t\tparent.key.type === 'Identifier'\n\t\t) {\n\t\t\t// method definition in a class\n\t\t\tmethodName = parent.key.name;\n\t\t} else if (this.id && this.id.type === 'Identifier') {\n\t\t\t// naked function expression\n\t\t\tmethodName = this.id.alias || this.id.name;\n\t\t}\n\n\t\tif (methodName) {\n\t\t\tfor (const param of this.params) {\n\t\t\t\tif (param.type === 'Identifier' && methodName === param.name) {\n\t\t\t\t\t// workaround for Safari 9/WebKit bug:\n\t\t\t\t\t// https://gitlab.com/Rich-Harris/buble/issues/154\n\t\t\t\t\t// change parameter name when same as method name\n\n\t\t\t\t\tconst scope = this.body.scope;\n\t\t\t\t\tconst declaration = scope.declarations[methodName];\n\n\t\t\t\t\tconst alias = scope.createIdentifier(methodName);\n\t\t\t\t\tparam.alias = alias;\n\n\t\t\t\t\tfor (const identifier of declaration.instances) {\n\t\t\t\t\t\tidentifier.alias = alias;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\t\tif (transforms.trailingFunctionCommas && this.params.length) {\n\t\t\tremoveTrailingComma(code, this.params[this.params.length - 1].end);\n\t\t}\n\t}\n}\n","export default function isReference(node, parent) {\n\tif (node.type === 'MemberExpression') {\n\t\treturn !node.computed && isReference(node.object, node);\n\t}\n\n\tif (node.type === 'Identifier') {\n\t\t// the only time we could have an identifier node without a parent is\n\t\t// if it's the entire body of a function without a block statement –\n\t\t// i.e. an arrow function expression like `a => a`\n\t\tif (!parent) return true;\n\n\t\tif (/(Function|Class)Expression/.test(parent.type)) return false;\n\n\t\tif (parent.type === 'VariableDeclarator') return node === parent.init;\n\n\t\t// TODO is this right?\n\t\tif (\n\t\t\tparent.type === 'MemberExpression' ||\n\t\t\tparent.type === 'MethodDefinition'\n\t\t) {\n\t\t\treturn parent.computed || node === parent.object;\n\t\t}\n\n\t\tif (parent.type === 'ArrayPattern') return false;\n\n\t\t// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\t\tif (parent.type === 'Property') {\n\t\t\tif (parent.parent.type === 'ObjectPattern') return false;\n\t\t\treturn parent.computed || node === parent.value;\n\t\t}\n\n\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\tif (parent.type === 'MethodDefinition') return false;\n\n\t\t// disregard the `bar` in `export { foo as bar }`\n\t\tif (parent.type === 'ExportSpecifier' && node !== parent.local)\n\t\t\treturn false;\n\n\t\treturn true;\n\t}\n}\n","import Node from '../Node.js';\nimport isReference from '../../utils/isReference.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class Identifier extends Node {\n\tfindScope(functionScope) {\n\t\tif (this.parent.params && ~this.parent.params.indexOf(this)) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\tif (this.parent.type === 'FunctionExpression' && this === this.parent.id) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\treturn this.parent.findScope(functionScope);\n\t}\n\n\tinitialise(transforms) {\n\t\tif (isReference(this, this.parent)) {\n\t\t\tif (\n\t\t\t\ttransforms.arrow &&\n\t\t\t\tthis.name === 'arguments' &&\n\t\t\t\t!this.findScope(false).contains(this.name)\n\t\t\t) {\n\t\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\t\tconst arrowFunction = this.findNearest('ArrowFunctionExpression');\n\t\t\t\tconst loop = this.findNearest(loopStatement);\n\n\t\t\t\tif (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tloop &&\n\t\t\t\t\tloop.body.contains(this) &&\n\t\t\t\t\tloop.depth > lexicalBoundary.depth\n\t\t\t\t) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.findScope(false).addReference(this);\n\t\t}\n\t}\n\n\ttranspile(code) {\n\t\tif (this.alias) {\n\t\t\tcode.overwrite(this.start, this.end, this.alias, {\n\t\t\t\tstoreName: true,\n\t\t\t\tcontentOnly: true\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class IfStatement extends Node {\n\tinitialise(transforms) {\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (\n\t\t\tthis.consequent.type !== 'BlockStatement' ||\n\t\t\t(this.consequent.type === 'BlockStatement' && this.consequent.synthetic)\n\t\t) {\n\t\t\tcode.appendLeft(this.consequent.start, '{ ');\n\t\t\tcode.prependRight(this.consequent.end, ' }');\n\t\t}\n\n\t\tif (\n\t\t\tthis.alternate &&\n\t\t\tthis.alternate.type !== 'IfStatement' &&\n\t\t\t(this.alternate.type !== 'BlockStatement' ||\n\t\t\t\t(this.alternate.type === 'BlockStatement' && this.alternate.synthetic))\n\t\t) {\n\t\t\tcode.appendLeft(this.alternate.start, '{ ');\n\t\t\tcode.prependRight(this.alternate.end, ' }');\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ImportDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.moduleImport)\n\t\t\tthrow new CompileError('import is not supported', this);\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportDefaultSpecifier extends Node {\n\tinitialise(transforms) {\n\t\tthis.findScope(true).addDeclaration(this.local, 'import');\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportSpecifier extends Node {\n\tinitialise(transforms) {\n\t\tthis.findScope(true).addDeclaration(this.local, 'import');\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nconst hasDashes = val => /-/.test(val);\n\nconst formatKey = key => (hasDashes(key) ? `'${key}'` : key);\n\nconst formatVal = val => (val ? '' : 'true');\n\nexport default class JSXAttribute extends Node {\n\ttranspile(code, transforms) {\n\t\tconst { start, name } = this.name;\n\n\t\t// Overwrite equals sign if value is present.\n\t\tconst end = this.value ? this.value.start : this.name.end;\n\n\t\tcode.overwrite(start, end, `${formatKey(name)}: ${formatVal(this.value)}`);\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nfunction containsNewLine(node) {\n\treturn (\n\t\tnode.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value)\n\t);\n}\n\nexport default class JSXClosingElement extends Node {\n\ttranspile(code) {\n\t\tlet spaceBeforeParen = true;\n\n\t\tconst lastChild = this.parent.children[this.parent.children.length - 1];\n\n\t\t// omit space before closing paren if\n\t\t// a) this is on a separate line, or\n\t\t// b) there are no children but there are attributes\n\t\tif (\n\t\t\t(lastChild && containsNewLine(lastChild)) ||\n\t\t\tthis.parent.openingElement.attributes.length\n\t\t) {\n\t\t\tspaceBeforeParen = false;\n\t\t}\n\n\t\tcode.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n\t}\n}\n","import Node from '../Node.js';\n\nfunction containsNewLine(node) {\n\treturn (\n\t\tnode.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value)\n\t);\n}\n\nexport default class JSXClosingFragment extends Node {\n\ttranspile(code) {\n\t\tlet spaceBeforeParen = true;\n\n\t\tconst lastChild = this.parent.children[this.parent.children.length - 1];\n\n\t\t// omit space before closing paren if this is on a separate line\n\t\tif (lastChild && containsNewLine(lastChild)) {\n\t\t\tspaceBeforeParen = false;\n\t\t}\n\n\t\tcode.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n\t}\n}\n","import Node from '../Node.js';\n\nfunction normalise(str, removeTrailingWhitespace) {\n\n\tstr = str.replace(/\\u00a0/g, '&nbsp;');\n\n\tif (removeTrailingWhitespace && /\\n/.test(str)) {\n\t\tstr = str.replace(/\\s+$/, '');\n\t}\n\n\tstr = str\n\t\t.replace(/^\\n\\r?\\s+/, '') // remove leading newline + space\n\t\t.replace(/\\s*\\n\\r?\\s*/gm, ' '); // replace newlines with spaces\n\n\t// TODO prefer single quotes?\n\treturn JSON.stringify(str);\n}\n\nexport default class JSXElement extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tconst children = this.children.filter(child => {\n\t\t\tif (child.type !== 'JSXText') return true;\n\n\t\t\t// remove whitespace-only literals, unless on a single line\n\t\t\treturn /\\S/.test(child.raw) || !/\\n/.test(child.raw);\n\t\t});\n\n\t\tif (children.length) {\n\t\t\tlet c = this.openingElement.end;\n\n\t\t\tlet i;\n\t\t\tfor (i = 0; i < children.length; i += 1) {\n\t\t\t\tconst child = children[i];\n\n\t\t\t\tif (\n\t\t\t\t\tchild.type === 'JSXExpressionContainer' &&\n\t\t\t\t\tchild.expression.type === 'JSXEmptyExpression'\n\t\t\t\t) {\n\t\t\t\t\t// empty block is a no op\n\t\t\t\t} else {\n\t\t\t\t\tconst tail =\n\t\t\t\t\t\tcode.original[c] === '\\n' && child.type !== 'JSXText' ? '' : ' ';\n\t\t\t\t\tcode.appendLeft(c, `,${tail}`);\n\t\t\t\t}\n\n\t\t\t\tif (child.type === 'JSXText') {\n\t\t\t\t\tconst str = normalise(child.value, i === children.length - 1);\n\t\t\t\t\tcode.overwrite(child.start, child.end, str);\n\t\t\t\t}\n\n\t\t\t\tc = child.end;\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXExpressionContainer extends Node {\n\ttranspile(code, transforms) {\n\t\tcode.remove(this.start, this.expression.start);\n\t\tcode.remove(this.expression.end, this.end);\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import JSXElement from './JSXElement.js';\n\nexport default class JSXFragment extends JSXElement {\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class JSXOpeningElement extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tcode.overwrite(this.start, this.name.start, `${this.program.jsx}( `);\n\n\t\tconst html =\n\t\t\tthis.name.type === 'JSXIdentifier' &&\n\t\t\tthis.name.name[0] === this.name.name[0].toLowerCase();\n\t\tif (html) code.prependRight(this.name.start, `'`);\n\n\t\tconst len = this.attributes.length;\n\t\tlet c = this.name.end;\n\n\t\tif (len) {\n\t\t\tlet i;\n\n\t\t\tlet hasSpread = false;\n\t\t\tfor (i = 0; i < len; i += 1) {\n\t\t\t\tif (this.attributes[i].type === 'JSXSpreadAttribute') {\n\t\t\t\t\thasSpread = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc = this.attributes[0].end;\n\n\t\t\tfor (i = 0; i < len; i += 1) {\n\t\t\t\tconst attr = this.attributes[i];\n\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tif (attr.start === c) code.prependRight(c, ', ');\n\t\t\t\t\telse code.overwrite(c, attr.start, ', ');\n\t\t\t\t}\n\n\t\t\t\tif (hasSpread && attr.type !== 'JSXSpreadAttribute') {\n\t\t\t\t\tconst lastAttr = this.attributes[i - 1];\n\t\t\t\t\tconst nextAttr = this.attributes[i + 1];\n\n\t\t\t\t\tif (!lastAttr || lastAttr.type === 'JSXSpreadAttribute') {\n\t\t\t\t\t\tcode.prependRight(attr.start, '{ ');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!nextAttr || nextAttr.type === 'JSXSpreadAttribute') {\n\t\t\t\t\t\tcode.appendLeft(attr.end, ' }');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tc = attr.end;\n\t\t\t}\n\n\t\t\tlet after;\n\t\t\tlet before;\n\t\t\tif (hasSpread) {\n\t\t\t\tif (len === 1) {\n\t\t\t\t\tbefore = html ? `',` : ',';\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.program.options.objectAssign) {\n\t\t\t\t\t\tthrow new CompileError(\n\t\t\t\t\t\t\t\"Mixed JSX attributes ending in spread requires specified objectAssign option with 'Object.assign' or polyfill helper.\",\n\t\t\t\t\t\t\tthis\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbefore = html\n\t\t\t\t\t\t? `', ${this.program.options.objectAssign}({},`\n\t\t\t\t\t\t: `, ${this.program.options.objectAssign}({},`;\n\t\t\t\t\tafter = ')';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbefore = html ? `', {` : ', {';\n\t\t\t\tafter = ' }';\n\t\t\t}\n\n\t\t\tcode.prependRight(this.name.end, before);\n\n\t\t\tif (after) {\n\t\t\t\tcode.appendLeft(this.attributes[len - 1].end, after);\n\t\t\t}\n\t\t} else {\n\t\t\tcode.appendLeft(this.name.end, html ? `', null` : `, null`);\n\t\t\tc = this.name.end;\n\t\t}\n\n\t\tif (this.selfClosing) {\n\t\t\tcode.overwrite(c, this.end, this.attributes.length ? `)` : ` )`);\n\t\t} else {\n\t\t\tcode.remove(c, this.end);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXOpeningFragment extends Node {\n\ttranspile(code, transforms) {\n\t\tcode.overwrite(this.start, this.end, `${this.program.jsx}( React.Fragment, null`);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXSpreadAttribute extends Node {\n\ttranspile(code, transforms) {\n\t\tcode.remove(this.start, this.argument.start);\n\t\tcode.remove(this.argument.end, this.end);\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","/*!\r\n * regjsgen 0.3.0\r\n * Copyright 2014-2016 Benjamin Tan <https://demoneaux.github.io/>\r\n * Available under MIT license <https://github.com/demoneaux/regjsgen/blob/master/LICENSE>\r\n */\r\n;(function() {\r\n 'use strict';\r\n\r\n // Used to determine if values are of the language type `Object`.\r\n var objectTypes = {\r\n 'function': true,\r\n 'object': true\r\n };\r\n\r\n // Used as a reference to the global object.\r\n var root = (objectTypes[typeof window] && window) || this;\r\n\r\n // Detect free variable `exports`.\r\n var freeExports = objectTypes[typeof exports] && exports;\r\n\r\n // Detect free variable `module`.\r\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\r\n\r\n // Detect free variable `global` from Node.js or Browserified code and use it as `root`.\r\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\r\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\r\n root = freeGlobal;\r\n }\r\n\r\n // Used to check objects for own properties.\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Generates strings based on the given code points.\r\n // Based on https://mths.be/fromcodepoint v0.2.0 by @mathias.\r\n var stringFromCharCode = String.fromCharCode;\r\n var floor = Math.floor;\r\n function fromCodePoint() {\r\n var MAX_SIZE = 0x4000;\r\n var codeUnits = [];\r\n var highSurrogate;\r\n var lowSurrogate;\r\n var index = -1;\r\n var length = arguments.length;\r\n if (!length) {\r\n return '';\r\n }\r\n var result = '';\r\n while (++index < length) {\r\n var codePoint = Number(arguments[index]);\r\n if (\r\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\r\n codePoint < 0 || // not a valid Unicode code point\r\n codePoint > 0x10FFFF || // not a valid Unicode code point\r\n floor(codePoint) != codePoint // not an integer\r\n ) {\r\n throw RangeError('Invalid code point: ' + codePoint);\r\n }\r\n if (codePoint <= 0xFFFF) {\r\n // BMP code point\r\n codeUnits.push(codePoint);\r\n } else {\r\n // Astral code point; split in surrogate halves\r\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\r\n codePoint -= 0x10000;\r\n highSurrogate = (codePoint >> 10) + 0xD800;\r\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\r\n codeUnits.push(highSurrogate, lowSurrogate);\r\n }\r\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\r\n result += stringFromCharCode.apply(null, codeUnits);\r\n codeUnits.length = 0;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Ensures that nodes have the correct types.\r\n var assertTypeRegexMap = {};\r\n function assertType(type, expected) {\r\n if (expected.indexOf('|') == -1) {\r\n if (type == expected) {\r\n return;\r\n }\r\n\r\n throw Error('Invalid node type: ' + type + '; expected type: ' + expected);\r\n }\r\n\r\n expected = hasOwnProperty.call(assertTypeRegexMap, expected)\r\n ? assertTypeRegexMap[expected]\r\n : (assertTypeRegexMap[expected] = RegExp('^(?:' + expected + ')$'));\r\n\r\n if (expected.test(type)) {\r\n return;\r\n }\r\n\r\n throw Error('Invalid node type: ' + type + '; expected types: ' + expected);\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Generates a regular expression string based on an AST.\r\n function generate(node) {\r\n var type = node.type;\r\n\r\n if (hasOwnProperty.call(generators, type)) {\r\n return generators[type](node);\r\n }\r\n\r\n throw Error('Invalid node type: ' + type);\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n function generateAlternative(node) {\r\n assertType(node.type, 'alternative');\r\n\r\n var terms = node.body,\r\n i = -1,\r\n length = terms.length,\r\n result = '';\r\n\r\n while (++i < length) {\r\n result += generateTerm(terms[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function generateAnchor(node) {\r\n assertType(node.type, 'anchor');\r\n\r\n switch (node.kind) {\r\n case 'start':\r\n return '^';\r\n case 'end':\r\n return '$';\r\n case 'boundary':\r\n return '\\\\b';\r\n case 'not-boundary':\r\n return '\\\\B';\r\n default:\r\n throw Error('Invalid assertion');\r\n }\r\n }\r\n\r\n function generateAtom(node) {\r\n assertType(node.type, 'anchor|characterClass|characterClassEscape|dot|group|reference|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateCharacterClass(node) {\r\n assertType(node.type, 'characterClass');\r\n\r\n var classRanges = node.body,\r\n i = -1,\r\n length = classRanges.length,\r\n result = '';\r\n\r\n if (node.negative) {\r\n result += '^';\r\n }\r\n\r\n while (++i < length) {\r\n result += generateClassAtom(classRanges[i]);\r\n }\r\n\r\n return '[' + result + ']';\r\n }\r\n\r\n function generateCharacterClassEscape(node) {\r\n assertType(node.type, 'characterClassEscape');\r\n\r\n return '\\\\' + node.value;\r\n }\r\n\r\n function generateUnicodePropertyEscape(node) {\r\n assertType(node.type, 'unicodePropertyEscape');\r\n\r\n return '\\\\' + (node.negative ? 'P' : 'p') + '{' + node.value + '}';\r\n }\r\n\r\n function generateCharacterClassRange(node) {\r\n assertType(node.type, 'characterClassRange');\r\n\r\n var min = node.min,\r\n max = node.max;\r\n\r\n if (min.type == 'characterClassRange' || max.type == 'characterClassRange') {\r\n throw Error('Invalid character class range');\r\n }\r\n\r\n return generateClassAtom(min) + '-' + generateClassAtom(max);\r\n }\r\n\r\n function generateClassAtom(node) {\r\n assertType(node.type, 'anchor|characterClassEscape|characterClassRange|dot|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateDisjunction(node) {\r\n assertType(node.type, 'disjunction');\r\n\r\n var body = node.body,\r\n i = -1,\r\n length = body.length,\r\n result = '';\r\n\r\n while (++i < length) {\r\n if (i != 0) {\r\n result += '|';\r\n }\r\n result += generate(body[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function generateDot(node) {\r\n assertType(node.type, 'dot');\r\n\r\n return '.';\r\n }\r\n\r\n function generateGroup(node) {\r\n assertType(node.type, 'group');\r\n\r\n var result = '';\r\n\r\n switch (node.behavior) {\r\n case 'normal':\r\n break;\r\n case 'ignore':\r\n result += '?:';\r\n break;\r\n case 'lookahead':\r\n result += '?=';\r\n break;\r\n case 'negativeLookahead':\r\n result += '?!';\r\n break;\r\n default:\r\n throw Error('Invalid behaviour: ' + node.behaviour);\r\n }\r\n\r\n var body = node.body,\r\n i = -1,\r\n length = body.length;\r\n\r\n while (++i < length) {\r\n result += generate(body[i]);\r\n }\r\n\r\n return '(' + result + ')';\r\n }\r\n\r\n function generateQuantifier(node) {\r\n assertType(node.type, 'quantifier');\r\n\r\n var quantifier = '',\r\n min = node.min,\r\n max = node.max;\r\n\r\n if (max == null) {\r\n if (min == 0) {\r\n quantifier = '*';\r\n } else if (min == 1) {\r\n quantifier = '+';\r\n } else {\r\n quantifier = '{' + min + ',}';\r\n }\r\n } else if (min == max) {\r\n quantifier = '{' + min + '}';\r\n } else if (min == 0 && max == 1) {\r\n quantifier = '?';\r\n } else {\r\n quantifier = '{' + min + ',' + max + '}';\r\n }\r\n\r\n if (!node.greedy) {\r\n quantifier += '?';\r\n }\r\n\r\n return generateAtom(node.body[0]) + quantifier;\r\n }\r\n\r\n function generateReference(node) {\r\n assertType(node.type, 'reference');\r\n\r\n return '\\\\' + node.matchIndex;\r\n }\r\n\r\n function generateTerm(node) {\r\n assertType(node.type, 'anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|unicodePropertyEscape|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateValue(node) {\r\n assertType(node.type, 'value');\r\n\r\n var kind = node.kind,\r\n codePoint = node.codePoint;\r\n\r\n switch (kind) {\r\n case 'controlLetter':\r\n return '\\\\c' + fromCodePoint(codePoint + 64);\r\n case 'hexadecimalEscape':\r\n return '\\\\x' + ('00' + codePoint.toString(16).toUpperCase()).slice(-2);\r\n case 'identifier':\r\n return '\\\\' + fromCodePoint(codePoint);\r\n case 'null':\r\n return '\\\\' + codePoint;\r\n case 'octal':\r\n return '\\\\' + codePoint.toString(8);\r\n case 'singleEscape':\r\n switch (codePoint) {\r\n case 0x0008:\r\n return '\\\\b';\r\n case 0x0009:\r\n return '\\\\t';\r\n case 0x000A:\r\n return '\\\\n';\r\n case 0x000B:\r\n return '\\\\v';\r\n case 0x000C:\r\n return '\\\\f';\r\n case 0x000D:\r\n return '\\\\r';\r\n default:\r\n throw Error('Invalid codepoint: ' + codePoint);\r\n }\r\n case 'symbol':\r\n return fromCodePoint(codePoint);\r\n case 'unicodeEscape':\r\n return '\\\\u' + ('0000' + codePoint.toString(16).toUpperCase()).slice(-4);\r\n case 'unicodeCodePointEscape':\r\n return '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\r\n default:\r\n throw Error('Unsupported node kind: ' + kind);\r\n }\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Used to generate strings for each node type.\r\n var generators = {\r\n 'alternative': generateAlternative,\r\n 'anchor': generateAnchor,\r\n 'characterClass': generateCharacterClass,\r\n 'characterClassEscape': generateCharacterClassEscape,\r\n 'characterClassRange': generateCharacterClassRange,\r\n 'unicodePropertyEscape': generateUnicodePropertyEscape,\r\n 'disjunction': generateDisjunction,\r\n 'dot': generateDot,\r\n 'group': generateGroup,\r\n 'quantifier': generateQuantifier,\r\n 'reference': generateReference,\r\n 'value': generateValue\r\n };\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Export regjsgen.\r\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\r\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\r\n // Define as an anonymous module so it can be aliased through path mapping.\r\n define(function() {\r\n return {\r\n 'generate': generate\r\n };\r\n });\r\n }\r\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\r\n else if (freeExports && freeModule) {\r\n // Export for CommonJS support.\r\n freeExports.generate = generate;\r\n }\r\n else {\r\n // Export to the global object.\r\n root.regjsgen = {\r\n 'generate': generate\r\n };\r\n }\r\n}.call(this));\r\n","// regjsparser\n//\n// ==================================================================\n//\n// See ECMA-262 Standard: 15.10.1\n//\n// NOTE: The ECMA-262 standard uses the term \"Assertion\" for /^/. Here the\n// term \"Anchor\" is used.\n//\n// Pattern ::\n// Disjunction\n//\n// Disjunction ::\n// Alternative\n// Alternative | Disjunction\n//\n// Alternative ::\n// [empty]\n// Alternative Term\n//\n// Term ::\n// Anchor\n// Atom\n// Atom Quantifier\n//\n// Anchor ::\n// ^\n// $\n// \\ b\n// \\ B\n// ( ? = Disjunction )\n// ( ? ! Disjunction )\n//\n// Quantifier ::\n// QuantifierPrefix\n// QuantifierPrefix ?\n//\n// QuantifierPrefix ::\n// *\n// +\n// ?\n// { DecimalDigits }\n// { DecimalDigits , }\n// { DecimalDigits , DecimalDigits }\n//\n// Atom ::\n// PatternCharacter\n// .\n// \\ AtomEscape\n// CharacterClass\n// ( Disjunction )\n// ( ? : Disjunction )\n//\n// PatternCharacter ::\n// SourceCharacter but not any of: ^ $ \\ . * + ? ( ) [ ] { } |\n//\n// AtomEscape ::\n// DecimalEscape\n// CharacterEscape\n// CharacterClassEscape\n//\n// CharacterEscape[U] ::\n// ControlEscape\n// c ControlLetter\n// HexEscapeSequence\n// RegExpUnicodeEscapeSequence[?U] (ES6)\n// IdentityEscape[?U]\n//\n// ControlEscape ::\n// one of f n r t v\n// ControlLetter ::\n// one of\n// a b c d e f g h i j k l m n o p q r s t u v w x y z\n// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n//\n// IdentityEscape ::\n// SourceCharacter but not IdentifierPart\n// <ZWJ>\n// <ZWNJ>\n//\n// DecimalEscape ::\n// DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n//\n// CharacterClassEscape ::\n// one of d D s S w W\n//\n// CharacterClass ::\n// [ [lookahead ∉ {^}] ClassRanges ]\n// [ ^ ClassRanges ]\n//\n// ClassRanges ::\n// [empty]\n// NonemptyClassRanges\n//\n// NonemptyClassRanges ::\n// ClassAtom\n// ClassAtom NonemptyClassRangesNoDash\n// ClassAtom - ClassAtom ClassRanges\n//\n// NonemptyClassRangesNoDash ::\n// ClassAtom\n// ClassAtomNoDash NonemptyClassRangesNoDash\n// ClassAtomNoDash - ClassAtom ClassRanges\n//\n// ClassAtom ::\n// -\n// ClassAtomNoDash\n//\n// ClassAtomNoDash ::\n// SourceCharacter but not one of \\ or ] or -\n// \\ ClassEscape\n//\n// ClassEscape ::\n// DecimalEscape\n// b\n// CharacterEscape\n// CharacterClassEscape\n\n(function() {\n\n function parse(str, flags, features) {\n if (!features) {\n features = {};\n }\n function addRaw(node) {\n node.raw = str.substring(node.range[0], node.range[1]);\n return node;\n }\n\n function updateRawStart(node, start) {\n node.range[0] = start;\n return addRaw(node);\n }\n\n function createAnchor(kind, rawLength) {\n return addRaw({\n type: 'anchor',\n kind: kind,\n range: [\n pos - rawLength,\n pos\n ]\n });\n }\n\n function createValue(kind, codePoint, from, to) {\n return addRaw({\n type: 'value',\n kind: kind,\n codePoint: codePoint,\n range: [from, to]\n });\n }\n\n function createEscaped(kind, codePoint, value, fromOffset) {\n fromOffset = fromOffset || 0;\n return createValue(kind, codePoint, pos - (value.length + fromOffset), pos);\n }\n\n function createCharacter(matches) {\n var _char = matches[0];\n var first = _char.charCodeAt(0);\n if (hasUnicodeFlag) {\n var second;\n if (_char.length === 1 && first >= 0xD800 && first <= 0xDBFF) {\n second = lookahead().charCodeAt(0);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n pos++;\n return createValue(\n 'symbol',\n (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000,\n pos - 2, pos);\n }\n }\n }\n return createValue('symbol', first, pos - 1, pos);\n }\n\n function createDisjunction(alternatives, from, to) {\n return addRaw({\n type: 'disjunction',\n body: alternatives,\n range: [\n from,\n to\n ]\n });\n }\n\n function createDot() {\n return addRaw({\n type: 'dot',\n range: [\n pos - 1,\n pos\n ]\n });\n }\n\n function createCharacterClassEscape(value) {\n return addRaw({\n type: 'characterClassEscape',\n value: value,\n range: [\n pos - 2,\n pos\n ]\n });\n }\n\n function createReference(matchIndex) {\n return addRaw({\n type: 'reference',\n matchIndex: parseInt(matchIndex, 10),\n range: [\n pos - 1 - matchIndex.length,\n pos\n ]\n });\n }\n\n function createGroup(behavior, disjunction, from, to) {\n return addRaw({\n type: 'group',\n behavior: behavior,\n body: disjunction,\n range: [\n from,\n to\n ]\n });\n }\n\n function createQuantifier(min, max, from, to) {\n if (to == null) {\n from = pos - 1;\n to = pos;\n }\n\n return addRaw({\n type: 'quantifier',\n min: min,\n max: max,\n greedy: true,\n body: null, // set later on\n range: [\n from,\n to\n ]\n });\n }\n\n function createAlternative(terms, from, to) {\n return addRaw({\n type: 'alternative',\n body: terms,\n range: [\n from,\n to\n ]\n });\n }\n\n function createCharacterClass(classRanges, negative, from, to) {\n return addRaw({\n type: 'characterClass',\n body: classRanges,\n negative: negative,\n range: [\n from,\n to\n ]\n });\n }\n\n function createClassRange(min, max, from, to) {\n // See 15.10.2.15:\n if (min.codePoint > max.codePoint) {\n bail('invalid range in character class', min.raw + '-' + max.raw, from, to);\n }\n\n return addRaw({\n type: 'characterClassRange',\n min: min,\n max: max,\n range: [\n from,\n to\n ]\n });\n }\n\n function flattenBody(body) {\n if (body.type === 'alternative') {\n return body.body;\n } else {\n return [body];\n }\n }\n\n function isEmpty(obj) {\n return obj.type === 'empty';\n }\n\n function incr(amount) {\n amount = (amount || 1);\n var res = str.substring(pos, pos + amount);\n pos += (amount || 1);\n return res;\n }\n\n function skip(value) {\n if (!match(value)) {\n bail('character', value);\n }\n }\n\n function match(value) {\n if (str.indexOf(value, pos) === pos) {\n return incr(value.length);\n }\n }\n\n function lookahead() {\n return str[pos];\n }\n\n function current(value) {\n return str.indexOf(value, pos) === pos;\n }\n\n function next(value) {\n return str[pos + 1] === value;\n }\n\n function matchReg(regExp) {\n var subStr = str.substring(pos);\n var res = subStr.match(regExp);\n if (res) {\n res.range = [];\n res.range[0] = pos;\n incr(res[0].length);\n res.range[1] = pos;\n }\n return res;\n }\n\n function parseDisjunction() {\n // Disjunction ::\n // Alternative\n // Alternative | Disjunction\n var res = [], from = pos;\n res.push(parseAlternative());\n\n while (match('|')) {\n res.push(parseAlternative());\n }\n\n if (res.length === 1) {\n return res[0];\n }\n\n return createDisjunction(res, from, pos);\n }\n\n function parseAlternative() {\n var res = [], from = pos;\n var term;\n\n // Alternative ::\n // [empty]\n // Alternative Term\n while (term = parseTerm()) {\n res.push(term);\n }\n\n if (res.length === 1) {\n return res[0];\n }\n\n return createAlternative(res, from, pos);\n }\n\n function parseTerm() {\n // Term ::\n // Anchor\n // Atom\n // Atom Quantifier\n\n if (pos >= str.length || current('|') || current(')')) {\n return null; /* Means: The term is empty */\n }\n\n var anchor = parseAnchor();\n\n if (anchor) {\n return anchor;\n }\n\n var atom = parseAtom();\n if (!atom) {\n bail('Expected atom');\n }\n var quantifier = parseQuantifier() || false;\n if (quantifier) {\n quantifier.body = flattenBody(atom);\n // The quantifier contains the atom. Therefore, the beginning of the\n // quantifier range is given by the beginning of the atom.\n updateRawStart(quantifier, atom.range[0]);\n return quantifier;\n }\n return atom;\n }\n\n function parseGroup(matchA, typeA, matchB, typeB) {\n var type = null, from = pos;\n\n if (match(matchA)) {\n type = typeA;\n } else if (match(matchB)) {\n type = typeB;\n } else {\n return false;\n }\n\n var body = parseDisjunction();\n if (!body) {\n bail('Expected disjunction');\n }\n skip(')');\n var group = createGroup(type, flattenBody(body), from, pos);\n\n if (type == 'normal') {\n // Keep track of the number of closed groups. This is required for\n // parseDecimalEscape(). In case the string is parsed a second time the\n // value already holds the total count and no incrementation is required.\n if (firstIteration) {\n closedCaptureCounter++;\n }\n }\n return group;\n }\n\n function parseAnchor() {\n // Anchor ::\n // ^\n // $\n // \\ b\n // \\ B\n // ( ? = Disjunction )\n // ( ? ! Disjunction )\n var res, from = pos;\n\n if (match('^')) {\n return createAnchor('start', 1 /* rawLength */);\n } else if (match('$')) {\n return createAnchor('end', 1 /* rawLength */);\n } else if (match('\\\\b')) {\n return createAnchor('boundary', 2 /* rawLength */);\n } else if (match('\\\\B')) {\n return createAnchor('not-boundary', 2 /* rawLength */);\n } else {\n return parseGroup('(?=', 'lookahead', '(?!', 'negativeLookahead');\n }\n }\n\n function parseQuantifier() {\n // Quantifier ::\n // QuantifierPrefix\n // QuantifierPrefix ?\n //\n // QuantifierPrefix ::\n // *\n // +\n // ?\n // { DecimalDigits }\n // { DecimalDigits , }\n // { DecimalDigits , DecimalDigits }\n\n var res, from = pos;\n var quantifier;\n var min, max;\n\n if (match('*')) {\n quantifier = createQuantifier(0);\n }\n else if (match('+')) {\n quantifier = createQuantifier(1);\n }\n else if (match('?')) {\n quantifier = createQuantifier(0, 1);\n }\n else if (res = matchReg(/^\\{([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, min, res.range[0], res.range[1]);\n }\n else if (res = matchReg(/^\\{([0-9]+),\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, undefined, res.range[0], res.range[1]);\n }\n else if (res = matchReg(/^\\{([0-9]+),([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n max = parseInt(res[2], 10);\n if (min > max) {\n bail('numbers out of order in {} quantifier', '', from, pos);\n }\n quantifier = createQuantifier(min, max, res.range[0], res.range[1]);\n }\n\n if (quantifier) {\n if (match('?')) {\n quantifier.greedy = false;\n quantifier.range[1] += 1;\n }\n }\n\n return quantifier;\n }\n\n function parseAtom() {\n // Atom ::\n // PatternCharacter\n // .\n // \\ AtomEscape\n // CharacterClass\n // ( Disjunction )\n // ( ? : Disjunction )\n\n var res;\n\n // jviereck: allow ']', '}' here as well to be compatible with browser's\n // implementations: ']'.match(/]/);\n // if (res = matchReg(/^[^^$\\\\.*+?()[\\]{}|]/)) {\n if (res = matchReg(/^[^^$\\\\.*+?(){[|]/)) {\n // PatternCharacter\n return createCharacter(res);\n }\n else if (match('.')) {\n // .\n return createDot();\n }\n else if (match('\\\\')) {\n // \\ AtomEscape\n res = parseAtomEscape();\n if (!res) {\n bail('atomEscape');\n }\n return res;\n }\n else if (res = parseCharacterClass()) {\n return res;\n }\n else {\n // ( Disjunction )\n // ( ? : Disjunction )\n return parseGroup('(?:', 'ignore', '(', 'normal');\n }\n }\n\n function parseUnicodeSurrogatePairEscape(firstEscape) {\n if (hasUnicodeFlag) {\n var first, second;\n if (firstEscape.kind == 'unicodeEscape' &&\n (first = firstEscape.codePoint) >= 0xD800 && first <= 0xDBFF &&\n current('\\\\') && next('u') ) {\n var prevPos = pos;\n pos++;\n var secondEscape = parseClassEscape();\n if (secondEscape.kind == 'unicodeEscape' &&\n (second = secondEscape.codePoint) >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n firstEscape.range[1] = secondEscape.range[1];\n firstEscape.codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n firstEscape.type = 'value';\n firstEscape.kind = 'unicodeCodePointEscape';\n addRaw(firstEscape);\n }\n else {\n pos = prevPos;\n }\n }\n }\n return firstEscape;\n }\n\n function parseClassEscape() {\n return parseAtomEscape(true);\n }\n\n function parseAtomEscape(insideCharacterClass) {\n // AtomEscape ::\n // DecimalEscape\n // CharacterEscape\n // CharacterClassEscape\n\n var res, from = pos;\n\n res = parseDecimalEscape();\n if (res) {\n return res;\n }\n\n // For ClassEscape\n if (insideCharacterClass) {\n if (match('b')) {\n // 15.10.2.19\n // The production ClassEscape :: b evaluates by returning the\n // CharSet containing the one character <BS> (Unicode value 0008).\n return createEscaped('singleEscape', 0x0008, '\\\\b');\n } else if (match('B')) {\n bail('\\\\B not possible inside of CharacterClass', '', from);\n }\n }\n\n res = parseCharacterEscape();\n\n return res;\n }\n\n\n function parseDecimalEscape() {\n // DecimalEscape ::\n // DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n // CharacterClassEscape :: one of d D s S w W\n\n var res, match;\n\n if (res = matchReg(/^(?!0)\\d+/)) {\n match = res[0];\n var refIdx = parseInt(res[0], 10);\n if (refIdx <= closedCaptureCounter) {\n // If the number is smaller than the normal-groups found so\n // far, then it is a reference...\n return createReference(res[0]);\n } else {\n // ... otherwise it needs to be interpreted as a octal (if the\n // number is in an octal format). If it is NOT octal format,\n // then the slash is ignored and the number is matched later\n // as normal characters.\n\n // Recall the negative decision to decide if the input must be parsed\n // a second time with the total normal-groups.\n backrefDenied.push(refIdx);\n\n // Reset the position again, as maybe only parts of the previous\n // matched numbers are actual octal numbers. E.g. in '019' only\n // the '01' should be matched.\n incr(-res[0].length);\n if (res = matchReg(/^[0-7]{1,3}/)) {\n return createEscaped('octal', parseInt(res[0], 8), res[0], 1);\n } else {\n // If we end up here, we have a case like /\\91/. Then the\n // first slash is to be ignored and the 9 & 1 to be treated\n // like ordinary characters. Create a character for the\n // first number only here - other number-characters\n // (if available) will be matched later.\n res = createCharacter(matchReg(/^[89]/));\n return updateRawStart(res, res.range[0] - 1);\n }\n }\n }\n // Only allow octal numbers in the following. All matched numbers start\n // with a zero (if the do not, the previous if-branch is executed).\n // If the number is not octal format and starts with zero (e.g. `091`)\n // then only the zeros `0` is treated here and the `91` are ordinary\n // characters.\n // Example:\n // /\\091/.exec('\\091')[0].length === 3\n else if (res = matchReg(/^[0-7]{1,3}/)) {\n match = res[0];\n if (/^0{1,3}$/.test(match)) {\n // If they are all zeros, then only take the first one.\n return createEscaped('null', 0x0000, '0', match.length + 1);\n } else {\n return createEscaped('octal', parseInt(match, 8), match, 1);\n }\n } else if (res = matchReg(/^[dDsSwW]/)) {\n return createCharacterClassEscape(res[0]);\n }\n return false;\n }\n\n function parseCharacterEscape() {\n // CharacterEscape ::\n // ControlEscape\n // c ControlLetter\n // HexEscapeSequence\n // UnicodeEscapeSequence\n // IdentityEscape\n\n var res;\n if (res = matchReg(/^[fnrtv]/)) {\n // ControlEscape\n var codePoint = 0;\n switch (res[0]) {\n case 't': codePoint = 0x009; break;\n case 'n': codePoint = 0x00A; break;\n case 'v': codePoint = 0x00B; break;\n case 'f': codePoint = 0x00C; break;\n case 'r': codePoint = 0x00D; break;\n }\n return createEscaped('singleEscape', codePoint, '\\\\' + res[0]);\n } else if (res = matchReg(/^c([a-zA-Z])/)) {\n // c ControlLetter\n return createEscaped('controlLetter', res[1].charCodeAt(0) % 32, res[1], 2);\n } else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) {\n // HexEscapeSequence\n return createEscaped('hexadecimalEscape', parseInt(res[1], 16), res[1], 2);\n } else if (res = matchReg(/^u([0-9a-fA-F]{4})/)) {\n // UnicodeEscapeSequence\n return parseUnicodeSurrogatePairEscape(\n createEscaped('unicodeEscape', parseInt(res[1], 16), res[1], 2)\n );\n } else if (hasUnicodeFlag && (res = matchReg(/^u\\{([0-9a-fA-F]+)\\}/))) {\n // RegExpUnicodeEscapeSequence (ES6 Unicode code point escape)\n return createEscaped('unicodeCodePointEscape', parseInt(res[1], 16), res[1], 4);\n } else if (features.unicodePropertyEscape && hasUnicodeFlag && (res = matchReg(/^([pP])\\{([^\\}]+)\\}/))) {\n // https://github.com/jviereck/regjsparser/issues/77\n return addRaw({\n type: 'unicodePropertyEscape',\n negative: res[1] === 'P',\n value: res[2],\n range: [res.range[0] - 1, res.range[1]],\n raw: res[0]\n });\n } else {\n // IdentityEscape\n return parseIdentityEscape();\n }\n }\n\n // Taken from the Esprima parser.\n function isIdentifierPart(ch) {\n // Generated by `tools/generate-identifier-regex.js`.\n var NonAsciiIdentifierPart = new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]');\n\n return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch <= 122) || // a..z\n (ch >= 48 && ch <= 57) || // 0..9\n (ch === 92) || // \\ (backslash)\n ((ch >= 0x80) && NonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n }\n\n function parseIdentityEscape() {\n // IdentityEscape ::\n // SourceCharacter but not IdentifierPart\n // <ZWJ>\n // <ZWNJ>\n\n var ZWJ = '\\u200C';\n var ZWNJ = '\\u200D';\n\n var tmp;\n\n if (!isIdentifierPart(lookahead())) {\n tmp = incr();\n return createEscaped('identifier', tmp.charCodeAt(0), tmp, 1);\n }\n\n if (match(ZWJ)) {\n // <ZWJ>\n return createEscaped('identifier', 0x200C, ZWJ);\n } else if (match(ZWNJ)) {\n // <ZWNJ>\n return createEscaped('identifier', 0x200D, ZWNJ);\n }\n\n return null;\n }\n\n function parseCharacterClass() {\n // CharacterClass ::\n // [ [lookahead ∉ {^}] ClassRanges ]\n // [ ^ ClassRanges ]\n\n var res, from = pos;\n if (res = matchReg(/^\\[\\^/)) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, true, from, pos);\n } else if (match('[')) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, false, from, pos);\n }\n\n return null;\n }\n\n function parseClassRanges() {\n // ClassRanges ::\n // [empty]\n // NonemptyClassRanges\n\n var res;\n if (current(']')) {\n // Empty array means nothing insinde of the ClassRange.\n return [];\n } else {\n res = parseNonemptyClassRanges();\n if (!res) {\n bail('nonEmptyClassRanges');\n }\n return res;\n }\n }\n\n function parseHelperClassRanges(atom) {\n var from, to, res;\n if (current('-') && !next(']')) {\n // ClassAtom - ClassAtom ClassRanges\n skip('-');\n\n res = parseClassAtom();\n if (!res) {\n bail('classAtom');\n }\n to = pos;\n var classRanges = parseClassRanges();\n if (!classRanges) {\n bail('classRanges');\n }\n from = atom.range[0];\n if (classRanges.type === 'empty') {\n return [createClassRange(atom, res, from, to)];\n }\n return [createClassRange(atom, res, from, to)].concat(classRanges);\n }\n\n res = parseNonemptyClassRangesNoDash();\n if (!res) {\n bail('nonEmptyClassRangesNoDash');\n }\n\n return [atom].concat(res);\n }\n\n function parseNonemptyClassRanges() {\n // NonemptyClassRanges ::\n // ClassAtom\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n\n var atom = parseClassAtom();\n if (!atom) {\n bail('classAtom');\n }\n\n if (current(']')) {\n // ClassAtom\n return [atom];\n }\n\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n return parseHelperClassRanges(atom);\n }\n\n function parseNonemptyClassRangesNoDash() {\n // NonemptyClassRangesNoDash ::\n // ClassAtom\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n\n var res = parseClassAtom();\n if (!res) {\n bail('classAtom');\n }\n if (current(']')) {\n // ClassAtom\n return res;\n }\n\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n return parseHelperClassRanges(res);\n }\n\n function parseClassAtom() {\n // ClassAtom ::\n // -\n // ClassAtomNoDash\n if (match('-')) {\n return createCharacter('-');\n } else {\n return parseClassAtomNoDash();\n }\n }\n\n function parseClassAtomNoDash() {\n // ClassAtomNoDash ::\n // SourceCharacter but not one of \\ or ] or -\n // \\ ClassEscape\n\n var res;\n if (res = matchReg(/^[^\\\\\\]-]/)) {\n return createCharacter(res[0]);\n } else if (match('\\\\')) {\n res = parseClassEscape();\n if (!res) {\n bail('classEscape');\n }\n\n return parseUnicodeSurrogatePairEscape(res);\n }\n }\n\n function bail(message, details, from, to) {\n from = from == null ? pos : from;\n to = to == null ? from : to;\n\n var contextStart = Math.max(0, from - 10);\n var contextEnd = Math.min(to + 10, str.length);\n\n // Output a bit of context and a line pointing to where our error is.\n //\n // We are assuming that there are no actual newlines in the content as this is a regular expression.\n var context = ' ' + str.substring(contextStart, contextEnd);\n var pointer = ' ' + new Array(from - contextStart + 1).join(' ') + '^';\n\n throw SyntaxError(message + ' at position ' + from + (details ? ': ' + details : '') + '\\n' + context + '\\n' + pointer);\n }\n\n var backrefDenied = [];\n var closedCaptureCounter = 0;\n var firstIteration = true;\n var hasUnicodeFlag = (flags || \"\").indexOf(\"u\") !== -1;\n var pos = 0;\n\n // Convert the input to a string and treat the empty string special.\n str = String(str);\n if (str === '') {\n str = '(?:)';\n }\n\n var result = parseDisjunction();\n\n if (result.range[1] !== str.length) {\n bail('Could not parse entire input - got stuck', '', result.range[1]);\n }\n\n // The spec requires to interpret the `\\2` in `/\\2()()/` as backreference.\n // As the parser collects the number of capture groups as the string is\n // parsed it is impossible to make these decisions at the point when the\n // `\\2` is handled. In case the local decision turns out to be wrong after\n // the parsing has finished, the input string is parsed a second time with\n // the total number of capture groups set.\n //\n // SEE: https://github.com/jviereck/regjsparser/issues/70\n for (var i = 0; i < backrefDenied.length; i++) {\n if (backrefDenied[i] <= closedCaptureCounter) {\n // Parse the input a second time.\n pos = 0;\n firstIteration = false;\n return parseDisjunction();\n }\n }\n\n return result;\n }\n\n var regjsparser = {\n parse: parse\n };\n\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = regjsparser;\n } else {\n window.regjsparser = regjsparser;\n }\n\n}());\n","/*! https://mths.be/regenerate v1.3.3 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js/io.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar ERRORS = {\n\t\t'rangeOrder': 'A range\\u2019s `stop` value must be greater than or equal ' +\n\t\t\t'to the `start` value.',\n\t\t'codePointRange': 'Invalid code point value. Code points range from ' +\n\t\t\t'U+000000 to U+10FFFF.'\n\t};\n\n\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-pairs\n\tvar HIGH_SURROGATE_MIN = 0xD800;\n\tvar HIGH_SURROGATE_MAX = 0xDBFF;\n\tvar LOW_SURROGATE_MIN = 0xDC00;\n\tvar LOW_SURROGATE_MAX = 0xDFFF;\n\n\t// In Regenerate output, `\\0` is never preceded by `\\` because we sort by\n\t// code point value, so let’s keep this regular expression simple.\n\tvar regexNull = /\\\\x00([^0123456789]|$)/g;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar extend = function(destination, source) {\n\t\tvar key;\n\t\tfor (key in source) {\n\t\t\tif (hasOwnProperty.call(source, key)) {\n\t\t\t\tdestination[key] = source[key];\n\t\t\t}\n\t\t}\n\t\treturn destination;\n\t};\n\n\tvar forEach = function(array, callback) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tcallback(array[index], index);\n\t\t}\n\t};\n\n\tvar toString = object.toString;\n\tvar isArray = function(value) {\n\t\treturn toString.call(value) == '[object Array]';\n\t};\n\tvar isNumber = function(value) {\n\t\treturn typeof value == 'number' ||\n\t\t\ttoString.call(value) == '[object Number]';\n\t};\n\n\t// This assumes that `number` is a positive integer that `toString()`s nicely\n\t// (which is the case for all code point values).\n\tvar zeroes = '0000';\n\tvar pad = function(number, totalCharacters) {\n\t\tvar string = String(number);\n\t\treturn string.length < totalCharacters\n\t\t\t? (zeroes + string).slice(-totalCharacters)\n\t\t\t: string;\n\t};\n\n\tvar hex = function(number) {\n\t\treturn Number(number).toString(16).toUpperCase();\n\t};\n\n\tvar slice = [].slice;\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar dataFromCodePoints = function(codePoints) {\n\t\tvar index = -1;\n\t\tvar length = codePoints.length;\n\t\tvar max = length - 1;\n\t\tvar result = [];\n\t\tvar isStart = true;\n\t\tvar tmp;\n\t\tvar previous = 0;\n\t\twhile (++index < length) {\n\t\t\ttmp = codePoints[index];\n\t\t\tif (isStart) {\n\t\t\t\tresult.push(tmp);\n\t\t\t\tprevious = tmp;\n\t\t\t\tisStart = false;\n\t\t\t} else {\n\t\t\t\tif (tmp == previous + 1) {\n\t\t\t\t\tif (index != max) {\n\t\t\t\t\t\tprevious = tmp;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisStart = true;\n\t\t\t\t\t\tresult.push(tmp + 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// End the previous range and start a new one.\n\t\t\t\t\tresult.push(previous + 1, tmp);\n\t\t\t\t\tprevious = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!isStart) {\n\t\t\tresult.push(tmp + 1);\n\t\t}\n\t\treturn result;\n\t};\n\n\tvar dataRemove = function(data, codePoint) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\t// Modify this pair.\n\t\t\t\tif (codePoint == start) {\n\t\t\t\t\tif (end == start + 1) {\n\t\t\t\t\t\t// Just remove `start` and `end`.\n\t\t\t\t\t\tdata.splice(index, 2);\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Just replace `start` with a new value.\n\t\t\t\t\t\tdata[index] = codePoint + 1;\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t}\n\t\t\t\t} else if (codePoint == end - 1) {\n\t\t\t\t\t// Just replace `end` with a new value.\n\t\t\t\t\tdata[index + 1] = codePoint;\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\t// Replace `[start, end]` with `[startA, endA, startB, endB]`.\n\t\t\t\t\tdata.splice(index, 2, start, codePoint, codePoint + 1, end);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataRemoveRange = function(data, rangeStart, rangeEnd) {\n\t\tif (rangeEnd < rangeStart) {\n\t\t\tthrow Error(ERRORS.rangeOrder);\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\twhile (index < data.length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n\t\t\t// Exit as soon as no more matching pairs can be found.\n\t\t\tif (start > rangeEnd) {\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if this range pair is equal to, or forms a subset of, the range\n\t\t\t// to be removed.\n\t\t\t// E.g. we have `[0, 11, 40, 51]` and want to remove 0-10 → `[40, 51]`.\n\t\t\t// E.g. we have `[40, 51]` and want to remove 0-100 → `[]`.\n\t\t\tif (rangeStart <= start && rangeEnd >= end) {\n\t\t\t\t// Remove this pair.\n\t\t\t\tdata.splice(index, 2);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check if both `rangeStart` and `rangeEnd` are within the bounds of\n\t\t\t// this pair.\n\t\t\t// E.g. we have `[0, 11]` and want to remove 4-6 → `[0, 4, 7, 11]`.\n\t\t\tif (rangeStart >= start && rangeEnd < end) {\n\t\t\t\tif (rangeStart == start) {\n\t\t\t\t\t// Replace `[start, end]` with `[startB, endB]`.\n\t\t\t\t\tdata[index] = rangeEnd + 1;\n\t\t\t\t\tdata[index + 1] = end + 1;\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\t// Replace `[start, end]` with `[startA, endA, startB, endB]`.\n\t\t\t\tdata.splice(index, 2, start, rangeStart, rangeEnd + 1, end + 1);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if only `rangeStart` is within the bounds of this pair.\n\t\t\t// E.g. we have `[0, 11]` and want to remove 4-20 → `[0, 4]`.\n\t\t\tif (rangeStart >= start && rangeStart <= end) {\n\t\t\t\t// Replace `end` with `rangeStart`.\n\t\t\t\tdata[index + 1] = rangeStart;\n\t\t\t\t// Note: we cannot `return` just yet, in case any following pairs still\n\t\t\t\t// contain matching code points.\n\t\t\t\t// E.g. we have `[0, 11, 14, 31]` and want to remove 4-20\n\t\t\t\t// → `[0, 4, 21, 31]`.\n\t\t\t}\n\n\t\t\t// Check if only `rangeEnd` is within the bounds of this pair.\n\t\t\t// E.g. we have `[14, 31]` and want to remove 4-20 → `[21, 31]`.\n\t\t\telse if (rangeEnd >= start && rangeEnd <= end) {\n\t\t\t\t// Just replace `start`.\n\t\t\t\tdata[index] = rangeEnd + 1;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\t var dataAdd = function(data, codePoint) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar lastIndex = null;\n\t\tvar length = data.length;\n\t\tif (codePoint < 0x0 || codePoint > 0x10FFFF) {\n\t\t\tthrow RangeError(ERRORS.codePointRange);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\n\t\t\t// Check if the code point is already in the set.\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tif (codePoint == start - 1) {\n\t\t\t\t// Just replace `start` with a new value.\n\t\t\t\tdata[index] = codePoint;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// At this point, if `start` is `greater` than `codePoint`, insert a new\n\t\t\t// `[start, end]` pair before the current pair, or after the current pair\n\t\t\t// if there is a known `lastIndex`.\n\t\t\tif (start > codePoint) {\n\t\t\t\tdata.splice(\n\t\t\t\t\tlastIndex != null ? lastIndex + 2 : 0,\n\t\t\t\t\t0,\n\t\t\t\t\tcodePoint,\n\t\t\t\t\tcodePoint + 1\n\t\t\t\t);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tif (codePoint == end) {\n\t\t\t\t// Check if adding this code point causes two separate ranges to become\n\t\t\t\t// a single range, e.g. `dataAdd([0, 4, 5, 10], 4)` → `[0, 10]`.\n\t\t\t\tif (codePoint + 1 == data[index + 2]) {\n\t\t\t\t\tdata.splice(index, 4, start, data[index + 3]);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\t// Else, just replace `end` with a new value.\n\t\t\t\tdata[index + 1] = codePoint + 1;\n\t\t\t\treturn data;\n\t\t\t}\n\t\t\tlastIndex = index;\n\t\t\tindex += 2;\n\t\t}\n\t\t// The loop has finished; add the new pair to the end of the data set.\n\t\tdata.push(codePoint, codePoint + 1);\n\t\treturn data;\n\t};\n\n\tvar dataAddData = function(dataA, dataB) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar data = dataA.slice();\n\t\tvar length = dataB.length;\n\t\twhile (index < length) {\n\t\t\tstart = dataB[index];\n\t\t\tend = dataB[index + 1] - 1;\n\t\t\tif (start == end) {\n\t\t\t\tdata = dataAdd(data, start);\n\t\t\t} else {\n\t\t\t\tdata = dataAddRange(data, start, end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataRemoveData = function(dataA, dataB) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar data = dataA.slice();\n\t\tvar length = dataB.length;\n\t\twhile (index < length) {\n\t\t\tstart = dataB[index];\n\t\t\tend = dataB[index + 1] - 1;\n\t\t\tif (start == end) {\n\t\t\t\tdata = dataRemove(data, start);\n\t\t\t} else {\n\t\t\t\tdata = dataRemoveRange(data, start, end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataAddRange = function(data, rangeStart, rangeEnd) {\n\t\tif (rangeEnd < rangeStart) {\n\t\t\tthrow Error(ERRORS.rangeOrder);\n\t\t}\n\t\tif (\n\t\t\trangeStart < 0x0 || rangeStart > 0x10FFFF ||\n\t\t\trangeEnd < 0x0 || rangeEnd > 0x10FFFF\n\t\t) {\n\t\t\tthrow RangeError(ERRORS.codePointRange);\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar added = false;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\n\t\t\tif (added) {\n\t\t\t\t// The range has already been added to the set; at this point, we just\n\t\t\t\t// need to get rid of the following ranges in case they overlap.\n\n\t\t\t\t// Check if this range can be combined with the previous range.\n\t\t\t\tif (start == rangeEnd + 1) {\n\t\t\t\t\tdata.splice(index - 1, 2);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Exit as soon as no more possibly overlapping pairs can be found.\n\t\t\t\tif (start > rangeEnd) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// E.g. `[0, 11, 12, 16]` and we’ve added 5-15, so we now have\n\t\t\t\t// `[0, 16, 12, 16]`. Remove the `12,16` part, as it lies within the\n\t\t\t\t// `0,16` range that was previously added.\n\t\t\t\tif (start >= rangeStart && start <= rangeEnd) {\n\t\t\t\t\t// `start` lies within the range that was previously added.\n\n\t\t\t\t\tif (end > rangeStart && end - 1 <= rangeEnd) {\n\t\t\t\t\t\t// `end` lies within the range that was previously added as well,\n\t\t\t\t\t\t// so remove this pair.\n\t\t\t\t\t\tdata.splice(index, 2);\n\t\t\t\t\t\tindex -= 2;\n\t\t\t\t\t\t// Note: we cannot `return` just yet, as there may still be other\n\t\t\t\t\t\t// overlapping pairs.\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// `start` lies within the range that was previously added, but\n\t\t\t\t\t\t// `end` doesn’t. E.g. `[0, 11, 12, 31]` and we’ve added 5-15, so\n\t\t\t\t\t\t// now we have `[0, 16, 12, 31]`. This must be written as `[0, 31]`.\n\t\t\t\t\t\t// Remove the previously added `end` and the current `start`.\n\t\t\t\t\t\tdata.splice(index - 1, 2);\n\t\t\t\t\t\tindex -= 2;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: we cannot return yet.\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\telse if (start == rangeEnd + 1) {\n\t\t\t\tdata[index] = rangeStart;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if a new pair must be inserted *before* the current one.\n\t\t\telse if (start > rangeEnd) {\n\t\t\t\tdata.splice(index, 0, rangeStart, rangeEnd + 1);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\telse if (rangeStart >= start && rangeStart < end && rangeEnd + 1 <= end) {\n\t\t\t\t// The new range lies entirely within an existing range pair. No action\n\t\t\t\t// needed.\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\telse if (\n\t\t\t\t// E.g. `[0, 11]` and you add 5-15 → `[0, 16]`.\n\t\t\t\t(rangeStart >= start && rangeStart < end) ||\n\t\t\t\t// E.g. `[0, 3]` and you add 3-6 → `[0, 7]`.\n\t\t\t\tend == rangeStart\n\t\t\t) {\n\t\t\t\t// Replace `end` with the new value.\n\t\t\t\tdata[index + 1] = rangeEnd + 1;\n\t\t\t\t// Make sure the next range pair doesn’t overlap, e.g. `[0, 11, 12, 14]`\n\t\t\t\t// and you add 5-15 → `[0, 16]`, i.e. remove the `12,14` part.\n\t\t\t\tadded = true;\n\t\t\t\t// Note: we cannot `return` just yet.\n\t\t\t}\n\n\t\t\telse if (rangeStart <= start && rangeEnd + 1 >= end) {\n\t\t\t\t// The new range is a superset of the old range.\n\t\t\t\tdata[index] = rangeStart;\n\t\t\t\tdata[index + 1] = rangeEnd + 1;\n\t\t\t\tadded = true;\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\t// The loop has finished without doing anything; add the new pair to the end\n\t\t// of the data set.\n\t\tif (!added) {\n\t\t\tdata.push(rangeStart, rangeEnd + 1);\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataContains = function(data, codePoint) {\n\t\tvar index = 0;\n\t\tvar length = data.length;\n\t\t// Exit early if `codePoint` is not within `data`’s overall range.\n\t\tvar start = data[index];\n\t\tvar end = data[length - 1];\n\t\tif (length >= 2) {\n\t\t\tif (codePoint < start || codePoint > end) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar dataIntersection = function(data, codePoints) {\n\t\tvar index = 0;\n\t\tvar length = codePoints.length;\n\t\tvar codePoint;\n\t\tvar result = [];\n\t\twhile (index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tif (dataContains(data, codePoint)) {\n\t\t\t\tresult.push(codePoint);\n\t\t\t}\n\t\t\t++index;\n\t\t}\n\t\treturn dataFromCodePoints(result);\n\t};\n\n\tvar dataIsEmpty = function(data) {\n\t\treturn !data.length;\n\t};\n\n\tvar dataIsSingleton = function(data) {\n\t\t// Check if the set only represents a single code point.\n\t\treturn data.length == 2 && data[0] + 1 == data[1];\n\t};\n\n\tvar dataToArray = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar result = [];\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\twhile (start < end) {\n\t\t\t\tresult.push(start);\n\t\t\t\t++start;\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\tvar floor = Math.floor;\n\tvar highSurrogate = function(codePoint) {\n\t\treturn parseInt(\n\t\t\tfloor((codePoint - 0x10000) / 0x400) + HIGH_SURROGATE_MIN,\n\t\t\t10\n\t\t);\n\t};\n\n\tvar lowSurrogate = function(codePoint) {\n\t\treturn parseInt(\n\t\t\t(codePoint - 0x10000) % 0x400 + LOW_SURROGATE_MIN,\n\t\t\t10\n\t\t);\n\t};\n\n\tvar stringFromCharCode = String.fromCharCode;\n\tvar codePointToString = function(codePoint) {\n\t\tvar string;\n\t\t// https://mathiasbynens.be/notes/javascript-escapes#single\n\t\t// Note: the `\\b` escape sequence for U+0008 BACKSPACE in strings has a\n\t\t// different meaning in regular expressions (word boundary), so it cannot\n\t\t// be used here.\n\t\tif (codePoint == 0x09) {\n\t\t\tstring = '\\\\t';\n\t\t}\n\t\t// Note: IE < 9 treats `'\\v'` as `'v'`, so avoid using it.\n\t\t// else if (codePoint == 0x0B) {\n\t\t// \tstring = '\\\\v';\n\t\t// }\n\t\telse if (codePoint == 0x0A) {\n\t\t\tstring = '\\\\n';\n\t\t}\n\t\telse if (codePoint == 0x0C) {\n\t\t\tstring = '\\\\f';\n\t\t}\n\t\telse if (codePoint == 0x0D) {\n\t\t\tstring = '\\\\r';\n\t\t}\n\t\telse if (codePoint == 0x5C) {\n\t\t\tstring = '\\\\\\\\';\n\t\t}\n\t\telse if (\n\t\t\tcodePoint == 0x24 ||\n\t\t\t(codePoint >= 0x28 && codePoint <= 0x2B) ||\n\t\t\t(codePoint >= 0x2D && codePoint <= 0x2F) ||\n\t\t\tcodePoint == 0x3F ||\n\t\t\t(codePoint >= 0x5B && codePoint <= 0x5E) ||\n\t\t\t(codePoint >= 0x7B && codePoint <= 0x7D)\n\t\t) {\n\t\t\t// The code point maps to an unsafe printable ASCII character;\n\t\t\t// backslash-escape it. Here’s the list of those symbols:\n\t\t\t//\n\t\t\t// $()*+-./?[\\]^{|}\n\t\t\t//\n\t\t\t// See #7 for more info.\n\t\t\tstring = '\\\\' + stringFromCharCode(codePoint);\n\t\t}\n\t\telse if (codePoint >= 0x20 && codePoint <= 0x7E) {\n\t\t\t// The code point maps to one of these printable ASCII symbols\n\t\t\t// (including the space character):\n\t\t\t//\n\t\t\t// !\"#%&',/0123456789:;<=>@ABCDEFGHIJKLMNO\n\t\t\t// PQRSTUVWXYZ_`abcdefghijklmnopqrstuvwxyz~\n\t\t\t//\n\t\t\t// These can safely be used directly.\n\t\t\tstring = stringFromCharCode(codePoint);\n\t\t}\n\t\telse if (codePoint <= 0xFF) {\n\t\t\t// https://mathiasbynens.be/notes/javascript-escapes#hexadecimal\n\t\t\tstring = '\\\\x' + pad(hex(codePoint), 2);\n\t\t}\n\t\telse { // `codePoint <= 0xFFFF` holds true.\n\t\t\t// https://mathiasbynens.be/notes/javascript-escapes#unicode\n\t\t\tstring = '\\\\u' + pad(hex(codePoint), 4);\n\t\t}\n\n\t\t// There’s no need to account for astral symbols / surrogate pairs here,\n\t\t// since `codePointToString` is private and only used for BMP code points.\n\t\t// But if that’s what you need, just add an `else` block with this code:\n\t\t//\n\t\t// string = '\\\\u' + pad(hex(highSurrogate(codePoint)), 4)\n\t\t// \t+ '\\\\u' + pad(hex(lowSurrogate(codePoint)), 4);\n\n\t\treturn string;\n\t};\n\n\tvar codePointToStringUnicode = function(codePoint) {\n\t\tif (codePoint <= 0xFFFF) {\n\t\t\treturn codePointToString(codePoint);\n\t\t}\n\t\treturn '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\n\t};\n\n\tvar symbolToCodePoint = function(symbol) {\n\t\tvar length = symbol.length;\n\t\tvar first = symbol.charCodeAt(0);\n\t\tvar second;\n\t\tif (\n\t\t\tfirst >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX &&\n\t\t\tlength > 1 // There is a next code unit.\n\t\t) {\n\t\t\t// `first` is a high surrogate, and there is a next character. Assume\n\t\t\t// it’s a low surrogate (else it’s invalid usage of Regenerate anyway).\n\t\t\tsecond = symbol.charCodeAt(1);\n\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\treturn (first - HIGH_SURROGATE_MIN) * 0x400 +\n\t\t\t\tsecond - LOW_SURROGATE_MIN + 0x10000;\n\t\t}\n\t\treturn first;\n\t};\n\n\tvar createBMPCharacterClasses = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar result = '';\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\tif (dataIsSingleton(data)) {\n\t\t\treturn codePointToString(data[0]);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\t\t\tif (start == end) {\n\t\t\t\tresult += codePointToString(start);\n\t\t\t} else if (start + 1 == end) {\n\t\t\t\tresult += codePointToString(start) + codePointToString(end);\n\t\t\t} else {\n\t\t\t\tresult += codePointToString(start) + '-' + codePointToString(end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn '[' + result + ']';\n\t};\n\n\tvar createUnicodeCharacterClasses = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar result = '';\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\tif (dataIsSingleton(data)) {\n\t\t\treturn codePointToStringUnicode(data[0]);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\t\t\tif (start == end) {\n\t\t\t\tresult += codePointToStringUnicode(start);\n\t\t\t} else if (start + 1 == end) {\n\t\t\t\tresult += codePointToStringUnicode(start) + codePointToStringUnicode(end);\n\t\t\t} else {\n\t\t\t\tresult += codePointToStringUnicode(start) + '-' + codePointToStringUnicode(end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn '[' + result + ']';\n\t};\n\n\tvar splitAtBMP = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar loneHighSurrogates = [];\n\t\tvar loneLowSurrogates = [];\n\t\tvar bmp = [];\n\t\tvar astral = [];\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n\t\t\tif (start < HIGH_SURROGATE_MIN) {\n\n\t\t\t\t// The range starts and ends before the high surrogate range.\n\t\t\t\t// E.g. (0, 0x10).\n\t\t\t\tif (end < HIGH_SURROGATE_MIN) {\n\t\t\t\t\tbmp.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends within it.\n\t\t\t\t// E.g. (0, 0xD855).\n\t\t\t\tif (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends in the low\n\t\t\t\t// surrogate range. E.g. (0, 0xDCFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends after the\n\t\t\t\t// low surrogate range. E.g. (0, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start >= HIGH_SURROGATE_MIN && start <= HIGH_SURROGATE_MAX) {\n\n\t\t\t\t// The range starts and ends in the high surrogate range.\n\t\t\t\t// E.g. (0xD855, 0xD866).\n\t\t\t\tif (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the high surrogate range and ends in the low\n\t\t\t\t// surrogate range. E.g. (0xD855, 0xDCFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the high surrogate range and ends after the low\n\t\t\t\t// surrogate range. E.g. (0xD855, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start >= LOW_SURROGATE_MIN && start <= LOW_SURROGATE_MAX) {\n\n\t\t\t\t// The range starts and ends in the low surrogate range.\n\t\t\t\t// E.g. (0xDCFF, 0xDDFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneLowSurrogates.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the low surrogate range and ends after the low\n\t\t\t\t// surrogate range. E.g. (0xDCFF, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneLowSurrogates.push(start, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start > LOW_SURROGATE_MAX && start <= 0xFFFF) {\n\n\t\t\t\t// The range starts and ends after the low surrogate range.\n\t\t\t\t// E.g. (0xFFAA, 0x10FFFF).\n\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\tbmp.push(start, end + 1);\n\t\t\t\t} else {\n\t\t\t\t\tbmp.push(start, 0xFFFF + 1);\n\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// The range starts and ends in the astral range.\n\t\t\t\tastral.push(start, end + 1);\n\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\treturn {\n\t\t\t'loneHighSurrogates': loneHighSurrogates,\n\t\t\t'loneLowSurrogates': loneLowSurrogates,\n\t\t\t'bmp': bmp,\n\t\t\t'astral': astral\n\t\t};\n\t};\n\n\tvar optimizeSurrogateMappings = function(surrogateMappings) {\n\t\tvar result = [];\n\t\tvar tmpLow = [];\n\t\tvar addLow = false;\n\t\tvar mapping;\n\t\tvar nextMapping;\n\t\tvar highSurrogates;\n\t\tvar lowSurrogates;\n\t\tvar nextHighSurrogates;\n\t\tvar nextLowSurrogates;\n\t\tvar index = -1;\n\t\tvar length = surrogateMappings.length;\n\t\twhile (++index < length) {\n\t\t\tmapping = surrogateMappings[index];\n\t\t\tnextMapping = surrogateMappings[index + 1];\n\t\t\tif (!nextMapping) {\n\t\t\t\tresult.push(mapping);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thighSurrogates = mapping[0];\n\t\t\tlowSurrogates = mapping[1];\n\t\t\tnextHighSurrogates = nextMapping[0];\n\t\t\tnextLowSurrogates = nextMapping[1];\n\n\t\t\t// Check for identical high surrogate ranges.\n\t\t\ttmpLow = lowSurrogates;\n\t\t\twhile (\n\t\t\t\tnextHighSurrogates &&\n\t\t\t\thighSurrogates[0] == nextHighSurrogates[0] &&\n\t\t\t\thighSurrogates[1] == nextHighSurrogates[1]\n\t\t\t) {\n\t\t\t\t// Merge with the next item.\n\t\t\t\tif (dataIsSingleton(nextLowSurrogates)) {\n\t\t\t\t\ttmpLow = dataAdd(tmpLow, nextLowSurrogates[0]);\n\t\t\t\t} else {\n\t\t\t\t\ttmpLow = dataAddRange(\n\t\t\t\t\t\ttmpLow,\n\t\t\t\t\t\tnextLowSurrogates[0],\n\t\t\t\t\t\tnextLowSurrogates[1] - 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t\tmapping = surrogateMappings[index];\n\t\t\t\thighSurrogates = mapping[0];\n\t\t\t\tlowSurrogates = mapping[1];\n\t\t\t\tnextMapping = surrogateMappings[index + 1];\n\t\t\t\tnextHighSurrogates = nextMapping && nextMapping[0];\n\t\t\t\tnextLowSurrogates = nextMapping && nextMapping[1];\n\t\t\t\taddLow = true;\n\t\t\t}\n\t\t\tresult.push([\n\t\t\t\thighSurrogates,\n\t\t\t\taddLow ? tmpLow : lowSurrogates\n\t\t\t]);\n\t\t\taddLow = false;\n\t\t}\n\t\treturn optimizeByLowSurrogates(result);\n\t};\n\n\tvar optimizeByLowSurrogates = function(surrogateMappings) {\n\t\tif (surrogateMappings.length == 1) {\n\t\t\treturn surrogateMappings;\n\t\t}\n\t\tvar index = -1;\n\t\tvar innerIndex = -1;\n\t\twhile (++index < surrogateMappings.length) {\n\t\t\tvar mapping = surrogateMappings[index];\n\t\t\tvar lowSurrogates = mapping[1];\n\t\t\tvar lowSurrogateStart = lowSurrogates[0];\n\t\t\tvar lowSurrogateEnd = lowSurrogates[1];\n\t\t\tinnerIndex = index; // Note: the loop starts at the next index.\n\t\t\twhile (++innerIndex < surrogateMappings.length) {\n\t\t\t\tvar otherMapping = surrogateMappings[innerIndex];\n\t\t\t\tvar otherLowSurrogates = otherMapping[1];\n\t\t\t\tvar otherLowSurrogateStart = otherLowSurrogates[0];\n\t\t\t\tvar otherLowSurrogateEnd = otherLowSurrogates[1];\n\t\t\t\tif (\n\t\t\t\t\tlowSurrogateStart == otherLowSurrogateStart &&\n\t\t\t\t\tlowSurrogateEnd == otherLowSurrogateEnd\n\t\t\t\t) {\n\t\t\t\t\t// Add the code points in the other item to this one.\n\t\t\t\t\tif (dataIsSingleton(otherMapping[0])) {\n\t\t\t\t\t\tmapping[0] = dataAdd(mapping[0], otherMapping[0][0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapping[0] = dataAddRange(\n\t\t\t\t\t\t\tmapping[0],\n\t\t\t\t\t\t\totherMapping[0][0],\n\t\t\t\t\t\t\totherMapping[0][1] - 1\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Remove the other, now redundant, item.\n\t\t\t\t\tsurrogateMappings.splice(innerIndex, 1);\n\t\t\t\t\t--innerIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn surrogateMappings;\n\t};\n\n\tvar surrogateSet = function(data) {\n\t\t// Exit early if `data` is an empty set.\n\t\tif (!data.length) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar startHigh;\n\t\tvar startLow;\n\t\tvar endHigh;\n\t\tvar endLow;\n\t\tvar surrogateMappings = [];\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1;\n\n\t\t\tstartHigh = highSurrogate(start);\n\t\t\tstartLow = lowSurrogate(start);\n\t\t\tendHigh = highSurrogate(end);\n\t\t\tendLow = lowSurrogate(end);\n\n\t\t\tvar startsWithLowestLowSurrogate = startLow == LOW_SURROGATE_MIN;\n\t\t\tvar endsWithHighestLowSurrogate = endLow == LOW_SURROGATE_MAX;\n\t\t\tvar complete = false;\n\n\t\t\t// Append the previous high-surrogate-to-low-surrogate mappings.\n\t\t\t// Step 1: `(startHigh, startLow)` to `(startHigh, LOW_SURROGATE_MAX)`.\n\t\t\tif (\n\t\t\t\tstartHigh == endHigh ||\n\t\t\t\tstartsWithLowestLowSurrogate && endsWithHighestLowSurrogate\n\t\t\t) {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[startHigh, endHigh + 1],\n\t\t\t\t\t[startLow, endLow + 1]\n\t\t\t\t]);\n\t\t\t\tcomplete = true;\n\t\t\t} else {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[startHigh, startHigh + 1],\n\t\t\t\t\t[startLow, LOW_SURROGATE_MAX + 1]\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\t// Step 2: `(startHigh + 1, LOW_SURROGATE_MIN)` to\n\t\t\t// `(endHigh - 1, LOW_SURROGATE_MAX)`.\n\t\t\tif (!complete && startHigh + 1 < endHigh) {\n\t\t\t\tif (endsWithHighestLowSurrogate) {\n\t\t\t\t\t// Combine step 2 and step 3.\n\t\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t\t[startHigh + 1, endHigh + 1],\n\t\t\t\t\t\t[LOW_SURROGATE_MIN, endLow + 1]\n\t\t\t\t\t]);\n\t\t\t\t\tcomplete = true;\n\t\t\t\t} else {\n\t\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t\t[startHigh + 1, endHigh],\n\t\t\t\t\t\t[LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Step 3. `(endHigh, LOW_SURROGATE_MIN)` to `(endHigh, endLow)`.\n\t\t\tif (!complete) {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[endHigh, endHigh + 1],\n\t\t\t\t\t[LOW_SURROGATE_MIN, endLow + 1]\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\n\t\t// The format of `surrogateMappings` is as follows:\n\t\t//\n\t\t// [ surrogateMapping1, surrogateMapping2 ]\n\t\t//\n\t\t// i.e.:\n\t\t//\n\t\t// [\n\t\t// [ highSurrogates1, lowSurrogates1 ],\n\t\t// [ highSurrogates2, lowSurrogates2 ]\n\t\t// ]\n\t\treturn optimizeSurrogateMappings(surrogateMappings);\n\t};\n\n\tvar createSurrogateCharacterClasses = function(surrogateMappings) {\n\t\tvar result = [];\n\t\tforEach(surrogateMappings, function(surrogateMapping) {\n\t\t\tvar highSurrogates = surrogateMapping[0];\n\t\t\tvar lowSurrogates = surrogateMapping[1];\n\t\t\tresult.push(\n\t\t\t\tcreateBMPCharacterClasses(highSurrogates) +\n\t\t\t\tcreateBMPCharacterClasses(lowSurrogates)\n\t\t\t);\n\t\t});\n\t\treturn result.join('|');\n\t};\n\n\tvar createCharacterClassesFromData = function(data, bmpOnly, hasUnicodeFlag) {\n\t\tif (hasUnicodeFlag) {\n\t\t\treturn createUnicodeCharacterClasses(data);\n\t\t}\n\t\tvar result = [];\n\n\t\tvar parts = splitAtBMP(data);\n\t\tvar loneHighSurrogates = parts.loneHighSurrogates;\n\t\tvar loneLowSurrogates = parts.loneLowSurrogates;\n\t\tvar bmp = parts.bmp;\n\t\tvar astral = parts.astral;\n\t\tvar hasLoneHighSurrogates = !dataIsEmpty(loneHighSurrogates);\n\t\tvar hasLoneLowSurrogates = !dataIsEmpty(loneLowSurrogates);\n\n\t\tvar surrogateMappings = surrogateSet(astral);\n\n\t\tif (bmpOnly) {\n\t\t\tbmp = dataAddData(bmp, loneHighSurrogates);\n\t\t\thasLoneHighSurrogates = false;\n\t\t\tbmp = dataAddData(bmp, loneLowSurrogates);\n\t\t\thasLoneLowSurrogates = false;\n\t\t}\n\n\t\tif (!dataIsEmpty(bmp)) {\n\t\t\t// The data set contains BMP code points that are not high surrogates\n\t\t\t// needed for astral code points in the set.\n\t\t\tresult.push(createBMPCharacterClasses(bmp));\n\t\t}\n\t\tif (surrogateMappings.length) {\n\t\t\t// The data set contains astral code points; append character classes\n\t\t\t// based on their surrogate pairs.\n\t\t\tresult.push(createSurrogateCharacterClasses(surrogateMappings));\n\t\t}\n\t\t// https://gist.github.com/mathiasbynens/bbe7f870208abcfec860\n\t\tif (hasLoneHighSurrogates) {\n\t\t\tresult.push(\n\t\t\t\tcreateBMPCharacterClasses(loneHighSurrogates) +\n\t\t\t\t// Make sure the high surrogates aren’t part of a surrogate pair.\n\t\t\t\t'(?![\\\\uDC00-\\\\uDFFF])'\n\t\t\t);\n\t\t}\n\t\tif (hasLoneLowSurrogates) {\n\t\t\tresult.push(\n\t\t\t\t// It is not possible to accurately assert the low surrogates aren’t\n\t\t\t\t// part of a surrogate pair, since JavaScript regular expressions do\n\t\t\t\t// not support lookbehind.\n\t\t\t\t'(?:[^\\\\uD800-\\\\uDBFF]|^)' +\n\t\t\t\tcreateBMPCharacterClasses(loneLowSurrogates)\n\t\t\t);\n\t\t}\n\t\treturn result.join('|');\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// `regenerate` can be used as a constructor (and new methods can be added to\n\t// its prototype) but also as a regular function, the latter of which is the\n\t// documented and most common usage. For that reason, it’s not capitalized.\n\tvar regenerate = function(value) {\n\t\tif (arguments.length > 1) {\n\t\t\tvalue = slice.call(arguments);\n\t\t}\n\t\tif (this instanceof regenerate) {\n\t\t\tthis.data = [];\n\t\t\treturn value ? this.add(value) : this;\n\t\t}\n\t\treturn (new regenerate).add(value);\n\t};\n\n\tregenerate.version = '1.3.3';\n\n\tvar proto = regenerate.prototype;\n\textend(proto, {\n\t\t'add': function(value) {\n\t\t\tvar $this = this;\n\t\t\tif (value == null) {\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (value instanceof regenerate) {\n\t\t\t\t// Allow passing other Regenerate instances.\n\t\t\t\t$this.data = dataAddData($this.data, value.data);\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tvalue = slice.call(arguments);\n\t\t\t}\n\t\t\tif (isArray(value)) {\n\t\t\t\tforEach(value, function(item) {\n\t\t\t\t\t$this.add(item);\n\t\t\t\t});\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\t$this.data = dataAdd(\n\t\t\t\t$this.data,\n\t\t\t\tisNumber(value) ? value : symbolToCodePoint(value)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'remove': function(value) {\n\t\t\tvar $this = this;\n\t\t\tif (value == null) {\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (value instanceof regenerate) {\n\t\t\t\t// Allow passing other Regenerate instances.\n\t\t\t\t$this.data = dataRemoveData($this.data, value.data);\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tvalue = slice.call(arguments);\n\t\t\t}\n\t\t\tif (isArray(value)) {\n\t\t\t\tforEach(value, function(item) {\n\t\t\t\t\t$this.remove(item);\n\t\t\t\t});\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\t$this.data = dataRemove(\n\t\t\t\t$this.data,\n\t\t\t\tisNumber(value) ? value : symbolToCodePoint(value)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'addRange': function(start, end) {\n\t\t\tvar $this = this;\n\t\t\t$this.data = dataAddRange($this.data,\n\t\t\t\tisNumber(start) ? start : symbolToCodePoint(start),\n\t\t\t\tisNumber(end) ? end : symbolToCodePoint(end)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'removeRange': function(start, end) {\n\t\t\tvar $this = this;\n\t\t\tvar startCodePoint = isNumber(start) ? start : symbolToCodePoint(start);\n\t\t\tvar endCodePoint = isNumber(end) ? end : symbolToCodePoint(end);\n\t\t\t$this.data = dataRemoveRange(\n\t\t\t\t$this.data,\n\t\t\t\tstartCodePoint,\n\t\t\t\tendCodePoint\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'intersection': function(argument) {\n\t\t\tvar $this = this;\n\t\t\t// Allow passing other Regenerate instances.\n\t\t\t// TODO: Optimize this by writing and using `dataIntersectionData()`.\n\t\t\tvar array = argument instanceof regenerate ?\n\t\t\t\tdataToArray(argument.data) :\n\t\t\t\targument;\n\t\t\t$this.data = dataIntersection($this.data, array);\n\t\t\treturn $this;\n\t\t},\n\t\t'contains': function(codePoint) {\n\t\t\treturn dataContains(\n\t\t\t\tthis.data,\n\t\t\t\tisNumber(codePoint) ? codePoint : symbolToCodePoint(codePoint)\n\t\t\t);\n\t\t},\n\t\t'clone': function() {\n\t\t\tvar set = new regenerate;\n\t\t\tset.data = this.data.slice(0);\n\t\t\treturn set;\n\t\t},\n\t\t'toString': function(options) {\n\t\t\tvar result = createCharacterClassesFromData(\n\t\t\t\tthis.data,\n\t\t\t\toptions ? options.bmpOnly : false,\n\t\t\t\toptions ? options.hasUnicodeFlag : false\n\t\t\t);\n\t\t\tif (!result) {\n\t\t\t\t// For an empty set, return something that can be inserted `/here/` to\n\t\t\t\t// form a valid regular expression. Avoid `(?:)` since that matches the\n\t\t\t\t// empty string.\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\t// Use `\\0` instead of `\\x00` where possible.\n\t\t\treturn result.replace(regexNull, '\\\\0$1');\n\t\t},\n\t\t'toRegExp': function(flags) {\n\t\t\tvar pattern = this.toString(\n\t\t\t\tflags && flags.indexOf('u') != -1 ?\n\t\t\t\t\t{ 'hasUnicodeFlag': true } :\n\t\t\t\t\tnull\n\t\t\t);\n\t\t\treturn RegExp(pattern, flags || '');\n\t\t},\n\t\t'valueOf': function() { // Note: `valueOf` is aliased as `toArray`.\n\t\t\treturn dataToArray(this.data);\n\t\t}\n\t});\n\n\tproto.toArray = proto.valueOf;\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn regenerate;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = regenerate;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfreeExports.regenerate = regenerate;\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.regenerate = regenerate;\n\t}\n\n}(this));\n","module.exports = new Set([\n\t// Non-binary properties:\n\t'General_Category',\n\t'Script',\n\t'Script_Extensions',\n\t// Binary properties:\n\t'Alphabetic',\n\t'Any',\n\t'ASCII',\n\t'ASCII_Hex_Digit',\n\t'Assigned',\n\t'Bidi_Control',\n\t'Bidi_Mirrored',\n\t'Case_Ignorable',\n\t'Cased',\n\t'Changes_When_Casefolded',\n\t'Changes_When_Casemapped',\n\t'Changes_When_Lowercased',\n\t'Changes_When_NFKC_Casefolded',\n\t'Changes_When_Titlecased',\n\t'Changes_When_Uppercased',\n\t'Dash',\n\t'Default_Ignorable_Code_Point',\n\t'Deprecated',\n\t'Diacritic',\n\t'Emoji',\n\t'Emoji_Component',\n\t'Emoji_Modifier',\n\t'Emoji_Modifier_Base',\n\t'Emoji_Presentation',\n\t'Extender',\n\t'Grapheme_Base',\n\t'Grapheme_Extend',\n\t'Hex_Digit',\n\t'ID_Continue',\n\t'ID_Start',\n\t'Ideographic',\n\t'IDS_Binary_Operator',\n\t'IDS_Trinary_Operator',\n\t'Join_Control',\n\t'Logical_Order_Exception',\n\t'Lowercase',\n\t'Math',\n\t'Noncharacter_Code_Point',\n\t'Pattern_Syntax',\n\t'Pattern_White_Space',\n\t'Quotation_Mark',\n\t'Radical',\n\t'Regional_Indicator',\n\t'Sentence_Terminal',\n\t'Soft_Dotted',\n\t'Terminal_Punctuation',\n\t'Unified_Ideograph',\n\t'Uppercase',\n\t'Variation_Selector',\n\t'White_Space',\n\t'XID_Continue',\n\t'XID_Start'\n]);\n","// Generated using `npm run build`. Do not edit!\nmodule.exports = new Map([\n\t['scx', 'Script_Extensions'],\n\t['sc', 'Script'],\n\t['gc', 'General_Category'],\n\t['AHex', 'ASCII_Hex_Digit'],\n\t['Alpha', 'Alphabetic'],\n\t['Bidi_C', 'Bidi_Control'],\n\t['Bidi_M', 'Bidi_Mirrored'],\n\t['Cased', 'Cased'],\n\t['CI', 'Case_Ignorable'],\n\t['CWCF', 'Changes_When_Casefolded'],\n\t['CWCM', 'Changes_When_Casemapped'],\n\t['CWKCF', 'Changes_When_NFKC_Casefolded'],\n\t['CWL', 'Changes_When_Lowercased'],\n\t['CWT', 'Changes_When_Titlecased'],\n\t['CWU', 'Changes_When_Uppercased'],\n\t['Dash', 'Dash'],\n\t['Dep', 'Deprecated'],\n\t['DI', 'Default_Ignorable_Code_Point'],\n\t['Dia', 'Diacritic'],\n\t['Ext', 'Extender'],\n\t['Gr_Base', 'Grapheme_Base'],\n\t['Gr_Ext', 'Grapheme_Extend'],\n\t['Hex', 'Hex_Digit'],\n\t['IDC', 'ID_Continue'],\n\t['Ideo', 'Ideographic'],\n\t['IDS', 'ID_Start'],\n\t['IDSB', 'IDS_Binary_Operator'],\n\t['IDST', 'IDS_Trinary_Operator'],\n\t['Join_C', 'Join_Control'],\n\t['LOE', 'Logical_Order_Exception'],\n\t['Lower', 'Lowercase'],\n\t['Math', 'Math'],\n\t['NChar', 'Noncharacter_Code_Point'],\n\t['Pat_Syn', 'Pattern_Syntax'],\n\t['Pat_WS', 'Pattern_White_Space'],\n\t['QMark', 'Quotation_Mark'],\n\t['Radical', 'Radical'],\n\t['RI', 'Regional_Indicator'],\n\t['SD', 'Soft_Dotted'],\n\t['STerm', 'Sentence_Terminal'],\n\t['Term', 'Terminal_Punctuation'],\n\t['UIdeo', 'Unified_Ideograph'],\n\t['Upper', 'Uppercase'],\n\t['VS', 'Variation_Selector'],\n\t['WSpace', 'White_Space'],\n\t['space', 'White_Space'],\n\t['XIDC', 'XID_Continue'],\n\t['XIDS', 'XID_Start']\n]);\n","'use strict';\n\nconst canonicalProperties = require('unicode-canonical-property-names-ecmascript');\nconst propertyAliases = require('unicode-property-aliases-ecmascript');\n\nconst matchProperty = function(property) {\n\tif (canonicalProperties.has(property)) {\n\t\treturn property;\n\t}\n\tif (propertyAliases.has(property)) {\n\t\treturn propertyAliases.get(property);\n\t}\n\tthrow new Error(`Unknown property: ${ property }`);\n};\n\nmodule.exports = matchProperty;\n","module.exports = new Map([\n\t['General_Category', new Map([\n\t\t['C', 'Other'],\n\t\t['Cc', 'Control'],\n\t\t['cntrl', 'Control'],\n\t\t['Cf', 'Format'],\n\t\t['Cn', 'Unassigned'],\n\t\t['Co', 'Private_Use'],\n\t\t['Cs', 'Surrogate'],\n\t\t['L', 'Letter'],\n\t\t['LC', 'Cased_Letter'],\n\t\t['Ll', 'Lowercase_Letter'],\n\t\t['Lm', 'Modifier_Letter'],\n\t\t['Lo', 'Other_Letter'],\n\t\t['Lt', 'Titlecase_Letter'],\n\t\t['Lu', 'Uppercase_Letter'],\n\t\t['M', 'Mark'],\n\t\t['Combining_Mark', 'Mark'],\n\t\t['Mc', 'Spacing_Mark'],\n\t\t['Me', 'Enclosing_Mark'],\n\t\t['Mn', 'Nonspacing_Mark'],\n\t\t['N', 'Number'],\n\t\t['Nd', 'Decimal_Number'],\n\t\t['digit', 'Decimal_Number'],\n\t\t['Nl', 'Letter_Number'],\n\t\t['No', 'Other_Number'],\n\t\t['P', 'Punctuation'],\n\t\t['punct', 'Punctuation'],\n\t\t['Pc', 'Connector_Punctuation'],\n\t\t['Pd', 'Dash_Punctuation'],\n\t\t['Pe', 'Close_Punctuation'],\n\t\t['Pf', 'Final_Punctuation'],\n\t\t['Pi', 'Initial_Punctuation'],\n\t\t['Po', 'Other_Punctuation'],\n\t\t['Ps', 'Open_Punctuation'],\n\t\t['S', 'Symbol'],\n\t\t['Sc', 'Currency_Symbol'],\n\t\t['Sk', 'Modifier_Symbol'],\n\t\t['Sm', 'Math_Symbol'],\n\t\t['So', 'Other_Symbol'],\n\t\t['Z', 'Separator'],\n\t\t['Zl', 'Line_Separator'],\n\t\t['Zp', 'Paragraph_Separator'],\n\t\t['Zs', 'Space_Separator'],\n\t\t['Other', 'Other'],\n\t\t['Control', 'Control'],\n\t\t['Format', 'Format'],\n\t\t['Unassigned', 'Unassigned'],\n\t\t['Private_Use', 'Private_Use'],\n\t\t['Surrogate', 'Surrogate'],\n\t\t['Letter', 'Letter'],\n\t\t['Cased_Letter', 'Cased_Letter'],\n\t\t['Lowercase_Letter', 'Lowercase_Letter'],\n\t\t['Modifier_Letter', 'Modifier_Letter'],\n\t\t['Other_Letter', 'Other_Letter'],\n\t\t['Titlecase_Letter', 'Titlecase_Letter'],\n\t\t['Uppercase_Letter', 'Uppercase_Letter'],\n\t\t['Mark', 'Mark'],\n\t\t['Spacing_Mark', 'Spacing_Mark'],\n\t\t['Enclosing_Mark', 'Enclosing_Mark'],\n\t\t['Nonspacing_Mark', 'Nonspacing_Mark'],\n\t\t['Number', 'Number'],\n\t\t['Decimal_Number', 'Decimal_Number'],\n\t\t['Letter_Number', 'Letter_Number'],\n\t\t['Other_Number', 'Other_Number'],\n\t\t['Punctuation', 'Punctuation'],\n\t\t['Connector_Punctuation', 'Connector_Punctuation'],\n\t\t['Dash_Punctuation', 'Dash_Punctuation'],\n\t\t['Close_Punctuation', 'Close_Punctuation'],\n\t\t['Final_Punctuation', 'Final_Punctuation'],\n\t\t['Initial_Punctuation', 'Initial_Punctuation'],\n\t\t['Other_Punctuation', 'Other_Punctuation'],\n\t\t['Open_Punctuation', 'Open_Punctuation'],\n\t\t['Symbol', 'Symbol'],\n\t\t['Currency_Symbol', 'Currency_Symbol'],\n\t\t['Modifier_Symbol', 'Modifier_Symbol'],\n\t\t['Math_Symbol', 'Math_Symbol'],\n\t\t['Other_Symbol', 'Other_Symbol'],\n\t\t['Separator', 'Separator'],\n\t\t['Line_Separator', 'Line_Separator'],\n\t\t['Paragraph_Separator', 'Paragraph_Separator'],\n\t\t['Space_Separator', 'Space_Separator']\n\t])],\n\t['Script', new Map([\n\t\t['Adlm', 'Adlam'],\n\t\t['Aghb', 'Caucasian_Albanian'],\n\t\t['Ahom', 'Ahom'],\n\t\t['Arab', 'Arabic'],\n\t\t['Armi', 'Imperial_Aramaic'],\n\t\t['Armn', 'Armenian'],\n\t\t['Avst', 'Avestan'],\n\t\t['Bali', 'Balinese'],\n\t\t['Bamu', 'Bamum'],\n\t\t['Bass', 'Bassa_Vah'],\n\t\t['Batk', 'Batak'],\n\t\t['Beng', 'Bengali'],\n\t\t['Bhks', 'Bhaiksuki'],\n\t\t['Bopo', 'Bopomofo'],\n\t\t['Brah', 'Brahmi'],\n\t\t['Brai', 'Braille'],\n\t\t['Bugi', 'Buginese'],\n\t\t['Buhd', 'Buhid'],\n\t\t['Cakm', 'Chakma'],\n\t\t['Cans', 'Canadian_Aboriginal'],\n\t\t['Cari', 'Carian'],\n\t\t['Cham', 'Cham'],\n\t\t['Cher', 'Cherokee'],\n\t\t['Copt', 'Coptic'],\n\t\t['Qaac', 'Coptic'],\n\t\t['Cprt', 'Cypriot'],\n\t\t['Cyrl', 'Cyrillic'],\n\t\t['Deva', 'Devanagari'],\n\t\t['Dsrt', 'Deseret'],\n\t\t['Dupl', 'Duployan'],\n\t\t['Egyp', 'Egyptian_Hieroglyphs'],\n\t\t['Elba', 'Elbasan'],\n\t\t['Ethi', 'Ethiopic'],\n\t\t['Geor', 'Georgian'],\n\t\t['Glag', 'Glagolitic'],\n\t\t['Gonm', 'Masaram_Gondi'],\n\t\t['Goth', 'Gothic'],\n\t\t['Gran', 'Grantha'],\n\t\t['Grek', 'Greek'],\n\t\t['Gujr', 'Gujarati'],\n\t\t['Guru', 'Gurmukhi'],\n\t\t['Hang', 'Hangul'],\n\t\t['Hani', 'Han'],\n\t\t['Hano', 'Hanunoo'],\n\t\t['Hatr', 'Hatran'],\n\t\t['Hebr', 'Hebrew'],\n\t\t['Hira', 'Hiragana'],\n\t\t['Hluw', 'Anatolian_Hieroglyphs'],\n\t\t['Hmng', 'Pahawh_Hmong'],\n\t\t['Hrkt', 'Katakana_Or_Hiragana'],\n\t\t['Hung', 'Old_Hungarian'],\n\t\t['Ital', 'Old_Italic'],\n\t\t['Java', 'Javanese'],\n\t\t['Kali', 'Kayah_Li'],\n\t\t['Kana', 'Katakana'],\n\t\t['Khar', 'Kharoshthi'],\n\t\t['Khmr', 'Khmer'],\n\t\t['Khoj', 'Khojki'],\n\t\t['Knda', 'Kannada'],\n\t\t['Kthi', 'Kaithi'],\n\t\t['Lana', 'Tai_Tham'],\n\t\t['Laoo', 'Lao'],\n\t\t['Latn', 'Latin'],\n\t\t['Lepc', 'Lepcha'],\n\t\t['Limb', 'Limbu'],\n\t\t['Lina', 'Linear_A'],\n\t\t['Linb', 'Linear_B'],\n\t\t['Lisu', 'Lisu'],\n\t\t['Lyci', 'Lycian'],\n\t\t['Lydi', 'Lydian'],\n\t\t['Mahj', 'Mahajani'],\n\t\t['Mand', 'Mandaic'],\n\t\t['Mani', 'Manichaean'],\n\t\t['Marc', 'Marchen'],\n\t\t['Mend', 'Mende_Kikakui'],\n\t\t['Merc', 'Meroitic_Cursive'],\n\t\t['Mero', 'Meroitic_Hieroglyphs'],\n\t\t['Mlym', 'Malayalam'],\n\t\t['Modi', 'Modi'],\n\t\t['Mong', 'Mongolian'],\n\t\t['Mroo', 'Mro'],\n\t\t['Mtei', 'Meetei_Mayek'],\n\t\t['Mult', 'Multani'],\n\t\t['Mymr', 'Myanmar'],\n\t\t['Narb', 'Old_North_Arabian'],\n\t\t['Nbat', 'Nabataean'],\n\t\t['Newa', 'Newa'],\n\t\t['Nkoo', 'Nko'],\n\t\t['Nshu', 'Nushu'],\n\t\t['Ogam', 'Ogham'],\n\t\t['Olck', 'Ol_Chiki'],\n\t\t['Orkh', 'Old_Turkic'],\n\t\t['Orya', 'Oriya'],\n\t\t['Osge', 'Osage'],\n\t\t['Osma', 'Osmanya'],\n\t\t['Palm', 'Palmyrene'],\n\t\t['Pauc', 'Pau_Cin_Hau'],\n\t\t['Perm', 'Old_Permic'],\n\t\t['Phag', 'Phags_Pa'],\n\t\t['Phli', 'Inscriptional_Pahlavi'],\n\t\t['Phlp', 'Psalter_Pahlavi'],\n\t\t['Phnx', 'Phoenician'],\n\t\t['Plrd', 'Miao'],\n\t\t['Prti', 'Inscriptional_Parthian'],\n\t\t['Rjng', 'Rejang'],\n\t\t['Runr', 'Runic'],\n\t\t['Samr', 'Samaritan'],\n\t\t['Sarb', 'Old_South_Arabian'],\n\t\t['Saur', 'Saurashtra'],\n\t\t['Sgnw', 'SignWriting'],\n\t\t['Shaw', 'Shavian'],\n\t\t['Shrd', 'Sharada'],\n\t\t['Sidd', 'Siddham'],\n\t\t['Sind', 'Khudawadi'],\n\t\t['Sinh', 'Sinhala'],\n\t\t['Sora', 'Sora_Sompeng'],\n\t\t['Soyo', 'Soyombo'],\n\t\t['Sund', 'Sundanese'],\n\t\t['Sylo', 'Syloti_Nagri'],\n\t\t['Syrc', 'Syriac'],\n\t\t['Tagb', 'Tagbanwa'],\n\t\t['Takr', 'Takri'],\n\t\t['Tale', 'Tai_Le'],\n\t\t['Talu', 'New_Tai_Lue'],\n\t\t['Taml', 'Tamil'],\n\t\t['Tang', 'Tangut'],\n\t\t['Tavt', 'Tai_Viet'],\n\t\t['Telu', 'Telugu'],\n\t\t['Tfng', 'Tifinagh'],\n\t\t['Tglg', 'Tagalog'],\n\t\t['Thaa', 'Thaana'],\n\t\t['Thai', 'Thai'],\n\t\t['Tibt', 'Tibetan'],\n\t\t['Tirh', 'Tirhuta'],\n\t\t['Ugar', 'Ugaritic'],\n\t\t['Vaii', 'Vai'],\n\t\t['Wara', 'Warang_Citi'],\n\t\t['Xpeo', 'Old_Persian'],\n\t\t['Xsux', 'Cuneiform'],\n\t\t['Yiii', 'Yi'],\n\t\t['Zanb', 'Zanabazar_Square'],\n\t\t['Zinh', 'Inherited'],\n\t\t['Qaai', 'Inherited'],\n\t\t['Zyyy', 'Common'],\n\t\t['Zzzz', 'Unknown'],\n\t\t['Adlam', 'Adlam'],\n\t\t['Caucasian_Albanian', 'Caucasian_Albanian'],\n\t\t['Arabic', 'Arabic'],\n\t\t['Imperial_Aramaic', 'Imperial_Aramaic'],\n\t\t['Armenian', 'Armenian'],\n\t\t['Avestan', 'Avestan'],\n\t\t['Balinese', 'Balinese'],\n\t\t['Bamum', 'Bamum'],\n\t\t['Bassa_Vah', 'Bassa_Vah'],\n\t\t['Batak', 'Batak'],\n\t\t['Bengali', 'Bengali'],\n\t\t['Bhaiksuki', 'Bhaiksuki'],\n\t\t['Bopomofo', 'Bopomofo'],\n\t\t['Brahmi', 'Brahmi'],\n\t\t['Braille', 'Braille'],\n\t\t['Buginese', 'Buginese'],\n\t\t['Buhid', 'Buhid'],\n\t\t['Chakma', 'Chakma'],\n\t\t['Canadian_Aboriginal', 'Canadian_Aboriginal'],\n\t\t['Carian', 'Carian'],\n\t\t['Cherokee', 'Cherokee'],\n\t\t['Coptic', 'Coptic'],\n\t\t['Cypriot', 'Cypriot'],\n\t\t['Cyrillic', 'Cyrillic'],\n\t\t['Devanagari', 'Devanagari'],\n\t\t['Deseret', 'Deseret'],\n\t\t['Duployan', 'Duployan'],\n\t\t['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t['Elbasan', 'Elbasan'],\n\t\t['Ethiopic', 'Ethiopic'],\n\t\t['Georgian', 'Georgian'],\n\t\t['Glagolitic', 'Glagolitic'],\n\t\t['Masaram_Gondi', 'Masaram_Gondi'],\n\t\t['Gothic', 'Gothic'],\n\t\t['Grantha', 'Grantha'],\n\t\t['Greek', 'Greek'],\n\t\t['Gujarati', 'Gujarati'],\n\t\t['Gurmukhi', 'Gurmukhi'],\n\t\t['Hangul', 'Hangul'],\n\t\t['Han', 'Han'],\n\t\t['Hanunoo', 'Hanunoo'],\n\t\t['Hatran', 'Hatran'],\n\t\t['Hebrew', 'Hebrew'],\n\t\t['Hiragana', 'Hiragana'],\n\t\t['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t['Pahawh_Hmong', 'Pahawh_Hmong'],\n\t\t['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'],\n\t\t['Old_Hungarian', 'Old_Hungarian'],\n\t\t['Old_Italic', 'Old_Italic'],\n\t\t['Javanese', 'Javanese'],\n\t\t['Kayah_Li', 'Kayah_Li'],\n\t\t['Katakana', 'Katakana'],\n\t\t['Kharoshthi', 'Kharoshthi'],\n\t\t['Khmer', 'Khmer'],\n\t\t['Khojki', 'Khojki'],\n\t\t['Kannada', 'Kannada'],\n\t\t['Kaithi', 'Kaithi'],\n\t\t['Tai_Tham', 'Tai_Tham'],\n\t\t['Lao', 'Lao'],\n\t\t['Latin', 'Latin'],\n\t\t['Lepcha', 'Lepcha'],\n\t\t['Limbu', 'Limbu'],\n\t\t['Linear_A', 'Linear_A'],\n\t\t['Linear_B', 'Linear_B'],\n\t\t['Lycian', 'Lycian'],\n\t\t['Lydian', 'Lydian'],\n\t\t['Mahajani', 'Mahajani'],\n\t\t['Mandaic', 'Mandaic'],\n\t\t['Manichaean', 'Manichaean'],\n\t\t['Marchen', 'Marchen'],\n\t\t['Mende_Kikakui', 'Mende_Kikakui'],\n\t\t['Meroitic_Cursive', 'Meroitic_Cursive'],\n\t\t['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t['Malayalam', 'Malayalam'],\n\t\t['Mongolian', 'Mongolian'],\n\t\t['Mro', 'Mro'],\n\t\t['Meetei_Mayek', 'Meetei_Mayek'],\n\t\t['Multani', 'Multani'],\n\t\t['Myanmar', 'Myanmar'],\n\t\t['Old_North_Arabian', 'Old_North_Arabian'],\n\t\t['Nabataean', 'Nabataean'],\n\t\t['Nko', 'Nko'],\n\t\t['Nushu', 'Nushu'],\n\t\t['Ogham', 'Ogham'],\n\t\t['Ol_Chiki', 'Ol_Chiki'],\n\t\t['Old_Turkic', 'Old_Turkic'],\n\t\t['Oriya', 'Oriya'],\n\t\t['Osage', 'Osage'],\n\t\t['Osmanya', 'Osmanya'],\n\t\t['Palmyrene', 'Palmyrene'],\n\t\t['Pau_Cin_Hau', 'Pau_Cin_Hau'],\n\t\t['Old_Permic', 'Old_Permic'],\n\t\t['Phags_Pa', 'Phags_Pa'],\n\t\t['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'],\n\t\t['Psalter_Pahlavi', 'Psalter_Pahlavi'],\n\t\t['Phoenician', 'Phoenician'],\n\t\t['Miao', 'Miao'],\n\t\t['Inscriptional_Parthian', 'Inscriptional_Parthian'],\n\t\t['Rejang', 'Rejang'],\n\t\t['Runic', 'Runic'],\n\t\t['Samaritan', 'Samaritan'],\n\t\t['Old_South_Arabian', 'Old_South_Arabian'],\n\t\t['Saurashtra', 'Saurashtra'],\n\t\t['SignWriting', 'SignWriting'],\n\t\t['Shavian', 'Shavian'],\n\t\t['Sharada', 'Sharada'],\n\t\t['Siddham', 'Siddham'],\n\t\t['Khudawadi', 'Khudawadi'],\n\t\t['Sinhala', 'Sinhala'],\n\t\t['Sora_Sompeng', 'Sora_Sompeng'],\n\t\t['Soyombo', 'Soyombo'],\n\t\t['Sundanese', 'Sundanese'],\n\t\t['Syloti_Nagri', 'Syloti_Nagri'],\n\t\t['Syriac', 'Syriac'],\n\t\t['Tagbanwa', 'Tagbanwa'],\n\t\t['Takri', 'Takri'],\n\t\t['Tai_Le', 'Tai_Le'],\n\t\t['New_Tai_Lue', 'New_Tai_Lue'],\n\t\t['Tamil', 'Tamil'],\n\t\t['Tangut', 'Tangut'],\n\t\t['Tai_Viet', 'Tai_Viet'],\n\t\t['Telugu', 'Telugu'],\n\t\t['Tifinagh', 'Tifinagh'],\n\t\t['Tagalog', 'Tagalog'],\n\t\t['Thaana', 'Thaana'],\n\t\t['Tibetan', 'Tibetan'],\n\t\t['Tirhuta', 'Tirhuta'],\n\t\t['Ugaritic', 'Ugaritic'],\n\t\t['Vai', 'Vai'],\n\t\t['Warang_Citi', 'Warang_Citi'],\n\t\t['Old_Persian', 'Old_Persian'],\n\t\t['Cuneiform', 'Cuneiform'],\n\t\t['Yi', 'Yi'],\n\t\t['Zanabazar_Square', 'Zanabazar_Square'],\n\t\t['Inherited', 'Inherited'],\n\t\t['Common', 'Common'],\n\t\t['Unknown', 'Unknown']\n\t])],\n\t['Script_Extensions', new Map([\n\t\t['Adlm', 'Adlam'],\n\t\t['Aghb', 'Caucasian_Albanian'],\n\t\t['Ahom', 'Ahom'],\n\t\t['Arab', 'Arabic'],\n\t\t['Armi', 'Imperial_Aramaic'],\n\t\t['Armn', 'Armenian'],\n\t\t['Avst', 'Avestan'],\n\t\t['Bali', 'Balinese'],\n\t\t['Bamu', 'Bamum'],\n\t\t['Bass', 'Bassa_Vah'],\n\t\t['Batk', 'Batak'],\n\t\t['Beng', 'Bengali'],\n\t\t['Bhks', 'Bhaiksuki'],\n\t\t['Bopo', 'Bopomofo'],\n\t\t['Brah', 'Brahmi'],\n\t\t['Brai', 'Braille'],\n\t\t['Bugi', 'Buginese'],\n\t\t['Buhd', 'Buhid'],\n\t\t['Cakm', 'Chakma'],\n\t\t['Cans', 'Canadian_Aboriginal'],\n\t\t['Cari', 'Carian'],\n\t\t['Cham', 'Cham'],\n\t\t['Cher', 'Cherokee'],\n\t\t['Copt', 'Coptic'],\n\t\t['Qaac', 'Coptic'],\n\t\t['Cprt', 'Cypriot'],\n\t\t['Cyrl', 'Cyrillic'],\n\t\t['Deva', 'Devanagari'],\n\t\t['Dsrt', 'Deseret'],\n\t\t['Dupl', 'Duployan'],\n\t\t['Egyp', 'Egyptian_Hieroglyphs'],\n\t\t['Elba', 'Elbasan'],\n\t\t['Ethi', 'Ethiopic'],\n\t\t['Geor', 'Georgian'],\n\t\t['Glag', 'Glagolitic'],\n\t\t['Gonm', 'Masaram_Gondi'],\n\t\t['Goth', 'Gothic'],\n\t\t['Gran', 'Grantha'],\n\t\t['Grek', 'Greek'],\n\t\t['Gujr', 'Gujarati'],\n\t\t['Guru', 'Gurmukhi'],\n\t\t['Hang', 'Hangul'],\n\t\t['Hani', 'Han'],\n\t\t['Hano', 'Hanunoo'],\n\t\t['Hatr', 'Hatran'],\n\t\t['Hebr', 'Hebrew'],\n\t\t['Hira', 'Hiragana'],\n\t\t['Hluw', 'Anatolian_Hieroglyphs'],\n\t\t['Hmng', 'Pahawh_Hmong'],\n\t\t['Hrkt', 'Katakana_Or_Hiragana'],\n\t\t['Hung', 'Old_Hungarian'],\n\t\t['Ital', 'Old_Italic'],\n\t\t['Java', 'Javanese'],\n\t\t['Kali', 'Kayah_Li'],\n\t\t['Kana', 'Katakana'],\n\t\t['Khar', 'Kharoshthi'],\n\t\t['Khmr', 'Khmer'],\n\t\t['Khoj', 'Khojki'],\n\t\t['Knda', 'Kannada'],\n\t\t['Kthi', 'Kaithi'],\n\t\t['Lana', 'Tai_Tham'],\n\t\t['Laoo', 'Lao'],\n\t\t['Latn', 'Latin'],\n\t\t['Lepc', 'Lepcha'],\n\t\t['Limb', 'Limbu'],\n\t\t['Lina', 'Linear_A'],\n\t\t['Linb', 'Linear_B'],\n\t\t['Lisu', 'Lisu'],\n\t\t['Lyci', 'Lycian'],\n\t\t['Lydi', 'Lydian'],\n\t\t['Mahj', 'Mahajani'],\n\t\t['Mand', 'Mandaic'],\n\t\t['Mani', 'Manichaean'],\n\t\t['Marc', 'Marchen'],\n\t\t['Mend', 'Mende_Kikakui'],\n\t\t['Merc', 'Meroitic_Cursive'],\n\t\t['Mero', 'Meroitic_Hieroglyphs'],\n\t\t['Mlym', 'Malayalam'],\n\t\t['Modi', 'Modi'],\n\t\t['Mong', 'Mongolian'],\n\t\t['Mroo', 'Mro'],\n\t\t['Mtei', 'Meetei_Mayek'],\n\t\t['Mult', 'Multani'],\n\t\t['Mymr', 'Myanmar'],\n\t\t['Narb', 'Old_North_Arabian'],\n\t\t['Nbat', 'Nabataean'],\n\t\t['Newa', 'Newa'],\n\t\t['Nkoo', 'Nko'],\n\t\t['Nshu', 'Nushu'],\n\t\t['Ogam', 'Ogham'],\n\t\t['Olck', 'Ol_Chiki'],\n\t\t['Orkh', 'Old_Turkic'],\n\t\t['Orya', 'Oriya'],\n\t\t['Osge', 'Osage'],\n\t\t['Osma', 'Osmanya'],\n\t\t['Palm', 'Palmyrene'],\n\t\t['Pauc', 'Pau_Cin_Hau'],\n\t\t['Perm', 'Old_Permic'],\n\t\t['Phag', 'Phags_Pa'],\n\t\t['Phli', 'Inscriptional_Pahlavi'],\n\t\t['Phlp', 'Psalter_Pahlavi'],\n\t\t['Phnx', 'Phoenician'],\n\t\t['Plrd', 'Miao'],\n\t\t['Prti', 'Inscriptional_Parthian'],\n\t\t['Rjng', 'Rejang'],\n\t\t['Runr', 'Runic'],\n\t\t['Samr', 'Samaritan'],\n\t\t['Sarb', 'Old_South_Arabian'],\n\t\t['Saur', 'Saurashtra'],\n\t\t['Sgnw', 'SignWriting'],\n\t\t['Shaw', 'Shavian'],\n\t\t['Shrd', 'Sharada'],\n\t\t['Sidd', 'Siddham'],\n\t\t['Sind', 'Khudawadi'],\n\t\t['Sinh', 'Sinhala'],\n\t\t['Sora', 'Sora_Sompeng'],\n\t\t['Soyo', 'Soyombo'],\n\t\t['Sund', 'Sundanese'],\n\t\t['Sylo', 'Syloti_Nagri'],\n\t\t['Syrc', 'Syriac'],\n\t\t['Tagb', 'Tagbanwa'],\n\t\t['Takr', 'Takri'],\n\t\t['Tale', 'Tai_Le'],\n\t\t['Talu', 'New_Tai_Lue'],\n\t\t['Taml', 'Tamil'],\n\t\t['Tang', 'Tangut'],\n\t\t['Tavt', 'Tai_Viet'],\n\t\t['Telu', 'Telugu'],\n\t\t['Tfng', 'Tifinagh'],\n\t\t['Tglg', 'Tagalog'],\n\t\t['Thaa', 'Thaana'],\n\t\t['Thai', 'Thai'],\n\t\t['Tibt', 'Tibetan'],\n\t\t['Tirh', 'Tirhuta'],\n\t\t['Ugar', 'Ugaritic'],\n\t\t['Vaii', 'Vai'],\n\t\t['Wara', 'Warang_Citi'],\n\t\t['Xpeo', 'Old_Persian'],\n\t\t['Xsux', 'Cuneiform'],\n\t\t['Yiii', 'Yi'],\n\t\t['Zanb', 'Zanabazar_Square'],\n\t\t['Zinh', 'Inherited'],\n\t\t['Qaai', 'Inherited'],\n\t\t['Zyyy', 'Common'],\n\t\t['Zzzz', 'Unknown'],\n\t\t['Adlam', 'Adlam'],\n\t\t['Caucasian_Albanian', 'Caucasian_Albanian'],\n\t\t['Arabic', 'Arabic'],\n\t\t['Imperial_Aramaic', 'Imperial_Aramaic'],\n\t\t['Armenian', 'Armenian'],\n\t\t['Avestan', 'Avestan'],\n\t\t['Balinese', 'Balinese'],\n\t\t['Bamum', 'Bamum'],\n\t\t['Bassa_Vah', 'Bassa_Vah'],\n\t\t['Batak', 'Batak'],\n\t\t['Bengali', 'Bengali'],\n\t\t['Bhaiksuki', 'Bhaiksuki'],\n\t\t['Bopomofo', 'Bopomofo'],\n\t\t['Brahmi', 'Brahmi'],\n\t\t['Braille', 'Braille'],\n\t\t['Buginese', 'Buginese'],\n\t\t['Buhid', 'Buhid'],\n\t\t['Chakma', 'Chakma'],\n\t\t['Canadian_Aboriginal', 'Canadian_Aboriginal'],\n\t\t['Carian', 'Carian'],\n\t\t['Cherokee', 'Cherokee'],\n\t\t['Coptic', 'Coptic'],\n\t\t['Cypriot', 'Cypriot'],\n\t\t['Cyrillic', 'Cyrillic'],\n\t\t['Devanagari', 'Devanagari'],\n\t\t['Deseret', 'Deseret'],\n\t\t['Duployan', 'Duployan'],\n\t\t['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t['Elbasan', 'Elbasan'],\n\t\t['Ethiopic', 'Ethiopic'],\n\t\t['Georgian', 'Georgian'],\n\t\t['Glagolitic', 'Glagolitic'],\n\t\t['Masaram_Gondi', 'Masaram_Gondi'],\n\t\t['Gothic', 'Gothic'],\n\t\t['Grantha', 'Grantha'],\n\t\t['Greek', 'Greek'],\n\t\t['Gujarati', 'Gujarati'],\n\t\t['Gurmukhi', 'Gurmukhi'],\n\t\t['Hangul', 'Hangul'],\n\t\t['Han', 'Han'],\n\t\t['Hanunoo', 'Hanunoo'],\n\t\t['Hatran', 'Hatran'],\n\t\t['Hebrew', 'Hebrew'],\n\t\t['Hiragana', 'Hiragana'],\n\t\t['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t['Pahawh_Hmong', 'Pahawh_Hmong'],\n\t\t['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'],\n\t\t['Old_Hungarian', 'Old_Hungarian'],\n\t\t['Old_Italic', 'Old_Italic'],\n\t\t['Javanese', 'Javanese'],\n\t\t['Kayah_Li', 'Kayah_Li'],\n\t\t['Katakana', 'Katakana'],\n\t\t['Kharoshthi', 'Kharoshthi'],\n\t\t['Khmer', 'Khmer'],\n\t\t['Khojki', 'Khojki'],\n\t\t['Kannada', 'Kannada'],\n\t\t['Kaithi', 'Kaithi'],\n\t\t['Tai_Tham', 'Tai_Tham'],\n\t\t['Lao', 'Lao'],\n\t\t['Latin', 'Latin'],\n\t\t['Lepcha', 'Lepcha'],\n\t\t['Limbu', 'Limbu'],\n\t\t['Linear_A', 'Linear_A'],\n\t\t['Linear_B', 'Linear_B'],\n\t\t['Lycian', 'Lycian'],\n\t\t['Lydian', 'Lydian'],\n\t\t['Mahajani', 'Mahajani'],\n\t\t['Mandaic', 'Mandaic'],\n\t\t['Manichaean', 'Manichaean'],\n\t\t['Marchen', 'Marchen'],\n\t\t['Mende_Kikakui', 'Mende_Kikakui'],\n\t\t['Meroitic_Cursive', 'Meroitic_Cursive'],\n\t\t['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t['Malayalam', 'Malayalam'],\n\t\t['Mongolian', 'Mongolian'],\n\t\t['Mro', 'Mro'],\n\t\t['Meetei_Mayek', 'Meetei_Mayek'],\n\t\t['Multani', 'Multani'],\n\t\t['Myanmar', 'Myanmar'],\n\t\t['Old_North_Arabian', 'Old_North_Arabian'],\n\t\t['Nabataean', 'Nabataean'],\n\t\t['Nko', 'Nko'],\n\t\t['Nushu', 'Nushu'],\n\t\t['Ogham', 'Ogham'],\n\t\t['Ol_Chiki', 'Ol_Chiki'],\n\t\t['Old_Turkic', 'Old_Turkic'],\n\t\t['Oriya', 'Oriya'],\n\t\t['Osage', 'Osage'],\n\t\t['Osmanya', 'Osmanya'],\n\t\t['Palmyrene', 'Palmyrene'],\n\t\t['Pau_Cin_Hau', 'Pau_Cin_Hau'],\n\t\t['Old_Permic', 'Old_Permic'],\n\t\t['Phags_Pa', 'Phags_Pa'],\n\t\t['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'],\n\t\t['Psalter_Pahlavi', 'Psalter_Pahlavi'],\n\t\t['Phoenician', 'Phoenician'],\n\t\t['Miao', 'Miao'],\n\t\t['Inscriptional_Parthian', 'Inscriptional_Parthian'],\n\t\t['Rejang', 'Rejang'],\n\t\t['Runic', 'Runic'],\n\t\t['Samaritan', 'Samaritan'],\n\t\t['Old_South_Arabian', 'Old_South_Arabian'],\n\t\t['Saurashtra', 'Saurashtra'],\n\t\t['SignWriting', 'SignWriting'],\n\t\t['Shavian', 'Shavian'],\n\t\t['Sharada', 'Sharada'],\n\t\t['Siddham', 'Siddham'],\n\t\t['Khudawadi', 'Khudawadi'],\n\t\t['Sinhala', 'Sinhala'],\n\t\t['Sora_Sompeng', 'Sora_Sompeng'],\n\t\t['Soyombo', 'Soyombo'],\n\t\t['Sundanese', 'Sundanese'],\n\t\t['Syloti_Nagri', 'Syloti_Nagri'],\n\t\t['Syriac', 'Syriac'],\n\t\t['Tagbanwa', 'Tagbanwa'],\n\t\t['Takri', 'Takri'],\n\t\t['Tai_Le', 'Tai_Le'],\n\t\t['New_Tai_Lue', 'New_Tai_Lue'],\n\t\t['Tamil', 'Tamil'],\n\t\t['Tangut', 'Tangut'],\n\t\t['Tai_Viet', 'Tai_Viet'],\n\t\t['Telugu', 'Telugu'],\n\t\t['Tifinagh', 'Tifinagh'],\n\t\t['Tagalog', 'Tagalog'],\n\t\t['Thaana', 'Thaana'],\n\t\t['Tibetan', 'Tibetan'],\n\t\t['Tirhuta', 'Tirhuta'],\n\t\t['Ugaritic', 'Ugaritic'],\n\t\t['Vai', 'Vai'],\n\t\t['Warang_Citi', 'Warang_Citi'],\n\t\t['Old_Persian', 'Old_Persian'],\n\t\t['Cuneiform', 'Cuneiform'],\n\t\t['Yi', 'Yi'],\n\t\t['Zanabazar_Square', 'Zanabazar_Square'],\n\t\t['Inherited', 'Inherited'],\n\t\t['Common', 'Common'],\n\t\t['Unknown', 'Unknown']\n\t])]\n]);\n","'use strict';\n\nconst propertyToValueAliases = require('./data/mappings.js');\n\nconst matchPropertyValue = function(property, value) {\n\tconst aliasToValue = propertyToValueAliases.get(property);\n\tif (!aliasToValue) {\n\t\tthrow new Error(`Unknown property \\`${ property }\\`.`);\n\t}\n\tconst canonicalValue = aliasToValue.get(value);\n\tif (canonicalValue) {\n\t\treturn canonicalValue;\n\t}\n\tthrow new Error(\n\t\t`Unknown value \\`${ value }\\` for property \\`${ property }\\`.`\n\t);\n};\n\nmodule.exports = matchPropertyValue;\n","module.exports = new Map([\n\t[0x4B, 0x212A],\n\t[0x53, 0x17F],\n\t[0x6B, 0x212A],\n\t[0x73, 0x17F],\n\t[0xB5, 0x39C],\n\t[0xC5, 0x212B],\n\t[0xDF, 0x1E9E],\n\t[0xE5, 0x212B],\n\t[0x17F, 0x53],\n\t[0x1C4, 0x1C5],\n\t[0x1C5, 0x1C4],\n\t[0x1C7, 0x1C8],\n\t[0x1C8, 0x1C7],\n\t[0x1CA, 0x1CB],\n\t[0x1CB, 0x1CA],\n\t[0x1F1, 0x1F2],\n\t[0x1F2, 0x1F1],\n\t[0x26A, 0xA7AE],\n\t[0x29D, 0xA7B2],\n\t[0x345, 0x1FBE],\n\t[0x392, 0x3D0],\n\t[0x395, 0x3F5],\n\t[0x398, 0x3F4],\n\t[0x399, 0x1FBE],\n\t[0x39A, 0x3F0],\n\t[0x39C, 0xB5],\n\t[0x3A0, 0x3D6],\n\t[0x3A1, 0x3F1],\n\t[0x3A3, 0x3C2],\n\t[0x3A6, 0x3D5],\n\t[0x3A9, 0x2126],\n\t[0x3B8, 0x3F4],\n\t[0x3C2, 0x3A3],\n\t[0x3C9, 0x2126],\n\t[0x3D0, 0x392],\n\t[0x3D1, 0x3F4],\n\t[0x3D5, 0x3A6],\n\t[0x3D6, 0x3A0],\n\t[0x3F0, 0x39A],\n\t[0x3F1, 0x3A1],\n\t[0x3F4, [\n\t\t0x398,\n\t\t0x3D1,\n\t\t0x3B8\n\t]],\n\t[0x3F5, 0x395],\n\t[0x412, 0x1C80],\n\t[0x414, 0x1C81],\n\t[0x41E, 0x1C82],\n\t[0x421, 0x1C83],\n\t[0x422, 0x1C85],\n\t[0x42A, 0x1C86],\n\t[0x432, 0x1C80],\n\t[0x434, 0x1C81],\n\t[0x43E, 0x1C82],\n\t[0x441, 0x1C83],\n\t[0x442, [\n\t\t0x1C84,\n\t\t0x1C85\n\t]],\n\t[0x44A, 0x1C86],\n\t[0x462, 0x1C87],\n\t[0x463, 0x1C87],\n\t[0x13A0, 0xAB70],\n\t[0x13A1, 0xAB71],\n\t[0x13A2, 0xAB72],\n\t[0x13A3, 0xAB73],\n\t[0x13A4, 0xAB74],\n\t[0x13A5, 0xAB75],\n\t[0x13A6, 0xAB76],\n\t[0x13A7, 0xAB77],\n\t[0x13A8, 0xAB78],\n\t[0x13A9, 0xAB79],\n\t[0x13AA, 0xAB7A],\n\t[0x13AB, 0xAB7B],\n\t[0x13AC, 0xAB7C],\n\t[0x13AD, 0xAB7D],\n\t[0x13AE, 0xAB7E],\n\t[0x13AF, 0xAB7F],\n\t[0x13B0, 0xAB80],\n\t[0x13B1, 0xAB81],\n\t[0x13B2, 0xAB82],\n\t[0x13B3, 0xAB83],\n\t[0x13B4, 0xAB84],\n\t[0x13B5, 0xAB85],\n\t[0x13B6, 0xAB86],\n\t[0x13B7, 0xAB87],\n\t[0x13B8, 0xAB88],\n\t[0x13B9, 0xAB89],\n\t[0x13BA, 0xAB8A],\n\t[0x13BB, 0xAB8B],\n\t[0x13BC, 0xAB8C],\n\t[0x13BD, 0xAB8D],\n\t[0x13BE, 0xAB8E],\n\t[0x13BF, 0xAB8F],\n\t[0x13C0, 0xAB90],\n\t[0x13C1, 0xAB91],\n\t[0x13C2, 0xAB92],\n\t[0x13C3, 0xAB93],\n\t[0x13C4, 0xAB94],\n\t[0x13C5, 0xAB95],\n\t[0x13C6, 0xAB96],\n\t[0x13C7, 0xAB97],\n\t[0x13C8, 0xAB98],\n\t[0x13C9, 0xAB99],\n\t[0x13CA, 0xAB9A],\n\t[0x13CB, 0xAB9B],\n\t[0x13CC, 0xAB9C],\n\t[0x13CD, 0xAB9D],\n\t[0x13CE, 0xAB9E],\n\t[0x13CF, 0xAB9F],\n\t[0x13D0, 0xABA0],\n\t[0x13D1, 0xABA1],\n\t[0x13D2, 0xABA2],\n\t[0x13D3, 0xABA3],\n\t[0x13D4, 0xABA4],\n\t[0x13D5, 0xABA5],\n\t[0x13D6, 0xABA6],\n\t[0x13D7, 0xABA7],\n\t[0x13D8, 0xABA8],\n\t[0x13D9, 0xABA9],\n\t[0x13DA, 0xABAA],\n\t[0x13DB, 0xABAB],\n\t[0x13DC, 0xABAC],\n\t[0x13DD, 0xABAD],\n\t[0x13DE, 0xABAE],\n\t[0x13DF, 0xABAF],\n\t[0x13E0, 0xABB0],\n\t[0x13E1, 0xABB1],\n\t[0x13E2, 0xABB2],\n\t[0x13E3, 0xABB3],\n\t[0x13E4, 0xABB4],\n\t[0x13E5, 0xABB5],\n\t[0x13E6, 0xABB6],\n\t[0x13E7, 0xABB7],\n\t[0x13E8, 0xABB8],\n\t[0x13E9, 0xABB9],\n\t[0x13EA, 0xABBA],\n\t[0x13EB, 0xABBB],\n\t[0x13EC, 0xABBC],\n\t[0x13ED, 0xABBD],\n\t[0x13EE, 0xABBE],\n\t[0x13EF, 0xABBF],\n\t[0x13F0, 0x13F8],\n\t[0x13F1, 0x13F9],\n\t[0x13F2, 0x13FA],\n\t[0x13F3, 0x13FB],\n\t[0x13F4, 0x13FC],\n\t[0x13F5, 0x13FD],\n\t[0x13F8, 0x13F0],\n\t[0x13F9, 0x13F1],\n\t[0x13FA, 0x13F2],\n\t[0x13FB, 0x13F3],\n\t[0x13FC, 0x13F4],\n\t[0x13FD, 0x13F5],\n\t[0x1C80, [\n\t\t0x412,\n\t\t0x432\n\t]],\n\t[0x1C81, [\n\t\t0x414,\n\t\t0x434\n\t]],\n\t[0x1C82, [\n\t\t0x41E,\n\t\t0x43E\n\t]],\n\t[0x1C83, [\n\t\t0x421,\n\t\t0x441\n\t]],\n\t[0x1C84, [\n\t\t0x1C85,\n\t\t0x442\n\t]],\n\t[0x1C85, [\n\t\t0x422,\n\t\t0x1C84,\n\t\t0x442\n\t]],\n\t[0x1C86, [\n\t\t0x42A,\n\t\t0x44A\n\t]],\n\t[0x1C87, [\n\t\t0x462,\n\t\t0x463\n\t]],\n\t[0x1C88, [\n\t\t0xA64A,\n\t\t0xA64B\n\t]],\n\t[0x1E60, 0x1E9B],\n\t[0x1E9B, 0x1E60],\n\t[0x1E9E, 0xDF],\n\t[0x1F80, 0x1F88],\n\t[0x1F81, 0x1F89],\n\t[0x1F82, 0x1F8A],\n\t[0x1F83, 0x1F8B],\n\t[0x1F84, 0x1F8C],\n\t[0x1F85, 0x1F8D],\n\t[0x1F86, 0x1F8E],\n\t[0x1F87, 0x1F8F],\n\t[0x1F88, 0x1F80],\n\t[0x1F89, 0x1F81],\n\t[0x1F8A, 0x1F82],\n\t[0x1F8B, 0x1F83],\n\t[0x1F8C, 0x1F84],\n\t[0x1F8D, 0x1F85],\n\t[0x1F8E, 0x1F86],\n\t[0x1F8F, 0x1F87],\n\t[0x1F90, 0x1F98],\n\t[0x1F91, 0x1F99],\n\t[0x1F92, 0x1F9A],\n\t[0x1F93, 0x1F9B],\n\t[0x1F94, 0x1F9C],\n\t[0x1F95, 0x1F9D],\n\t[0x1F96, 0x1F9E],\n\t[0x1F97, 0x1F9F],\n\t[0x1F98, 0x1F90],\n\t[0x1F99, 0x1F91],\n\t[0x1F9A, 0x1F92],\n\t[0x1F9B, 0x1F93],\n\t[0x1F9C, 0x1F94],\n\t[0x1F9D, 0x1F95],\n\t[0x1F9E, 0x1F96],\n\t[0x1F9F, 0x1F97],\n\t[0x1FA0, 0x1FA8],\n\t[0x1FA1, 0x1FA9],\n\t[0x1FA2, 0x1FAA],\n\t[0x1FA3, 0x1FAB],\n\t[0x1FA4, 0x1FAC],\n\t[0x1FA5, 0x1FAD],\n\t[0x1FA6, 0x1FAE],\n\t[0x1FA7, 0x1FAF],\n\t[0x1FA8, 0x1FA0],\n\t[0x1FA9, 0x1FA1],\n\t[0x1FAA, 0x1FA2],\n\t[0x1FAB, 0x1FA3],\n\t[0x1FAC, 0x1FA4],\n\t[0x1FAD, 0x1FA5],\n\t[0x1FAE, 0x1FA6],\n\t[0x1FAF, 0x1FA7],\n\t[0x1FB3, 0x1FBC],\n\t[0x1FBC, 0x1FB3],\n\t[0x1FBE, [\n\t\t0x345,\n\t\t0x399\n\t]],\n\t[0x1FC3, 0x1FCC],\n\t[0x1FCC, 0x1FC3],\n\t[0x1FF3, 0x1FFC],\n\t[0x1FFC, 0x1FF3],\n\t[0x2126, [\n\t\t0x3A9,\n\t\t0x3C9\n\t]],\n\t[0x212A, 0x4B],\n\t[0x212B, [\n\t\t0xC5,\n\t\t0xE5\n\t]],\n\t[0xA64A, 0x1C88],\n\t[0xA64B, 0x1C88],\n\t[0xA7AE, 0x26A],\n\t[0xA7B2, 0x29D],\n\t[0xA7B3, 0xAB53],\n\t[0xA7B4, 0xA7B5],\n\t[0xA7B5, 0xA7B4],\n\t[0xA7B6, 0xA7B7],\n\t[0xA7B7, 0xA7B6],\n\t[0xAB53, 0xA7B3],\n\t[0xAB70, 0x13A0],\n\t[0xAB71, 0x13A1],\n\t[0xAB72, 0x13A2],\n\t[0xAB73, 0x13A3],\n\t[0xAB74, 0x13A4],\n\t[0xAB75, 0x13A5],\n\t[0xAB76, 0x13A6],\n\t[0xAB77, 0x13A7],\n\t[0xAB78, 0x13A8],\n\t[0xAB79, 0x13A9],\n\t[0xAB7A, 0x13AA],\n\t[0xAB7B, 0x13AB],\n\t[0xAB7C, 0x13AC],\n\t[0xAB7D, 0x13AD],\n\t[0xAB7E, 0x13AE],\n\t[0xAB7F, 0x13AF],\n\t[0xAB80, 0x13B0],\n\t[0xAB81, 0x13B1],\n\t[0xAB82, 0x13B2],\n\t[0xAB83, 0x13B3],\n\t[0xAB84, 0x13B4],\n\t[0xAB85, 0x13B5],\n\t[0xAB86, 0x13B6],\n\t[0xAB87, 0x13B7],\n\t[0xAB88, 0x13B8],\n\t[0xAB89, 0x13B9],\n\t[0xAB8A, 0x13BA],\n\t[0xAB8B, 0x13BB],\n\t[0xAB8C, 0x13BC],\n\t[0xAB8D, 0x13BD],\n\t[0xAB8E, 0x13BE],\n\t[0xAB8F, 0x13BF],\n\t[0xAB90, 0x13C0],\n\t[0xAB91, 0x13C1],\n\t[0xAB92, 0x13C2],\n\t[0xAB93, 0x13C3],\n\t[0xAB94, 0x13C4],\n\t[0xAB95, 0x13C5],\n\t[0xAB96, 0x13C6],\n\t[0xAB97, 0x13C7],\n\t[0xAB98, 0x13C8],\n\t[0xAB99, 0x13C9],\n\t[0xAB9A, 0x13CA],\n\t[0xAB9B, 0x13CB],\n\t[0xAB9C, 0x13CC],\n\t[0xAB9D, 0x13CD],\n\t[0xAB9E, 0x13CE],\n\t[0xAB9F, 0x13CF],\n\t[0xABA0, 0x13D0],\n\t[0xABA1, 0x13D1],\n\t[0xABA2, 0x13D2],\n\t[0xABA3, 0x13D3],\n\t[0xABA4, 0x13D4],\n\t[0xABA5, 0x13D5],\n\t[0xABA6, 0x13D6],\n\t[0xABA7, 0x13D7],\n\t[0xABA8, 0x13D8],\n\t[0xABA9, 0x13D9],\n\t[0xABAA, 0x13DA],\n\t[0xABAB, 0x13DB],\n\t[0xABAC, 0x13DC],\n\t[0xABAD, 0x13DD],\n\t[0xABAE, 0x13DE],\n\t[0xABAF, 0x13DF],\n\t[0xABB0, 0x13E0],\n\t[0xABB1, 0x13E1],\n\t[0xABB2, 0x13E2],\n\t[0xABB3, 0x13E3],\n\t[0xABB4, 0x13E4],\n\t[0xABB5, 0x13E5],\n\t[0xABB6, 0x13E6],\n\t[0xABB7, 0x13E7],\n\t[0xABB8, 0x13E8],\n\t[0xABB9, 0x13E9],\n\t[0xABBA, 0x13EA],\n\t[0xABBB, 0x13EB],\n\t[0xABBC, 0x13EC],\n\t[0xABBD, 0x13ED],\n\t[0xABBE, 0x13EE],\n\t[0xABBF, 0x13EF],\n\t[0x10400, 0x10428],\n\t[0x10401, 0x10429],\n\t[0x10402, 0x1042A],\n\t[0x10403, 0x1042B],\n\t[0x10404, 0x1042C],\n\t[0x10405, 0x1042D],\n\t[0x10406, 0x1042E],\n\t[0x10407, 0x1042F],\n\t[0x10408, 0x10430],\n\t[0x10409, 0x10431],\n\t[0x1040A, 0x10432],\n\t[0x1040B, 0x10433],\n\t[0x1040C, 0x10434],\n\t[0x1040D, 0x10435],\n\t[0x1040E, 0x10436],\n\t[0x1040F, 0x10437],\n\t[0x10410, 0x10438],\n\t[0x10411, 0x10439],\n\t[0x10412, 0x1043A],\n\t[0x10413, 0x1043B],\n\t[0x10414, 0x1043C],\n\t[0x10415, 0x1043D],\n\t[0x10416, 0x1043E],\n\t[0x10417, 0x1043F],\n\t[0x10418, 0x10440],\n\t[0x10419, 0x10441],\n\t[0x1041A, 0x10442],\n\t[0x1041B, 0x10443],\n\t[0x1041C, 0x10444],\n\t[0x1041D, 0x10445],\n\t[0x1041E, 0x10446],\n\t[0x1041F, 0x10447],\n\t[0x10420, 0x10448],\n\t[0x10421, 0x10449],\n\t[0x10422, 0x1044A],\n\t[0x10423, 0x1044B],\n\t[0x10424, 0x1044C],\n\t[0x10425, 0x1044D],\n\t[0x10426, 0x1044E],\n\t[0x10427, 0x1044F],\n\t[0x10428, 0x10400],\n\t[0x10429, 0x10401],\n\t[0x1042A, 0x10402],\n\t[0x1042B, 0x10403],\n\t[0x1042C, 0x10404],\n\t[0x1042D, 0x10405],\n\t[0x1042E, 0x10406],\n\t[0x1042F, 0x10407],\n\t[0x10430, 0x10408],\n\t[0x10431, 0x10409],\n\t[0x10432, 0x1040A],\n\t[0x10433, 0x1040B],\n\t[0x10434, 0x1040C],\n\t[0x10435, 0x1040D],\n\t[0x10436, 0x1040E],\n\t[0x10437, 0x1040F],\n\t[0x10438, 0x10410],\n\t[0x10439, 0x10411],\n\t[0x1043A, 0x10412],\n\t[0x1043B, 0x10413],\n\t[0x1043C, 0x10414],\n\t[0x1043D, 0x10415],\n\t[0x1043E, 0x10416],\n\t[0x1043F, 0x10417],\n\t[0x10440, 0x10418],\n\t[0x10441, 0x10419],\n\t[0x10442, 0x1041A],\n\t[0x10443, 0x1041B],\n\t[0x10444, 0x1041C],\n\t[0x10445, 0x1041D],\n\t[0x10446, 0x1041E],\n\t[0x10447, 0x1041F],\n\t[0x10448, 0x10420],\n\t[0x10449, 0x10421],\n\t[0x1044A, 0x10422],\n\t[0x1044B, 0x10423],\n\t[0x1044C, 0x10424],\n\t[0x1044D, 0x10425],\n\t[0x1044E, 0x10426],\n\t[0x1044F, 0x10427],\n\t[0x104B0, 0x104D8],\n\t[0x104B1, 0x104D9],\n\t[0x104B2, 0x104DA],\n\t[0x104B3, 0x104DB],\n\t[0x104B4, 0x104DC],\n\t[0x104B5, 0x104DD],\n\t[0x104B6, 0x104DE],\n\t[0x104B7, 0x104DF],\n\t[0x104B8, 0x104E0],\n\t[0x104B9, 0x104E1],\n\t[0x104BA, 0x104E2],\n\t[0x104BB, 0x104E3],\n\t[0x104BC, 0x104E4],\n\t[0x104BD, 0x104E5],\n\t[0x104BE, 0x104E6],\n\t[0x104BF, 0x104E7],\n\t[0x104C0, 0x104E8],\n\t[0x104C1, 0x104E9],\n\t[0x104C2, 0x104EA],\n\t[0x104C3, 0x104EB],\n\t[0x104C4, 0x104EC],\n\t[0x104C5, 0x104ED],\n\t[0x104C6, 0x104EE],\n\t[0x104C7, 0x104EF],\n\t[0x104C8, 0x104F0],\n\t[0x104C9, 0x104F1],\n\t[0x104CA, 0x104F2],\n\t[0x104CB, 0x104F3],\n\t[0x104CC, 0x104F4],\n\t[0x104CD, 0x104F5],\n\t[0x104CE, 0x104F6],\n\t[0x104CF, 0x104F7],\n\t[0x104D0, 0x104F8],\n\t[0x104D1, 0x104F9],\n\t[0x104D2, 0x104FA],\n\t[0x104D3, 0x104FB],\n\t[0x104D8, 0x104B0],\n\t[0x104D9, 0x104B1],\n\t[0x104DA, 0x104B2],\n\t[0x104DB, 0x104B3],\n\t[0x104DC, 0x104B4],\n\t[0x104DD, 0x104B5],\n\t[0x104DE, 0x104B6],\n\t[0x104DF, 0x104B7],\n\t[0x104E0, 0x104B8],\n\t[0x104E1, 0x104B9],\n\t[0x104E2, 0x104BA],\n\t[0x104E3, 0x104BB],\n\t[0x104E4, 0x104BC],\n\t[0x104E5, 0x104BD],\n\t[0x104E6, 0x104BE],\n\t[0x104E7, 0x104BF],\n\t[0x104E8, 0x104C0],\n\t[0x104E9, 0x104C1],\n\t[0x104EA, 0x104C2],\n\t[0x104EB, 0x104C3],\n\t[0x104EC, 0x104C4],\n\t[0x104ED, 0x104C5],\n\t[0x104EE, 0x104C6],\n\t[0x104EF, 0x104C7],\n\t[0x104F0, 0x104C8],\n\t[0x104F1, 0x104C9],\n\t[0x104F2, 0x104CA],\n\t[0x104F3, 0x104CB],\n\t[0x104F4, 0x104CC],\n\t[0x104F5, 0x104CD],\n\t[0x104F6, 0x104CE],\n\t[0x104F7, 0x104CF],\n\t[0x104F8, 0x104D0],\n\t[0x104F9, 0x104D1],\n\t[0x104FA, 0x104D2],\n\t[0x104FB, 0x104D3],\n\t[0x10C80, 0x10CC0],\n\t[0x10C81, 0x10CC1],\n\t[0x10C82, 0x10CC2],\n\t[0x10C83, 0x10CC3],\n\t[0x10C84, 0x10CC4],\n\t[0x10C85, 0x10CC5],\n\t[0x10C86, 0x10CC6],\n\t[0x10C87, 0x10CC7],\n\t[0x10C88, 0x10CC8],\n\t[0x10C89, 0x10CC9],\n\t[0x10C8A, 0x10CCA],\n\t[0x10C8B, 0x10CCB],\n\t[0x10C8C, 0x10CCC],\n\t[0x10C8D, 0x10CCD],\n\t[0x10C8E, 0x10CCE],\n\t[0x10C8F, 0x10CCF],\n\t[0x10C90, 0x10CD0],\n\t[0x10C91, 0x10CD1],\n\t[0x10C92, 0x10CD2],\n\t[0x10C93, 0x10CD3],\n\t[0x10C94, 0x10CD4],\n\t[0x10C95, 0x10CD5],\n\t[0x10C96, 0x10CD6],\n\t[0x10C97, 0x10CD7],\n\t[0x10C98, 0x10CD8],\n\t[0x10C99, 0x10CD9],\n\t[0x10C9A, 0x10CDA],\n\t[0x10C9B, 0x10CDB],\n\t[0x10C9C, 0x10CDC],\n\t[0x10C9D, 0x10CDD],\n\t[0x10C9E, 0x10CDE],\n\t[0x10C9F, 0x10CDF],\n\t[0x10CA0, 0x10CE0],\n\t[0x10CA1, 0x10CE1],\n\t[0x10CA2, 0x10CE2],\n\t[0x10CA3, 0x10CE3],\n\t[0x10CA4, 0x10CE4],\n\t[0x10CA5, 0x10CE5],\n\t[0x10CA6, 0x10CE6],\n\t[0x10CA7, 0x10CE7],\n\t[0x10CA8, 0x10CE8],\n\t[0x10CA9, 0x10CE9],\n\t[0x10CAA, 0x10CEA],\n\t[0x10CAB, 0x10CEB],\n\t[0x10CAC, 0x10CEC],\n\t[0x10CAD, 0x10CED],\n\t[0x10CAE, 0x10CEE],\n\t[0x10CAF, 0x10CEF],\n\t[0x10CB0, 0x10CF0],\n\t[0x10CB1, 0x10CF1],\n\t[0x10CB2, 0x10CF2],\n\t[0x10CC0, 0x10C80],\n\t[0x10CC1, 0x10C81],\n\t[0x10CC2, 0x10C82],\n\t[0x10CC3, 0x10C83],\n\t[0x10CC4, 0x10C84],\n\t[0x10CC5, 0x10C85],\n\t[0x10CC6, 0x10C86],\n\t[0x10CC7, 0x10C87],\n\t[0x10CC8, 0x10C88],\n\t[0x10CC9, 0x10C89],\n\t[0x10CCA, 0x10C8A],\n\t[0x10CCB, 0x10C8B],\n\t[0x10CCC, 0x10C8C],\n\t[0x10CCD, 0x10C8D],\n\t[0x10CCE, 0x10C8E],\n\t[0x10CCF, 0x10C8F],\n\t[0x10CD0, 0x10C90],\n\t[0x10CD1, 0x10C91],\n\t[0x10CD2, 0x10C92],\n\t[0x10CD3, 0x10C93],\n\t[0x10CD4, 0x10C94],\n\t[0x10CD5, 0x10C95],\n\t[0x10CD6, 0x10C96],\n\t[0x10CD7, 0x10C97],\n\t[0x10CD8, 0x10C98],\n\t[0x10CD9, 0x10C99],\n\t[0x10CDA, 0x10C9A],\n\t[0x10CDB, 0x10C9B],\n\t[0x10CDC, 0x10C9C],\n\t[0x10CDD, 0x10C9D],\n\t[0x10CDE, 0x10C9E],\n\t[0x10CDF, 0x10C9F],\n\t[0x10CE0, 0x10CA0],\n\t[0x10CE1, 0x10CA1],\n\t[0x10CE2, 0x10CA2],\n\t[0x10CE3, 0x10CA3],\n\t[0x10CE4, 0x10CA4],\n\t[0x10CE5, 0x10CA5],\n\t[0x10CE6, 0x10CA6],\n\t[0x10CE7, 0x10CA7],\n\t[0x10CE8, 0x10CA8],\n\t[0x10CE9, 0x10CA9],\n\t[0x10CEA, 0x10CAA],\n\t[0x10CEB, 0x10CAB],\n\t[0x10CEC, 0x10CAC],\n\t[0x10CED, 0x10CAD],\n\t[0x10CEE, 0x10CAE],\n\t[0x10CEF, 0x10CAF],\n\t[0x10CF0, 0x10CB0],\n\t[0x10CF1, 0x10CB1],\n\t[0x10CF2, 0x10CB2],\n\t[0x118A0, 0x118C0],\n\t[0x118A1, 0x118C1],\n\t[0x118A2, 0x118C2],\n\t[0x118A3, 0x118C3],\n\t[0x118A4, 0x118C4],\n\t[0x118A5, 0x118C5],\n\t[0x118A6, 0x118C6],\n\t[0x118A7, 0x118C7],\n\t[0x118A8, 0x118C8],\n\t[0x118A9, 0x118C9],\n\t[0x118AA, 0x118CA],\n\t[0x118AB, 0x118CB],\n\t[0x118AC, 0x118CC],\n\t[0x118AD, 0x118CD],\n\t[0x118AE, 0x118CE],\n\t[0x118AF, 0x118CF],\n\t[0x118B0, 0x118D0],\n\t[0x118B1, 0x118D1],\n\t[0x118B2, 0x118D2],\n\t[0x118B3, 0x118D3],\n\t[0x118B4, 0x118D4],\n\t[0x118B5, 0x118D5],\n\t[0x118B6, 0x118D6],\n\t[0x118B7, 0x118D7],\n\t[0x118B8, 0x118D8],\n\t[0x118B9, 0x118D9],\n\t[0x118BA, 0x118DA],\n\t[0x118BB, 0x118DB],\n\t[0x118BC, 0x118DC],\n\t[0x118BD, 0x118DD],\n\t[0x118BE, 0x118DE],\n\t[0x118BF, 0x118DF],\n\t[0x118C0, 0x118A0],\n\t[0x118C1, 0x118A1],\n\t[0x118C2, 0x118A2],\n\t[0x118C3, 0x118A3],\n\t[0x118C4, 0x118A4],\n\t[0x118C5, 0x118A5],\n\t[0x118C6, 0x118A6],\n\t[0x118C7, 0x118A7],\n\t[0x118C8, 0x118A8],\n\t[0x118C9, 0x118A9],\n\t[0x118CA, 0x118AA],\n\t[0x118CB, 0x118AB],\n\t[0x118CC, 0x118AC],\n\t[0x118CD, 0x118AD],\n\t[0x118CE, 0x118AE],\n\t[0x118CF, 0x118AF],\n\t[0x118D0, 0x118B0],\n\t[0x118D1, 0x118B1],\n\t[0x118D2, 0x118B2],\n\t[0x118D3, 0x118B3],\n\t[0x118D4, 0x118B4],\n\t[0x118D5, 0x118B5],\n\t[0x118D6, 0x118B6],\n\t[0x118D7, 0x118B7],\n\t[0x118D8, 0x118B8],\n\t[0x118D9, 0x118B9],\n\t[0x118DA, 0x118BA],\n\t[0x118DB, 0x118BB],\n\t[0x118DC, 0x118BC],\n\t[0x118DD, 0x118BD],\n\t[0x118DE, 0x118BE],\n\t[0x118DF, 0x118BF],\n\t[0x1E900, 0x1E922],\n\t[0x1E901, 0x1E923],\n\t[0x1E902, 0x1E924],\n\t[0x1E903, 0x1E925],\n\t[0x1E904, 0x1E926],\n\t[0x1E905, 0x1E927],\n\t[0x1E906, 0x1E928],\n\t[0x1E907, 0x1E929],\n\t[0x1E908, 0x1E92A],\n\t[0x1E909, 0x1E92B],\n\t[0x1E90A, 0x1E92C],\n\t[0x1E90B, 0x1E92D],\n\t[0x1E90C, 0x1E92E],\n\t[0x1E90D, 0x1E92F],\n\t[0x1E90E, 0x1E930],\n\t[0x1E90F, 0x1E931],\n\t[0x1E910, 0x1E932],\n\t[0x1E911, 0x1E933],\n\t[0x1E912, 0x1E934],\n\t[0x1E913, 0x1E935],\n\t[0x1E914, 0x1E936],\n\t[0x1E915, 0x1E937],\n\t[0x1E916, 0x1E938],\n\t[0x1E917, 0x1E939],\n\t[0x1E918, 0x1E93A],\n\t[0x1E919, 0x1E93B],\n\t[0x1E91A, 0x1E93C],\n\t[0x1E91B, 0x1E93D],\n\t[0x1E91C, 0x1E93E],\n\t[0x1E91D, 0x1E93F],\n\t[0x1E91E, 0x1E940],\n\t[0x1E91F, 0x1E941],\n\t[0x1E920, 0x1E942],\n\t[0x1E921, 0x1E943],\n\t[0x1E922, 0x1E900],\n\t[0x1E923, 0x1E901],\n\t[0x1E924, 0x1E902],\n\t[0x1E925, 0x1E903],\n\t[0x1E926, 0x1E904],\n\t[0x1E927, 0x1E905],\n\t[0x1E928, 0x1E906],\n\t[0x1E929, 0x1E907],\n\t[0x1E92A, 0x1E908],\n\t[0x1E92B, 0x1E909],\n\t[0x1E92C, 0x1E90A],\n\t[0x1E92D, 0x1E90B],\n\t[0x1E92E, 0x1E90C],\n\t[0x1E92F, 0x1E90D],\n\t[0x1E930, 0x1E90E],\n\t[0x1E931, 0x1E90F],\n\t[0x1E932, 0x1E910],\n\t[0x1E933, 0x1E911],\n\t[0x1E934, 0x1E912],\n\t[0x1E935, 0x1E913],\n\t[0x1E936, 0x1E914],\n\t[0x1E937, 0x1E915],\n\t[0x1E938, 0x1E916],\n\t[0x1E939, 0x1E917],\n\t[0x1E93A, 0x1E918],\n\t[0x1E93B, 0x1E919],\n\t[0x1E93C, 0x1E91A],\n\t[0x1E93D, 0x1E91B],\n\t[0x1E93E, 0x1E91C],\n\t[0x1E93F, 0x1E91D],\n\t[0x1E940, 0x1E91E],\n\t[0x1E941, 0x1E91F],\n\t[0x1E942, 0x1E920],\n\t[0x1E943, 0x1E921]\n]);\n","// Generated using `npm run build`. Do not edit.\n'use strict';\n\nconst regenerate = require('regenerate');\n\nexports.REGULAR = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0xFFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0xFFFF)],\n\t['w', regenerate(0x5F)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0xFFFF)]\n]);\n\nexports.UNICODE = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x10FFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0x10FFFF)],\n\t['w', regenerate(0x5F)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0x10FFFF)]\n]);\n\nexports.UNICODE_IGNORE_CASE = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x10FFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0x10FFFF)],\n\t['w', regenerate(0x5F, 0x17F, 0x212A)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0x17E)\n\t\t.addRange(0x180, 0x2129)\n\t\t.addRange(0x212B, 0x10FFFF)]\n]);\n","'use strict';\n\nconst generate = require('regjsgen').generate;\nconst parse = require('regjsparser').parse;\nconst regenerate = require('regenerate');\nconst unicodeMatchProperty = require('unicode-match-property-ecmascript');\nconst unicodeMatchPropertyValue = require('unicode-match-property-value-ecmascript');\nconst iuMappings = require('./data/iu-mappings.js');\nconst ESCAPE_SETS = require('./data/character-class-escape-sets.js');\n\n// Prepare a Regenerate set containing all code points, used for negative\n// character classes (if any).\nconst UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF);\n// Without the `u` flag, the range stops at 0xFFFF.\n// https://mths.be/es6#sec-pattern-semantics\nconst BMP_SET = regenerate().addRange(0x0, 0xFFFF);\n\n// Prepare a Regenerate set containing all code points that are supposed to be\n// matched by `/./u`. https://mths.be/es6#sec-atom\nconst DOT_SET_UNICODE = UNICODE_SET.clone() // all Unicode code points\n\t.remove(\n\t\t// minus `LineTerminator`s (https://mths.be/es6#sec-line-terminators):\n\t\t0x000A, // Line Feed <LF>\n\t\t0x000D, // Carriage Return <CR>\n\t\t0x2028, // Line Separator <LS>\n\t\t0x2029 // Paragraph Separator <PS>\n\t);\n// Prepare a Regenerate set containing all code points that are supposed to be\n// matched by `/./` (only BMP code points).\nconst DOT_SET = DOT_SET_UNICODE.clone()\n\t.intersection(BMP_SET);\n\nconst getCharacterClassEscapeSet = (character, unicode, ignoreCase) => {\n\tif (unicode) {\n\t\tif (ignoreCase) {\n\t\t\treturn ESCAPE_SETS.UNICODE_IGNORE_CASE.get(character);\n\t\t}\n\t\treturn ESCAPE_SETS.UNICODE.get(character);\n\t}\n\treturn ESCAPE_SETS.REGULAR.get(character);\n};\n\nconst getDotSet = (unicode, dotAll) => {\n\tif (dotAll) {\n\t\treturn unicode ? UNICODE_SET : BMP_SET;\n\t}\n\treturn unicode ? DOT_SET_UNICODE : DOT_SET;\n};\n\nconst getUnicodePropertyValueSet = (property, value) => {\n\tconst path = value ?\n\t\t`${ property }/${ value }` :\n\t\t`Binary_Property/${ property }`;\n\ttry {\n\t\treturn require(`regenerate-unicode-properties/${ path }.js`);\n\t} catch (exception) {\n\t\tthrow new Error(\n\t\t\t`Failed to recognize value \\`${ value }\\` for property ` +\n\t\t\t`\\`${ property }\\`.`\n\t\t);\n\t}\n};\n\nconst handleLoneUnicodePropertyNameOrValue = (value) => {\n\t// It could be a `General_Category` value or a binary property.\n\t// Note: `unicodeMatchPropertyValue` throws on invalid values.\n\ttry {\n\t\tconst property = 'General_Category';\n\t\tconst category = unicodeMatchPropertyValue(property, value);\n\t\treturn getUnicodePropertyValueSet(property, category);\n\t} catch (exception) {}\n\t// It’s not a `General_Category` value, so check if it’s a binary\n\t// property. Note: `unicodeMatchProperty` throws on invalid properties.\n\tconst property = unicodeMatchProperty(value);\n\treturn getUnicodePropertyValueSet(property);\n};\n\nconst getUnicodePropertyEscapeSet = (value, isNegative) => {\n\tconst parts = value.split('=');\n\tconst firstPart = parts[0];\n\tlet set;\n\tif (parts.length == 1) {\n\t\tset = handleLoneUnicodePropertyNameOrValue(firstPart);\n\t} else {\n\t\t// The pattern consists of two parts, i.e. `Property=Value`.\n\t\tconst property = unicodeMatchProperty(firstPart);\n\t\tconst value = unicodeMatchPropertyValue(property, parts[1]);\n\t\tset = getUnicodePropertyValueSet(property, value);\n\t}\n\tif (isNegative) {\n\t\treturn UNICODE_SET.clone().remove(set);\n\t}\n\treturn set.clone();\n};\n\n// Given a range of code points, add any case-folded code points in that range\n// to a set.\nregenerate.prototype.iuAddRange = function(min, max) {\n\tconst $this = this;\n\tdo {\n\t\tconst folded = caseFold(min);\n\t\tif (folded) {\n\t\t\t$this.add(folded);\n\t\t}\n\t} while (++min <= max);\n\treturn $this;\n};\n\nconst update = (item, pattern) => {\n\tlet tree = parse(pattern, config.useUnicodeFlag ? 'u' : '');\n\tswitch (tree.type) {\n\t\tcase 'characterClass':\n\t\tcase 'group':\n\t\tcase 'value':\n\t\t\t// No wrapping needed.\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// Wrap the pattern in a non-capturing group.\n\t\t\ttree = wrap(tree, pattern);\n\t}\n\tObject.assign(item, tree);\n};\n\nconst wrap = (tree, pattern) => {\n\t// Wrap the pattern in a non-capturing group.\n\treturn {\n\t\t'type': 'group',\n\t\t'behavior': 'ignore',\n\t\t'body': [tree],\n\t\t'raw': `(?:${ pattern })`\n\t};\n};\n\nconst caseFold = (codePoint) => {\n\treturn iuMappings.get(codePoint) || false;\n};\n\nconst processCharacterClass = (characterClassItem, regenerateOptions) => {\n\tlet set = regenerate();\n\tfor (const item of characterClassItem.body) {\n\t\tswitch (item.type) {\n\t\t\tcase 'value':\n\t\t\t\tset.add(item.codePoint);\n\t\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\t\tconst folded = caseFold(item.codePoint);\n\t\t\t\t\tif (folded) {\n\t\t\t\t\t\tset.add(folded);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'characterClassRange':\n\t\t\t\tconst min = item.min.codePoint;\n\t\t\t\tconst max = item.max.codePoint;\n\t\t\t\tset.addRange(min, max);\n\t\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\t\tset.iuAddRange(min, max);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'characterClassEscape':\n\t\t\t\tset.add(getCharacterClassEscapeSet(\n\t\t\t\t\titem.value,\n\t\t\t\t\tconfig.unicode,\n\t\t\t\t\tconfig.ignoreCase\n\t\t\t\t));\n\t\t\t\tbreak;\n\t\t\tcase 'unicodePropertyEscape':\n\t\t\t\tset.add(getUnicodePropertyEscapeSet(item.value, item.negative));\n\t\t\t\tbreak;\n\t\t\t// The `default` clause is only here as a safeguard; it should never be\n\t\t\t// reached. Code coverage tools should ignore it.\n\t\t\t/* istanbul ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown term type: ${ item.type }`);\n\t\t}\n\t}\n\tif (characterClassItem.negative) {\n\t\tset = (config.unicode ? UNICODE_SET : BMP_SET).clone().remove(set);\n\t}\n\tupdate(characterClassItem, set.toString(regenerateOptions));\n\treturn characterClassItem;\n};\n\nconst processTerm = (item, regenerateOptions) => {\n\tswitch (item.type) {\n\t\tcase 'dot':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetDotSet(config.unicode, config.dotAll).toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'characterClass':\n\t\t\titem = processCharacterClass(item, regenerateOptions);\n\t\t\tbreak;\n\t\tcase 'unicodePropertyEscape':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetUnicodePropertyEscapeSet(item.value, item.negative)\n\t\t\t\t\t.toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'characterClassEscape':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetCharacterClassEscapeSet(\n\t\t\t\t\titem.value,\n\t\t\t\t\tconfig.unicode,\n\t\t\t\t\tconfig.ignoreCase\n\t\t\t\t).toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'alternative':\n\t\tcase 'disjunction':\n\t\tcase 'group':\n\t\tcase 'quantifier':\n\t\t\titem.body = item.body.map(term => {\n\t\t\t\treturn processTerm(term, regenerateOptions);\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'value':\n\t\t\tconst codePoint = item.codePoint;\n\t\t\tconst set = regenerate(codePoint);\n\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\tconst folded = caseFold(codePoint);\n\t\t\t\tif (folded) {\n\t\t\t\t\tset.add(folded);\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate(item, set.toString(regenerateOptions));\n\t\t\tbreak;\n\t\tcase 'anchor':\n\t\tcase 'empty':\n\t\tcase 'group':\n\t\tcase 'reference':\n\t\t\t// Nothing to do here.\n\t\t\tbreak;\n\t\t// The `default` clause is only here as a safeguard; it should never be\n\t\t// reached. Code coverage tools should ignore it.\n\t\t/* istanbul ignore next */\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown term type: ${ item.type }`);\n\t}\n\treturn item;\n};\n\nconst config = {\n\t'ignoreCase': false,\n\t'unicode': false,\n\t'dotAll': false,\n\t'useUnicodeFlag': false\n};\nconst rewritePattern = (pattern, flags, options) => {\n\tconst regjsparserFeatures = {\n\t\t'unicodePropertyEscape': options && options.unicodePropertyEscape\n\t};\n\tconfig.ignoreCase = flags && flags.includes('i');\n\tconfig.unicode = flags && flags.includes('u');\n\tconst supportDotAllFlag = options && options.dotAllFlag;\n\tconfig.dotAll = supportDotAllFlag && flags && flags.includes('s');\n\tconfig.useUnicodeFlag = options && options.useUnicodeFlag;\n\tconst regenerateOptions = {\n\t\t'hasUnicodeFlag': config.useUnicodeFlag,\n\t\t'bmpOnly': !config.unicode\n\t};\n\tconst tree = parse(pattern, flags, regjsparserFeatures);\n\t// Note: `processTerm` mutates `tree`.\n\tprocessTerm(tree, regenerateOptions);\n\treturn generate(tree);\n};\n\nmodule.exports = rewritePattern;\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport rewritePattern from 'regexpu-core';\n\nexport default class Literal extends Node {\n\tinitialise() {\n\t\tif (typeof this.value === 'string') {\n\t\t\tthis.program.indentExclusionElements.push(this);\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.numericLiteral) {\n\t\t\tconst leading = this.raw.slice(0, 2);\n\t\t\tif (leading === '0b' || leading === '0o') {\n\t\t\t\tcode.overwrite(this.start, this.end, String(this.value), {\n\t\t\t\t\tstoreName: true,\n\t\t\t\t\tcontentOnly: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.regex) {\n\t\t\tconst { pattern, flags } = this.regex;\n\n\t\t\tif (transforms.stickyRegExp && /y/.test(flags))\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'Regular expression sticky flag is not supported',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\tif (transforms.unicodeRegExp && /u/.test(flags)) {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.start,\n\t\t\t\t\tthis.end,\n\t\t\t\t\t`/${rewritePattern(pattern, flags)}/${flags.replace('u', '')}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tcontentOnly: true\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class MemberExpression extends Node {\n\ttranspile(code, transforms) {\n\t\tif (transforms.reservedProperties && reserved[this.property.name]) {\n\t\t\tcode.overwrite(this.object.end, this.property.start, `['`);\n\t\t\tcode.appendLeft(this.property.end, `']`);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class NewExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.arguments.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst arg = this.arguments[i];\n\t\t\t\tif (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tconst firstArgument = this.arguments[0];\n\t\t\tconst isNew = true;\n\t\t\tlet hasSpreadElements = spread(\n\t\t\t\tcode,\n\t\t\t\tthis.arguments,\n\t\t\t\tfirstArgument.start,\n\t\t\t\tthis.argumentsArrayAlias,\n\t\t\t\tisNew\n\t\t\t);\n\n\t\t\tif (hasSpreadElements) {\n\t\t\t\tcode.prependRight(\n\t\t\t\t\tthis.start + 'new'.length,\n\t\t\t\t\t' (Function.prototype.bind.apply('\n\t\t\t\t);\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.callee.end,\n\t\t\t\t\tfirstArgument.start,\n\t\t\t\t\t', [ null ].concat( '\n\t\t\t\t);\n\t\t\t\tcode.appendLeft(this.end, ' ))');\n\t\t\t}\n\t\t}\n\n\t\tif (this.arguments.length) {\n\t\t\tremoveTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ObjectExpression extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tlet firstPropertyStart = this.start + 1;\n\t\tlet regularPropertyCount = 0;\n\t\tlet spreadPropertyCount = 0;\n\t\tlet computedPropertyCount = 0;\n\t\tlet firstSpreadProperty = null;\n\t\tlet firstComputedProperty = null;\n\n\t\tfor (let i = 0; i < this.properties.length; ++i) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (prop.type === 'SpreadElement') {\n\t\t\t\tspreadPropertyCount += 1;\n\t\t\t\tif (firstSpreadProperty === null) firstSpreadProperty = i;\n\t\t\t} else if (prop.computed) {\n\t\t\t\tcomputedPropertyCount += 1;\n\t\t\t\tif (firstComputedProperty === null) firstComputedProperty = i;\n\t\t\t} else if (prop.type === 'Property') {\n\t\t\t\tregularPropertyCount += 1;\n\t\t\t}\n\t\t}\n\n\t\tif (spreadPropertyCount) {\n\t\t\tif (!this.program.options.objectAssign) {\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t\"Object spread operator requires specified objectAssign option with 'Object.assign' or polyfill helper.\",\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\t\t\t// enclose run of non-spread properties in curlies\n\t\t\tlet i = this.properties.length;\n\t\t\tif (regularPropertyCount && !computedPropertyCount) {\n\t\t\t\twhile (i--) {\n\t\t\t\t\tconst prop = this.properties[i];\n\n\t\t\t\t\tif (prop.type === 'Property' && !prop.computed) {\n\t\t\t\t\t\tconst lastProp = this.properties[i - 1];\n\t\t\t\t\t\tconst nextProp = this.properties[i + 1];\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!lastProp ||\n\t\t\t\t\t\t\tlastProp.type !== 'Property' ||\n\t\t\t\t\t\t\tlastProp.computed\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcode.prependRight(prop.start, '{');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!nextProp ||\n\t\t\t\t\t\t\tnextProp.type !== 'Property' ||\n\t\t\t\t\t\t\tnextProp.computed\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcode.appendLeft(prop.end, '}');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// wrap the whole thing in Object.assign\n\t\t\tfirstPropertyStart = this.properties[0].start;\n\t\t\tif (!computedPropertyCount) {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.start,\n\t\t\t\t\tfirstPropertyStart,\n\t\t\t\t\t`${this.program.options.objectAssign}({}, `\n\t\t\t\t);\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.properties[this.properties.length - 1].end,\n\t\t\t\t\tthis.end,\n\t\t\t\t\t')'\n\t\t\t\t);\n\t\t\t} else if (this.properties[0].type === 'SpreadElement') {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.start,\n\t\t\t\t\tfirstPropertyStart,\n\t\t\t\t\t`${this.program.options.objectAssign}({}, `\n\t\t\t\t);\n\t\t\t\tcode.remove(this.end - 1, this.end);\n\t\t\t\tcode.appendRight(this.end, ')');\n\t\t\t} else {\n\t\t\t\tcode.prependLeft(this.start, `${this.program.options.objectAssign}(`);\n\t\t\t\tcode.appendRight(this.end, ')');\n\t\t\t}\n\t\t}\n\n\t\tif (computedPropertyCount && transforms.computedProperty) {\n\t\t\tconst i0 = this.getIndentation();\n\n\t\t\tlet isSimpleAssignment;\n\t\t\tlet name;\n\n\t\t\tif (\n\t\t\t\tthis.parent.type === 'VariableDeclarator' &&\n\t\t\t\tthis.parent.parent.declarations.length === 1 &&\n\t\t\t\tthis.parent.id.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.id.alias || this.parent.id.name; // TODO is this right?\n\t\t\t} else if (\n\t\t\t\tthis.parent.type === 'AssignmentExpression' &&\n\t\t\t\tthis.parent.parent.type === 'ExpressionStatement' &&\n\t\t\t\tthis.parent.left.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n\t\t\t} else if (\n\t\t\t\tthis.parent.type === 'AssignmentPattern' &&\n\t\t\t\tthis.parent.left.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n\t\t\t}\n\n\t\t\tif (spreadPropertyCount) isSimpleAssignment = false;\n\n\t\t\t// handle block scoping\n\t\t\tname = this.findScope(false).resolveName(name);\n\n\t\t\tconst start = firstPropertyStart;\n\t\t\tconst end = this.end;\n\n\t\t\tif (isSimpleAssignment) {\n\t\t\t\t// ???\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tfirstSpreadProperty === null ||\n\t\t\t\t\tfirstComputedProperty < firstSpreadProperty\n\t\t\t\t) {\n\t\t\t\t\tname = this.findScope(true).createDeclaration('obj');\n\n\t\t\t\t\tcode.prependRight(this.start, `( ${name} = `);\n\t\t\t\t} else name = null; // We don't actually need this variable\n\t\t\t}\n\n\t\t\tconst len = this.properties.length;\n\t\t\tlet lastComputedProp;\n\t\t\tlet sawNonComputedProperty = false;\n\t\t\tlet isFirst = true;\n\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tconst prop = this.properties[i];\n\t\t\t\tlet moveStart = i > 0 ? this.properties[i - 1].end : start;\n\n\t\t\t\tif (\n\t\t\t\t\tprop.type === 'Property' &&\n\t\t\t\t\t(prop.computed || (lastComputedProp && !spreadPropertyCount))\n\t\t\t\t) {\n\t\t\t\t\tif (i === 0) moveStart = this.start + 1; // Trim leading whitespace\n\t\t\t\t\tlastComputedProp = prop;\n\n\t\t\t\t\tif (!name) {\n\t\t\t\t\t\tname = this.findScope(true).createDeclaration('obj');\n\n\t\t\t\t\t\tconst propId = name + (prop.computed ? '' : '.');\n\t\t\t\t\t\tcode.appendRight(prop.start, `( ${name} = {}, ${propId}`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst propId =\n\t\t\t\t\t\t\t(isSimpleAssignment ? `;\\n${i0}${name}` : `, ${name}`) +\n\t\t\t\t\t\t\t(prop.key.type === 'Literal' || prop.computed ? '' : '.');\n\n\t\t\t\t\t\tif (moveStart < prop.start) {\n\t\t\t\t\t\t\tcode.overwrite(moveStart, prop.start, propId);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight(prop.start, propId);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet c = prop.key.end;\n\t\t\t\t\tif (prop.computed) {\n\t\t\t\t\t\twhile (code.original[c] !== ']') c += 1;\n\t\t\t\t\t\tc += 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (prop.key.type === 'Literal' && !prop.computed) {\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tprop.start,\n\t\t\t\t\t\t\tprop.key.end + 1,\n\t\t\t\t\t\t\t'[' + code.slice(prop.start, prop.key.end) + '] = '\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (prop.shorthand || (prop.method && !prop.computed && transforms.conciseMethodProperty)) {\n\t\t\t\t\t\t// Replace : with = if Property::transpile inserted the :\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tprop.key.start,\n\t\t\t\t\t\t\tprop.key.end,\n\t\t\t\t\t\t\tcode.slice(prop.key.start, prop.key.end).replace(/:/, ' =')\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (prop.value.start > c) code.remove(c, prop.value.start);\n\t\t\t\t\t\tcode.prependLeft(c, ' = ');\n\t\t\t\t\t}\n\n\t\t\t\t\t// This duplicates behavior from Property::transpile which is disabled\n\t\t\t\t\t// for computed properties or if conciseMethodProperty is false\n\t\t\t\t\tif (prop.method && (prop.computed || !transforms.conciseMethodProperty)) {\n\t\t\t\t\t\tif (prop.value.generator) code.remove(prop.start, prop.key.start);\n\t\t\t\t\t\tcode.prependRight(prop.value.start, `function${prop.value.generator ? '*' : ''} `);\n\t\t\t\t\t}\n\t\t\t\t} else if (prop.type === 'SpreadElement') {\n\t\t\t\t\tif (name && i > 0) {\n\t\t\t\t\t\tif (!lastComputedProp) {\n\t\t\t\t\t\t\tlastComputedProp = this.properties[i - 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcode.appendLeft(lastComputedProp.end, `, ${name} )`);\n\n\t\t\t\t\t\tlastComputedProp = null;\n\t\t\t\t\t\tname = null;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!isFirst && spreadPropertyCount) {\n\t\t\t\t\t\t// We are in an Object.assign context, so we need to wrap regular properties\n\t\t\t\t\t\tcode.prependRight(prop.start, '{');\n\t\t\t\t\t\tcode.appendLeft(prop.end, '}');\n\t\t\t\t\t}\n\t\t\t\t\tsawNonComputedProperty = true;\n\t\t\t\t}\n\t\t\t\tif (isFirst && (prop.type === 'SpreadElement' || prop.computed)) {\n\t\t\t\t\tlet beginEnd = sawNonComputedProperty\n\t\t\t\t\t\t? this.properties[this.properties.length - 1].end\n\t\t\t\t\t\t: this.end - 1;\n\t\t\t\t\t// Trim trailing comma because it can easily become a leading comma which is illegal\n\t\t\t\t\tif (code.original[beginEnd] == ',') ++beginEnd;\n\t\t\t\t\tconst closing = code.slice(beginEnd, end);\n\t\t\t\t\tcode.prependLeft(moveStart, closing);\n\t\t\t\t\tcode.remove(beginEnd, end);\n\t\t\t\t\tisFirst = false;\n\t\t\t\t}\n\n\t\t\t\t// Clean up some extranous whitespace\n\t\t\t\tlet c = prop.end;\n\t\t\t\tif (i < len - 1 && !sawNonComputedProperty) {\n\t\t\t\t\twhile (code.original[c] !== ',') c += 1;\n\t\t\t\t} else if (i == len - 1) c = this.end;\n\t\t\t\tcode.remove(prop.end, c);\n\t\t\t}\n\n\t\t\t// special case\n\t\t\tif (computedPropertyCount === len) {\n\t\t\t\tcode.remove(this.properties[len - 1].end, this.end - 1);\n\t\t\t}\n\n\t\t\tif (!isSimpleAssignment && name) {\n\t\t\t\tcode.appendLeft(lastComputedProp.end, `, ${name} )`);\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class Property extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (\n\t\t\ttransforms.conciseMethodProperty &&\n\t\t\t!this.computed &&\n\t\t\tthis.parent.type !== 'ObjectPattern'\n\t\t) {\n\t\t\tif (this.shorthand) {\n\t\t\t\tcode.prependRight(this.start, `${this.key.name}: `);\n\t\t\t} else if (this.method) {\n\t\t\t\tlet name = '';\n\t\t\t\tif (this.program.options.namedFunctionExpressions !== false) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.key.type === 'Literal' &&\n\t\t\t\t\t\ttypeof this.key.value === 'number'\n\t\t\t\t\t) {\n\t\t\t\t\t\tname = '';\n\t\t\t\t\t} else if (this.key.type === 'Identifier') {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\treserved[this.key.name] ||\n\t\t\t\t\t\t\t!/^[a-z_$][a-z0-9_$]*$/i.test(this.key.name) ||\n\t\t\t\t\t\t\tthis.value.body.scope.references[this.key.name]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tname = this.findScope(true).createIdentifier(this.key.name);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = this.key.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = this.findScope(true).createIdentifier(this.key.value);\n\t\t\t\t\t}\n\t\t\t\t\tname = ' ' + name;\n\t\t\t\t}\n\n\t\t\t\tif (this.value.generator) code.remove(this.start, this.key.start);\n\t\t\t\tcode.appendLeft(\n\t\t\t\t\tthis.key.end,\n\t\t\t\t\t`: function${this.value.generator ? '*' : ''}${name}`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (transforms.reservedProperties && reserved[this.key.name]) {\n\t\t\tcode.prependRight(this.key.start, `'`);\n\t\t\tcode.appendLeft(this.key.end, `'`);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ReturnStatement extends Node {\n\tinitialise(transforms) {\n\t\tthis.loop = this.findNearest(loopStatement);\n\t\tthis.nearestFunction = this.findNearest(/Function/);\n\n\t\tif (\n\t\t\tthis.loop &&\n\t\t\t(!this.nearestFunction || this.loop.depth > this.nearestFunction.depth)\n\t\t) {\n\t\t\tthis.loop.canReturn = true;\n\t\t\tthis.shouldWrap = true;\n\t\t}\n\n\t\tif (this.argument) this.argument.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst shouldWrap =\n\t\t\tthis.shouldWrap && this.loop && this.loop.shouldRewriteAsFunction;\n\n\t\tif (this.argument) {\n\t\t\tif (shouldWrap) code.prependRight(this.argument.start, `{ v: `);\n\t\t\tthis.argument.transpile(code, transforms);\n\t\t\tif (shouldWrap) code.appendLeft(this.argument.end, ` }`);\n\t\t} else if (shouldWrap) {\n\t\t\tcode.appendLeft(this.start + 6, ' {}');\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class SpreadElement extends Node {\n\ttranspile(code, transforms) {\n\t\tif (this.parent.type == 'ObjectExpression') {\n\t\t\tcode.remove(this.start, this.argument.start);\n\t\t\tcode.remove(this.argument.end, this.end);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class Super extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.classes) {\n\t\t\tthis.method = this.findNearest('MethodDefinition');\n\t\t\tif (!this.method)\n\t\t\t\tthrow new CompileError('use of super outside class method', this);\n\n\t\t\tconst parentClass = this.findNearest('ClassBody').parent;\n\t\t\tthis.superClassName =\n\t\t\t\tparentClass.superClass && (parentClass.superClass.name || 'superclass');\n\n\t\t\tif (!this.superClassName)\n\t\t\t\tthrow new CompileError('super used in base class', this);\n\n\t\t\tthis.isCalled =\n\t\t\t\tthis.parent.type === 'CallExpression' && this === this.parent.callee;\n\n\t\t\tif (this.method.kind !== 'constructor' && this.isCalled) {\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'super() not allowed outside class constructor',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.isMember = this.parent.type === 'MemberExpression';\n\n\t\t\tif (!this.isCalled && !this.isMember) {\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'Unexpected use of `super` (expected `super(...)` or `super.*`)',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (transforms.arrow) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\tconst arrowFunction = this.findNearest('ArrowFunctionExpression');\n\t\t\tconst loop = this.findNearest(loopStatement);\n\n\t\t\tif (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tloop &&\n\t\t\t\tloop.body.contains(this) &&\n\t\t\t\tloop.depth > lexicalBoundary.depth\n\t\t\t) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.classes) {\n\t\t\tconst expression =\n\t\t\t\tthis.isCalled || this.method.static\n\t\t\t\t\t? this.superClassName\n\t\t\t\t\t: `${this.superClassName}.prototype`;\n\n\t\t\tcode.overwrite(this.start, this.end, expression, {\n\t\t\t\tstoreName: true,\n\t\t\t\tcontentOnly: true\n\t\t\t});\n\n\t\t\tconst callExpression = this.isCalled ? this.parent : this.parent.parent;\n\n\t\t\tif (callExpression && callExpression.type === 'CallExpression') {\n\t\t\t\tif (!this.noCall) {\n\t\t\t\t\t// special case – `super( ...args )`\n\t\t\t\t\tcode.appendLeft(callExpression.callee.end, '.call');\n\t\t\t\t}\n\n\t\t\t\tconst thisAlias = this.thisAlias || 'this';\n\n\t\t\t\tif (callExpression.arguments.length) {\n\t\t\t\t\tcode.appendLeft(callExpression.arguments[0].start, `${thisAlias}, `);\n\t\t\t\t} else {\n\t\t\t\t\tcode.appendLeft(callExpression.end - 1, `${thisAlias}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class TaggedTemplateExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (\n\t\t\ttransforms.templateString &&\n\t\t\t!transforms.dangerousTaggedTemplateString\n\t\t) {\n\t\t\tthrow new CompileError(\n\t\t\t\t\"Tagged template strings are not supported. Use `transforms: { templateString: false }` to skip transformation and disable this error, or `transforms: { dangerousTaggedTemplateString: true }` if you know what you're doing\",\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.templateString && transforms.dangerousTaggedTemplateString) {\n\t\t\tconst ordered = this.quasi.expressions\n\t\t\t\t.concat(this.quasi.quasis)\n\t\t\t\t.sort((a, b) => a.start - b.start);\n\n\t\t\tconst program = this.program;\n\t\t\tconst rootScope = program.body.scope;\n\n\t\t\t// insert strings at start\n\t\t\tconst templateStrings = this.quasi.quasis.map(quasi =>\n\t\t\t\tJSON.stringify(quasi.value.cooked)\n\t\t\t).join(', ');\n\n\t\t\tlet templateObject = this.program.templateLiteralQuasis[templateStrings];\n\t\t\tif (!templateObject) {\n\t\t\t\ttemplateObject = rootScope.createIdentifier('templateObject');\n\t\t\t\tcode.prependRight(this.program.prependAt, `var ${templateObject} = Object.freeze([${templateStrings}]);\\n`);\n\n\t\t\t\tthis.program.templateLiteralQuasis[templateStrings] = templateObject;\n\t\t\t}\n\n\t\t\tcode.overwrite(\n\t\t\t\tthis.tag.end,\n\t\t\t\tordered[0].start,\n\t\t\t\t`(${templateObject}`\n\t\t\t);\n\n\t\t\tlet lastIndex = ordered[0].start;\n\t\t\tordered.forEach(node => {\n\t\t\t\tif (node.type === 'TemplateElement') {\n\t\t\t\t\tcode.remove(lastIndex, node.end);\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite(lastIndex, node.start, ', ');\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tcode.overwrite(lastIndex, this.end, ')');\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateElement extends Node {\n\tinitialise() {\n\t\tthis.program.indentExclusionElements.push(this);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateLiteral extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (\n\t\t\ttransforms.templateString &&\n\t\t\tthis.parent.type !== 'TaggedTemplateExpression'\n\t\t) {\n\t\t\tlet ordered = this.expressions\n\t\t\t\t.concat(this.quasis)\n\t\t\t\t.sort((a, b) => a.start - b.start || a.end - b.end)\n\t\t\t\t.filter((node, i) => {\n\t\t\t\t\t// include all expressions\n\t\t\t\t\tif (node.type !== 'TemplateElement') return true;\n\n\t\t\t\t\t// include all non-empty strings\n\t\t\t\t\tif (node.value.raw) return true;\n\n\t\t\t\t\t// exclude all empty strings not at the head\n\t\t\t\t\treturn !i;\n\t\t\t\t});\n\n\t\t\t// special case – we may be able to skip the first element,\n\t\t\t// if it's the empty string, but only if the second and\n\t\t\t// third elements aren't both expressions (since they maybe\n\t\t\t// be numeric, and `1 + 2 + '3' === '33'`)\n\t\t\tif (ordered.length >= 3) {\n\t\t\t\tconst [first, , third] = ordered;\n\t\t\t\tif (\n\t\t\t\t\tfirst.type === 'TemplateElement' &&\n\t\t\t\t\tfirst.value.raw === '' &&\n\t\t\t\t\tthird.type === 'TemplateElement'\n\t\t\t\t) {\n\t\t\t\t\tordered.shift();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst parenthesise =\n\t\t\t\t(this.quasis.length !== 1 || this.expressions.length !== 0) &&\n\t\t\t\tthis.parent.type !== 'TemplateLiteral' &&\n\t\t\t\tthis.parent.type !== 'AssignmentExpression' &&\n\t\t\t\tthis.parent.type !== 'AssignmentPattern' &&\n\t\t\t\tthis.parent.type !== 'VariableDeclarator' &&\n\t\t\t\t(this.parent.type !== 'BinaryExpression' ||\n\t\t\t\t\tthis.parent.operator !== '+');\n\n\t\t\tif (parenthesise) code.appendRight(this.start, '(');\n\n\t\t\tlet lastIndex = this.start;\n\n\t\t\tordered.forEach((node, i) => {\n\t\t\t\tlet prefix = i === 0 ? (parenthesise ? '(' : '') : ' + ';\n\n\t\t\t\tif (node.type === 'TemplateElement') {\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tlastIndex,\n\t\t\t\t\t\tnode.end,\n\t\t\t\t\t\tprefix + JSON.stringify(node.value.cooked)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst parenthesise = node.type !== 'Identifier'; // TODO other cases where it's safe\n\n\t\t\t\t\tif (parenthesise) prefix += '(';\n\n\t\t\t\t\tcode.remove(lastIndex, node.start);\n\n\t\t\t\t\tif (prefix) code.prependRight(node.start, prefix);\n\t\t\t\t\tif (parenthesise) code.appendLeft(node.end, ')');\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tif (parenthesise) code.appendLeft(lastIndex, ')');\n\t\t\tcode.overwrite(lastIndex, this.end, \"\", { contentOnly: true } );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ThisExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.arrow) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\tconst arrowFunction = this.findNearest('ArrowFunctionExpression');\n\t\t\tconst loop = this.findNearest(loopStatement);\n\n\t\t\tif (\n\t\t\t\t(arrowFunction && arrowFunction.depth > lexicalBoundary.depth) ||\n\t\t\t\t(loop &&\n\t\t\t\t\tloop.body.contains(this) &&\n\t\t\t\t\tloop.depth > lexicalBoundary.depth) ||\n\t\t\t\t(loop && loop.right && loop.right.contains(this))\n\t\t\t) {\n\t\t\t\tthis.alias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code) {\n\t\tif (this.alias) {\n\t\t\tcode.overwrite(this.start, this.end, this.alias, {\n\t\t\t\tstoreName: true,\n\t\t\t\tcontentOnly: true\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport checkConst from '../../utils/checkConst.js';\n\nexport default class UpdateExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (this.argument.type === 'Identifier') {\n\t\t\tconst declaration = this.findScope(false).findDeclaration(\n\t\t\t\tthis.argument.name\n\t\t\t);\n\t\t\t// special case – https://gitlab.com/Rich-Harris/buble/issues/150\n\t\t\tconst statement = declaration && declaration.node.ancestor(3);\n\t\t\tif (\n\t\t\t\tstatement &&\n\t\t\t\tstatement.type === 'ForStatement' &&\n\t\t\t\tstatement.body.contains(this)\n\t\t\t) {\n\t\t\t\tstatement.reassigned[this.argument.name] = true;\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (this.argument.type === 'Identifier') {\n\t\t\t// Do this check after everything has been initialized to find\n\t\t\t// shadowing declarations after this expression\n\t\t\tcheckConst(this.argument, this.findScope(false));\n\t\t}\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport destructure from '../../utils/destructure.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class VariableDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tthis.scope = this.findScope(this.kind === 'var');\n\t\tthis.declarations.forEach(declarator => declarator.initialise(transforms));\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst i0 = this.getIndentation();\n\t\tlet kind = this.kind;\n\n\t\tif (transforms.letConst && kind !== 'var') {\n\t\t\tkind = 'var';\n\t\t\tcode.overwrite(this.start, this.start + this.kind.length, kind, {\n\t\t\t\tstoreName: true\n\t\t\t});\n\t\t}\n\n\t\tif (transforms.destructuring && this.parent.type !== 'ForOfStatement' && this.parent.type !== 'ForInStatement') {\n\t\t\tlet c = this.start;\n\t\t\tlet lastDeclaratorIsPattern;\n\n\t\t\tthis.declarations.forEach((declarator, i) => {\n\t\t\t\tdeclarator.transpile(code, transforms);\n\n\t\t\t\tif (declarator.id.type === 'Identifier') {\n\t\t\t\t\tif (i > 0 && this.declarations[i - 1].id.type !== 'Identifier') {\n\t\t\t\t\t\tcode.overwrite(c, declarator.id.start, `var `);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst inline = loopStatement.test(this.parent.type);\n\n\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\tcode.remove(c, declarator.id.start);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite(c, declarator.id.start, `;\\n${i0}`);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst simple =\n\t\t\t\t\t\tdeclarator.init.type === 'Identifier' && !declarator.init.rewritten;\n\n\t\t\t\t\tconst name = simple\n\t\t\t\t\t\t? (declarator.init.alias || declarator.init.name)\n\t\t\t\t\t\t: declarator.findScope(true).createIdentifier('ref');\n\n\t\t\t\t\tc = declarator.start;\n\n\t\t\t\t\tlet statementGenerators = [];\n\n\t\t\t\t\tif (simple) {\n\t\t\t\t\t\tcode.remove(declarator.id.end, declarator.end);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t\t\tcode.prependRight(declarator.id.end, `var ${name}`);\n\t\t\t\t\t\t\tcode.appendLeft(declarator.init.end, `${suffix}`);\n\t\t\t\t\t\t\tcode.move(declarator.id.end, declarator.end, start);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst scope = declarator.findScope(false);\n\t\t\t\t\tdestructure(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tid => scope.createIdentifier(id),\n\t\t\t\t\t\t({ name }) => scope.resolveName(name),\n\t\t\t\t\t\tdeclarator.id,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tinline,\n\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t);\n\n\t\t\t\t\tlet prefix = inline ? 'var ' : '';\n\t\t\t\t\tlet suffix = inline ? `, ` : `;\\n${i0}`;\n\t\t\t\t\tstatementGenerators.forEach((fn, j) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ti === this.declarations.length - 1 &&\n\t\t\t\t\t\t\tj === statementGenerators.length - 1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tsuffix = inline ? '' : ';';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfn(declarator.start, j === 0 ? prefix : '', suffix);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tc = declarator.end;\n\t\t\t\tlastDeclaratorIsPattern = declarator.id.type !== 'Identifier';\n\t\t\t});\n\n\t\t\tif (lastDeclaratorIsPattern && this.end > c) {\n\t\t\t\tcode.overwrite(c, this.end, '', { contentOnly: true });\n\t\t\t}\n\t\t} else {\n\t\t\tthis.declarations.forEach(declarator => {\n\t\t\t\tdeclarator.transpile(code, transforms);\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class VariableDeclarator extends Node {\n\tinitialise(transforms) {\n\t\tlet kind = this.parent.kind;\n\t\tif (kind === 'let' && this.parent.parent.type === 'ForStatement') {\n\t\t\tkind = 'for.let'; // special case...\n\t\t}\n\n\t\tthis.parent.scope.addDeclaration(this.id, kind);\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (!this.init && transforms.letConst && this.parent.kind !== 'var') {\n\t\t\tlet inLoop = this.findNearest(\n\t\t\t\t/Function|^For(In|Of)?Statement|^(?:Do)?WhileStatement/\n\t\t\t);\n\t\t\tif (\n\t\t\t\tinLoop &&\n\t\t\t\t!/Function/.test(inLoop.type) &&\n\t\t\t\t!this.isLeftDeclaratorOfLoop()\n\t\t\t) {\n\t\t\t\tcode.appendLeft(this.id.end, ' = (void 0)');\n\t\t\t}\n\t\t}\n\n\t\tif (this.id) this.id.transpile(code, transforms);\n\t\tif (this.init) this.init.transpile(code, transforms);\n\t}\n\n\tisLeftDeclaratorOfLoop() {\n\t\treturn (\n\t\t\tthis.parent &&\n\t\t\tthis.parent.type === 'VariableDeclaration' &&\n\t\t\tthis.parent.parent &&\n\t\t\t(this.parent.parent.type === 'ForInStatement' ||\n\t\t\t\tthis.parent.parent.type === 'ForOfStatement') &&\n\t\t\tthis.parent.parent.left &&\n\t\t\tthis.parent.parent.left.declarations[0] === this\n\t\t);\n\t}\n}\n","import ArrayExpression from './ArrayExpression.js';\nimport ArrowFunctionExpression from './ArrowFunctionExpression.js';\nimport AssignmentExpression from './AssignmentExpression.js';\nimport BinaryExpression from './BinaryExpression.js';\nimport BreakStatement from './BreakStatement.js';\nimport CallExpression from './CallExpression.js';\nimport ClassBody from './ClassBody.js';\nimport ClassDeclaration from './ClassDeclaration.js';\nimport ClassExpression from './ClassExpression.js';\nimport ContinueStatement from './ContinueStatement.js';\nimport ExportDefaultDeclaration from './ExportDefaultDeclaration.js';\nimport ExportNamedDeclaration from './ExportNamedDeclaration.js';\nimport ForStatement from './ForStatement.js';\nimport ForInStatement from './ForInStatement.js';\nimport ForOfStatement from './ForOfStatement.js';\nimport FunctionDeclaration from './FunctionDeclaration.js';\nimport FunctionExpression from './FunctionExpression.js';\nimport Identifier from './Identifier.js';\nimport IfStatement from './IfStatement.js';\nimport ImportDeclaration from './ImportDeclaration.js';\nimport ImportDefaultSpecifier from './ImportDefaultSpecifier.js';\nimport ImportSpecifier from './ImportSpecifier.js';\nimport JSXAttribute from './JSXAttribute.js';\nimport JSXClosingElement from './JSXClosingElement.js';\nimport JSXClosingFragment from './JSXClosingFragment.js';\nimport JSXElement from './JSXElement.js';\nimport JSXExpressionContainer from './JSXExpressionContainer.js';\nimport JSXFragment from './JSXFragment.js';\nimport JSXOpeningElement from './JSXOpeningElement.js';\nimport JSXOpeningFragment from './JSXOpeningFragment.js';\nimport JSXSpreadAttribute from './JSXSpreadAttribute.js';\nimport Literal from './Literal.js';\nimport LoopStatement from './shared/LoopStatement.js';\nimport MemberExpression from './MemberExpression.js';\nimport NewExpression from './NewExpression.js';\nimport ObjectExpression from './ObjectExpression.js';\nimport Property from './Property.js';\nimport ReturnStatement from './ReturnStatement.js';\nimport SpreadElement from './SpreadElement.js';\nimport Super from './Super.js';\nimport TaggedTemplateExpression from './TaggedTemplateExpression.js';\nimport TemplateElement from './TemplateElement.js';\nimport TemplateLiteral from './TemplateLiteral.js';\nimport ThisExpression from './ThisExpression.js';\nimport UpdateExpression from './UpdateExpression.js';\nimport VariableDeclaration from './VariableDeclaration.js';\nimport VariableDeclarator from './VariableDeclarator.js';\n\nexport default {\n\tArrayExpression,\n\tArrowFunctionExpression,\n\tAssignmentExpression,\n\tBinaryExpression,\n\tBreakStatement,\n\tCallExpression,\n\tClassBody,\n\tClassDeclaration,\n\tClassExpression,\n\tContinueStatement,\n\tDoWhileStatement: LoopStatement,\n\tExportNamedDeclaration,\n\tExportDefaultDeclaration,\n\tForStatement,\n\tForInStatement,\n\tForOfStatement,\n\tFunctionDeclaration,\n\tFunctionExpression,\n\tIdentifier,\n\tIfStatement,\n\tImportDeclaration,\n\tImportDefaultSpecifier,\n\tImportSpecifier,\n\tJSXAttribute,\n\tJSXClosingElement,\n\tJSXClosingFragment,\n\tJSXElement,\n\tJSXExpressionContainer,\n\tJSXFragment,\n\tJSXOpeningElement,\n\tJSXOpeningFragment,\n\tJSXSpreadAttribute,\n\tLiteral,\n\tMemberExpression,\n\tNewExpression,\n\tObjectExpression,\n\tProperty,\n\tReturnStatement,\n\tSpreadElement,\n\tSuper,\n\tTaggedTemplateExpression,\n\tTemplateElement,\n\tTemplateLiteral,\n\tThisExpression,\n\tUpdateExpression,\n\tVariableDeclaration,\n\tVariableDeclarator,\n\tWhileStatement: LoopStatement\n};\n","export default {\n\tProgram: ['body'],\n\tLiteral: []\n};\n","import types from './types/index.js';\nimport BlockStatement from './BlockStatement.js';\nimport Node from './Node.js';\nimport keys from './keys.js';\n\nconst statementsWithBlocks = {\n\tIfStatement: 'consequent',\n\tForStatement: 'body',\n\tForInStatement: 'body',\n\tForOfStatement: 'body',\n\tWhileStatement: 'body',\n\tDoWhileStatement: 'body',\n\tArrowFunctionExpression: 'body'\n};\n\nexport default function wrap(raw, parent) {\n\tif (!raw) return;\n\n\tif ('length' in raw) {\n\t\tlet i = raw.length;\n\t\twhile (i--) wrap(raw[i], parent);\n\t\treturn;\n\t}\n\n\t// with e.g. shorthand properties, key and value are\n\t// the same node. We don't want to wrap an object twice\n\tif (raw.__wrapped) return;\n\traw.__wrapped = true;\n\n\tif (!keys[raw.type]) {\n\t\tkeys[raw.type] = Object.keys(raw).filter(\n\t\t\tkey => typeof raw[key] === 'object'\n\t\t);\n\t}\n\n\t// special case – body-less if/for/while statements. TODO others?\n\tconst bodyType = statementsWithBlocks[raw.type];\n\tif (bodyType && raw[bodyType].type !== 'BlockStatement') {\n\t\tconst expression = raw[bodyType];\n\n\t\t// create a synthetic block statement, otherwise all hell\n\t\t// breaks loose when it comes to block scoping\n\t\traw[bodyType] = {\n\t\t\tstart: expression.start,\n\t\t\tend: expression.end,\n\t\t\ttype: 'BlockStatement',\n\t\t\tbody: [expression],\n\t\t\tsynthetic: true\n\t\t};\n\t}\n\n\traw.parent = parent;\n\traw.program = parent.program || parent;\n\traw.depth = parent.depth + 1;\n\traw.keys = keys[raw.type];\n\traw.indentation = undefined;\n\n\tfor (const key of keys[raw.type]) {\n\t\twrap(raw[key], raw);\n\t}\n\n\traw.program.magicString.addSourcemapLocation(raw.start);\n\traw.program.magicString.addSourcemapLocation(raw.end);\n\n\tconst type =\n\t\t(raw.type === 'BlockStatement' ? BlockStatement : types[raw.type]) || Node;\n\traw.__proto__ = type.prototype;\n}\n","import MagicString from 'magic-string';\nimport BlockStatement from './BlockStatement.js';\nimport wrap from './wrap.js';\n\nexport default function Program(source, ast, transforms, options) {\n\tthis.type = 'Root';\n\n\t// options\n\tthis.jsx = options.jsx || 'React.createElement';\n\tthis.options = options;\n\n\tthis.source = source;\n\tthis.magicString = new MagicString(source);\n\n\tthis.ast = ast;\n\tthis.depth = 0;\n\n\twrap((this.body = ast), this);\n\tthis.body.__proto__ = BlockStatement.prototype;\n\n\tthis.templateLiteralQuasis = Object.create(null);\n\tfor (let i = 0; i < this.body.body.length; ++i) {\n\t\tif (!this.body.body[i].directive) {\n\t\t\tthis.prependAt = this.body.body[i].start;\n\t\t\tbreak;\n\t\t}\n\t}\n\tthis.objectWithoutPropertiesHelper = null;\n\n\tthis.indentExclusionElements = [];\n\tthis.body.initialise(transforms);\n\n\tthis.indentExclusions = Object.create(null);\n\tfor (const node of this.indentExclusionElements) {\n\t\tfor (let i = node.start; i < node.end; i += 1) {\n\t\t\tthis.indentExclusions[i] = true;\n\t\t}\n\t}\n\n\tthis.body.transpile(this.magicString, transforms);\n}\n\nProgram.prototype = {\n\texport(options = {}) {\n\t\treturn {\n\t\t\tcode: this.magicString.toString(),\n\t\t\tmap: this.magicString.generateMap({\n\t\t\t\tfile: options.file,\n\t\t\t\tsource: options.source,\n\t\t\t\tincludeContent: options.includeContent !== false\n\t\t\t})\n\t\t};\n\t},\n\n\tfindNearest() {\n\t\treturn null;\n\t},\n\n\tfindScope() {\n\t\treturn null;\n\t},\n\n\tgetObjectWithoutPropertiesHelper(code) {\n\t\tif (!this.objectWithoutPropertiesHelper) {\n\t\t\tthis.objectWithoutPropertiesHelper = this.body.scope.createIdentifier('objectWithoutProperties');\n\t\t\tcode.prependLeft(this.prependAt, `function ${this.objectWithoutPropertiesHelper} (obj, exclude) { ` +\n\t\t\t\t`var target = {}; for (var k in obj) ` +\n\t\t\t\t`if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) ` +\n\t\t\t\t`target[k] = obj[k]; return target; }\\n`\n\t\t\t);\n\t\t}\n\t\treturn this.objectWithoutPropertiesHelper;\n\t}\n};\n","export const matrix = {\n\tchrome: {\n\t\t 48: 0b01001010100011001101,\n\t\t 49: 0b01001111100111111111,\n\t\t 50: 0b01011111100111111111,\n\t\t 51: 0b01011111100111111111,\n\t\t 52: 0b01111111100111111111,\n\t\t 53: 0b01111111100111111111,\n\t\t 54: 0b01111111100111111111,\n\t\t 55: 0b01111111100111111111,\n\t\t 56: 0b01111111100111111111,\n\t\t 57: 0b01111111100111111111,\n\t\t 58: 0b11111111100111111111,\n\t\t 59: 0b11111111100111111111,\n\t\t 60: 0b11111111100111111111,\n\t\t 61: 0b11111111100111111111,\n\t\t 62: 0b11111111100111111111,\n\t\t 63: 0b11111111100111111111\n\t},\n\tfirefox: {\n\t\t 43: 0b01001111100011011101,\n\t\t 44: 0b01001111100111011101,\n\t\t 45: 0b01001111100111011111,\n\t\t 46: 0b01011111100111011111,\n\t\t 47: 0b01011111100111111111,\n\t\t 48: 0b01011111100111111111,\n\t\t 49: 0b01011110100111111111,\n\t\t 50: 0b01011110100111111111,\n\t\t 51: 0b01011110100111111111,\n\t\t 52: 0b11111111100111111111,\n\t\t 53: 0b11111111100111111111,\n\t\t 54: 0b11111111100111111111,\n\t\t 55: 0b11111111100111111111,\n\t\t 56: 0b11111111100111111111,\n\t\t 57: 0b11111111100111111111,\n\t\t 58: 0b11111111100111111111\n\t},\n\tsafari: {\n\t\t 8: 0b01000000000000000100,\n\t\t 9: 0b01001001100001101110,\n\t\t 10: 0b11011111100111111111,\n\t\t'10.1': 0b11111111100111111111,\n\t\t 11: 0b11111111100111111111\n\t},\n\tie: {\n\t\t 8: 0b00000000000000000000,\n\t\t 9: 0b01000000000000000000,\n\t\t 10: 0b01000000000000000000,\n\t\t 11: 0b01000000000100000000\n\t},\n\tedge: {\n\t\t 12: 0b01001010100101001101,\n\t\t 13: 0b01011110100111001111,\n\t\t 14: 0b11111110100111111111,\n\t\t 15: 0b11111110100111111111,\n\t\t 16: 0b11111110100111111111\n\t},\n\tnode: {\n\t\t'0.10': 0b01000000000000000000,\n\t\t'0.12': 0b01000000000001000000,\n\t\t 4: 0b01001000100011001111,\n\t\t 5: 0b01001000100011001111,\n\t\t 6: 0b01011111100111111111,\n\t\t 8: 0b11111111100111111111,\n\t\t '8.3': 0b11111111100111111111,\n\t\t '8.7': 0b11111111100111111111\n\t}\n};\n\nexport const features = [\n\t'arrow',\n\t'classes',\n\t'computedProperty',\n\t'conciseMethodProperty',\n\t'defaultParameter',\n\t'destructuring',\n\t'forOf',\n\t'generator',\n\t'letConst',\n\t'moduleExport',\n\t'moduleImport',\n\t'numericLiteral',\n\t'parameterDestructuring',\n\t'spreadRest',\n\t'stickyRegExp',\n\t'templateString',\n\t'unicodeRegExp',\n\n\t// ES2016\n\t'exponentiation',\n\n\t// additional transforms, not from\n\t// https://featuretests.io\n\t'reservedProperties',\n\n\t'trailingFunctionCommas'\n];\n","import * as acorn from 'acorn';\nimport acornJsx from 'acorn-jsx/inject';\nimport acornDynamicImport from 'acorn-dynamic-import/lib/inject';\nimport Program from './program/Program.js';\nimport { features, matrix } from './support.js';\nimport getSnippet from './utils/getSnippet.js';\n\nconst { parse } = [acornJsx, acornDynamicImport].reduce(\n\t(final, plugin) => plugin(final),\n\tacorn\n);\n\nconst dangerousTransforms = ['dangerousTaggedTemplateString', 'dangerousForOf'];\n\nexport function target(target) {\n\tconst targets = Object.keys(target);\n\tlet bitmask = targets.length\n\t\t? 0b11111111111111111111\n\t\t: 0b01000000000000000000;\n\n\tObject.keys(target).forEach(environment => {\n\t\tconst versions = matrix[environment];\n\t\tif (!versions)\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown environment '${environment}'. Please raise an issue at https://github.com/Rich-Harris/buble/issues`\n\t\t\t);\n\n\t\tconst targetVersion = target[environment];\n\t\tif (!(targetVersion in versions))\n\t\t\tthrow new Error(\n\t\t\t\t`Support data exists for the following versions of ${environment}: ${Object.keys(\n\t\t\t\t\tversions\n\t\t\t\t).join(\n\t\t\t\t\t', '\n\t\t\t\t)}. Please raise an issue at https://github.com/Rich-Harris/buble/issues`\n\t\t\t);\n\t\tconst support = versions[targetVersion];\n\n\t\tbitmask &= support;\n\t});\n\n\tlet transforms = Object.create(null);\n\tfeatures.forEach((name, i) => {\n\t\ttransforms[name] = !(bitmask & (1 << i));\n\t});\n\n\tdangerousTransforms.forEach(name => {\n\t\ttransforms[name] = false;\n\t});\n\n\treturn transforms;\n}\n\nexport function transform(source, options = {}) {\n\tlet ast;\n\tlet jsx = null;\n\n\ttry {\n\t\tast = parse(source, {\n\t\t\tecmaVersion: 9,\n\t\t\tpreserveParens: true,\n\t\t\tsourceType: 'module',\n\t\t\tonComment: (block, text) => {\n\t\t\t\tif (!jsx) {\n\t\t\t\t\tlet match = /@jsx\\s+([^\\s]+)/.exec(text);\n\t\t\t\t\tif (match) jsx = match[1];\n\t\t\t\t}\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\tjsx: true,\n\t\t\t\tdynamicImport: true\n\t\t\t}\n\t\t});\n\t\toptions.jsx = jsx || options.jsx;\n\t} catch (err) {\n\t\terr.snippet = getSnippet(source, err.loc);\n\t\terr.toString = () => `${err.name}: ${err.message}\\n${err.snippet}`;\n\t\tthrow err;\n\t}\n\n\tlet transforms = target(options.target || {});\n\tObject.keys(options.transforms || {}).forEach(name => {\n\t\tif (name === 'modules') {\n\t\t\tif (!('moduleImport' in options.transforms))\n\t\t\t\ttransforms.moduleImport = options.transforms.modules;\n\t\t\tif (!('moduleExport' in options.transforms))\n\t\t\t\ttransforms.moduleExport = options.transforms.modules;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!(name in transforms)) throw new Error(`Unknown transform '${name}'`);\n\t\ttransforms[name] = options.transforms[name];\n\t});\n\n\treturn new Program(source, ast, transforms, options).export(options);\n}\n\nexport { version as VERSION } from '../package.json';\n"],"names":["acorn","XHTMLEntities","let","const","ref","start","alias","identifier","element","fn","containsNewLine","global","define","this","canonicalProperties","propertyAliases","propertyToValueAliases","require$$0","require$$1","ESCAPE_SETS","require","property","unicodeMatchPropertyValue","unicodeMatchProperty","value","rewritePattern","i","prop","propId","c","parenthesise","acornJsx"],"mappings":"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AChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,MAAM;EACN,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,MAAM;EACN,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACN,CAAC;CACF,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,IAAI,CAAC;CACd,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE,IAAI,CAAC;CACd,CAAC,MAAM,EAAE;EACR,IAAI;EACJ,IAAI;EACJ,CAAC;CACF,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,KAAK,CAAC;CACf,CAAC,MAAM,EAAE,KAAK,CAAC;CACf,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,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"}
\No newline at end of file