UNPKG

astexplorer.app

Version:

https://astexplorer.net with ES Modules support and Hot Reloading

1 lines 7.62 MB
(window.webpackJsonp=window.webpackJsonp||[]).push([[19,87,90],{"./node_modules/@babel/parser/lib/index.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, \'__esModule\', { value: true });\n\nclass Position {\n constructor(line, col, index) {\n this.line = void 0;\n this.column = void 0;\n this.index = void 0;\n this.line = line;\n this.column = col;\n indexes.set(this, index);\n }\n\n}\nclass SourceLocation {\n constructor(start, end) {\n this.start = void 0;\n this.end = void 0;\n this.filename = void 0;\n this.identifierName = void 0;\n this.start = start;\n this.end = end;\n }\n\n}\nconst indexes = new WeakMap();\nfunction createPositionWithColumnOffset(position, columnOffset) {\n const {\n line,\n column\n } = position;\n return new Position(line, column + columnOffset, indexes.get(position) + columnOffset);\n}\n\nclass BaseParser {\n constructor() {\n this.sawUnambiguousESM = false;\n this.ambiguousScriptDifferentAst = false;\n }\n\n hasPlugin(pluginConfig) {\n if (typeof pluginConfig === "string") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n\n const actualOptions = this.plugins.get(pluginName);\n\n for (const key of Object.keys(pluginOptions)) {\n if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n getPluginOption(plugin, name) {\n var _this$plugins$get;\n\n return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];\n }\n\n}\n\nfunction setTrailingComments(node, comments) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\n\nfunction setLeadingComments(node, comments) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\n\nfunction setInnerComments(node, comments) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\n\nfunction adjustInnerComments(node, elements, commentWS) {\n let lastElement = null;\n let i = elements.length;\n\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nclass CommentsParser extends BaseParser {\n addComment(comment) {\n if (this.filename) comment.loc.filename = this.filename;\n this.state.comments.push(comment);\n }\n\n processComment(node) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n const {\n start: nodeStart\n } = node;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n\n if (commentEnd > nodeStart) {\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n\n break;\n }\n }\n }\n\n finalizeComment(commentWS) {\n const {\n comments\n } = commentWS;\n\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n const {\n containingNode: node,\n start: commentStart\n } = commentWS;\n\n if (this.input.charCodeAt(commentStart - 1) === 44) {\n switch (node.type) {\n case "ObjectExpression":\n case "ObjectPattern":\n case "RecordExpression":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n\n case "CallExpression":\n case "OptionalCallExpression":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n\n case "FunctionDeclaration":\n case "FunctionExpression":\n case "ArrowFunctionExpression":\n case "ObjectMethod":\n case "ClassMethod":\n case "ClassPrivateMethod":\n adjustInnerComments(node, node.params, commentWS);\n break;\n\n case "ArrayExpression":\n case "ArrayPattern":\n case "TupleExpression":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n\n case "ExportNamedDeclaration":\n case "ImportDeclaration":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n\n default:\n {\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n\n finalizeRemainingComments() {\n const {\n commentStack\n } = this.state;\n\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n\n this.state.commentStack = [];\n }\n\n resetPreviousNodeTrailingComments(node) {\n const {\n commentStack\n } = this.state;\n const {\n length\n } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n\n takeSurroundingComments(node, start, end) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n\n}\n\nconst ErrorCodes = Object.freeze({\n SyntaxError: "BABEL_PARSER_SYNTAX_ERROR",\n SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"\n});\n\nconst ErrorMessages = makeErrorTemplates({\n AccessorIsGenerator: "A %0ter cannot be a generator.",\n ArgumentsInClass: "\'arguments\' is only allowed in functions and class methods.",\n AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",\n AwaitBindingIdentifier: "Can not use \'await\' as identifier inside an async function.",\n AwaitBindingIdentifierInStaticBlock: "Can not use \'await\' as identifier inside a static block.",\n AwaitExpressionFormalParameter: "\'await\' is not allowed in async function parameters.",\n AwaitNotInAsyncContext: "\'await\' is only allowed within async functions and at the top levels of modules.",\n AwaitNotInAsyncFunction: "\'await\' is only allowed within async functions.",\n BadGetterArity: "A \'get\' accesor must not have any formal parameters.",\n BadSetterArity: "A \'set\' accesor must have exactly one formal parameter.",\n BadSetterRestParameter: "A \'set\' accesor function argument must not be a rest parameter.",\n ConstructorClassField: "Classes may not have a field named \'constructor\'.",\n ConstructorClassPrivateField: "Classes may not have a private field named \'#constructor\'.",\n ConstructorIsAccessor: "Class constructor may not be an accessor.",\n ConstructorIsAsync: "Constructor can\'t be an async function.",\n ConstructorIsGenerator: "Constructor can\'t be a generator.",\n DeclarationMissingInitializer: "\'%0\' require an initialization value.",\n DecoratorBeforeExport: "Decorators must be placed *before* the \'export\' keyword. You can set the \'decoratorsBeforeExport\' option to false to use the \'export @decorator class {}\' syntax.",\n DecoratorConstructor: "Decorators can\'t be used with a constructor. Did you mean \'@dec class { ... }\'?",\n DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.",\n DecoratorSemicolon: "Decorators must not be followed by a semicolon.",\n DecoratorStaticBlock: "Decorators can\'t be used with a static block.",\n DeletePrivateField: "Deleting a private field is not allowed.",\n DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",\n DuplicateConstructor: "Duplicate constructor in the same class.",\n DuplicateDefaultExport: "Only one default export allowed per module.",\n DuplicateExport: "`%0` has already been exported. Exported identifiers must be unique.",\n DuplicateProto: "Redefinition of __proto__ property.",\n DuplicateRegExpFlags: "Duplicate regular expression flag.",\n ElementAfterRest: "Rest element must be last element.",\n EscapedCharNotAnIdentifier: "Invalid Unicode escape.",\n ExportBindingIsString: "A string literal cannot be used as an exported binding without `from`.\\n- Did you mean `export { \'%0\' as \'%1\' } from \'some-module\'`?",\n ExportDefaultFromAsIdentifier: "\'from\' is not allowed as an identifier after \'export default\'.",\n ForInOfLoopInitializer: "\'%0\' loop variable declaration may not have an initializer.",\n ForOfAsync: "The left-hand side of a for-of loop may not be \'async\'.",\n ForOfLet: "The left-hand side of a for-of loop may not start with \'let\'.",\n GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",\n IllegalBreakContinue: "Unsyntactic %0.",\n IllegalLanguageModeDirective: "Illegal \'use strict\' directive in function with non-simple parameter list.",\n IllegalReturn: "\'return\' outside of function.",\n ImportBindingIsString: \'A string literal cannot be used as an imported binding.\\n- Did you mean `import { "%0" as foo }`?\',\n ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",\n ImportCallArity: "`import()` requires exactly %0.",\n ImportCallNotNewExpression: "Cannot use new with import(...).",\n ImportCallSpreadArgument: "`...` is not allowed in `import()`.",\n InvalidBigIntLiteral: "Invalid BigIntLiteral.",\n InvalidCodePoint: "Code point out of bounds.",\n InvalidCoverInitializedName: "Invalid shorthand property initializer.",\n InvalidDecimal: "Invalid decimal.",\n InvalidDigit: "Expected number in radix %0.",\n InvalidEscapeSequence: "Bad character escape sequence.",\n InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",\n InvalidEscapedReservedWord: "Escape sequence in keyword %0.",\n InvalidIdentifier: "Invalid identifier %0.",\n InvalidLhs: "Invalid left-hand side in %0.",\n InvalidLhsBinding: "Binding invalid left-hand side in %0.",\n InvalidNumber: "Invalid number.",\n InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the \'e\'.",\n InvalidOrUnexpectedToken: "Unexpected character \'%0\'.",\n InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",\n InvalidPrivateFieldResolution: "Private name #%0 is not defined.",\n InvalidPropertyBindingPattern: "Binding member expression.",\n InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",\n InvalidRestAssignmentPattern: "Invalid rest operator\'s argument.",\n LabelRedeclaration: "Label \'%0\' is already declared.",\n LetInLexicalBinding: "\'let\' is not allowed to be used as a name in \'let\' or \'const\' declarations.",\n LineTerminatorBeforeArrow: "No line break is allowed before \'=>\'.",\n MalformedRegExpFlags: "Invalid regular expression flag.",\n MissingClassName: "A class name is required.",\n MissingEqInAssignment: "Only \'=\' operator can be used for specifying default value.",\n MissingSemicolon: "Missing semicolon.",\n MissingUnicodeEscape: "Expecting Unicode escape sequence \\\\uXXXX.",\n MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",\n ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",\n ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",\n ModuleAttributesWithDuplicateKeys: \'Duplicate key "%0" is not allowed in module attributes.\',\n ModuleExportNameHasLoneSurrogate: "An export name cannot include a lone surrogate, found \'\\\\u%0\'.",\n ModuleExportUndefined: "Export \'%0\' is not defined.",\n MultipleDefaultsInSwitch: "Multiple default clauses.",\n NewlineAfterThrow: "Illegal newline after throw.",\n NoCatchOrFinally: "Missing catch or finally clause.",\n NumberIdentifier: "Identifier directly after number.",\n NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",\n ObsoleteAwaitStar: "\'await*\' has been removed from the async functions proposal. Use Promise.all() instead.",\n OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",\n OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",\n OverrideOnConstructor: "\'override\' modifier cannot appear on a constructor declaration.",\n ParamDupe: "Argument name clash.",\n PatternHasAccessor: "Object pattern can\'t contain getter or setter.",\n PatternHasMethod: "Object pattern can\'t contain methods.",\n PipeBodyIsTighter: "Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",\n PipeTopicRequiresHackPipes: \'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.\',\n PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",\n PipeTopicUnconfiguredToken: \'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "%0" }.\',\n PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",\n PipeUnparenthesizedBody: "Hack-style pipe body cannot be an unparenthesized %0 expression; please wrap it in parentheses.",\n PipelineBodyNoArrow: \'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.\',\n PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",\n PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",\n PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",\n PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",\n PrimaryTopicRequiresSmartPipeline: \'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.\',\n PrivateInExpectedIn: "Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).",\n PrivateNameRedeclaration: "Duplicate private name #%0.",\n RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with \'|}\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with \'{|\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with \'#{\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'hash\'.",\n RecordNoProto: "\'__proto__\' is not allowed in Record expressions.",\n RestTrailingComma: "Unexpected trailing comma after rest element.",\n SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",\n StaticPrototype: "Classes may not have static property named prototype.",\n StrictDelete: "Deleting local variable in strict mode.",\n StrictEvalArguments: "Assigning to \'%0\' in strict mode.",\n StrictEvalArgumentsBinding: "Binding \'%0\' in strict mode.",\n StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",\n StrictNumericEscape: "The only valid numeric escape in strict mode is \'\\\\0\'.",\n StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",\n StrictWith: "\'with\' in strict mode.",\n SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name (\'constructor\') or not extending another class?",\n SuperPrivateField: "Private fields can\'t be accessed on super.",\n TrailingDecorator: "Decorators must be attached to a class element.",\n TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with \'|]\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with \'[|\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with \'#[\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'hash\'.",\n UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",\n UnexpectedAwaitAfterPipelineBody: \'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.\',\n UnexpectedDigitAfterHash: "Unexpected digit after hash token.",\n UnexpectedImportExport: "\'import\' and \'export\' may only appear at the top level.",\n UnexpectedKeyword: "Unexpected keyword \'%0\'.",\n UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",\n UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",\n UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",\n UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",\n UnexpectedPrivateField: "Unexpected private name.",\n UnexpectedReservedWord: "Unexpected reserved word \'%0\'.",\n UnexpectedSuper: "\'super\' is only allowed in object methods and classes.",\n UnexpectedToken: "Unexpected token \'%0\'.",\n UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",\n UnsupportedBind: "Binding should be performed on object property.",\n UnsupportedDecoratorExport: "A decorated export must export a class declaration.",\n UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",\n UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",\n UnsupportedMetaProperty: "The only valid meta property for %0 is %0.%1.",\n UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",\n UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",\n UnsupportedSuper: "\'super\' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",\n UnterminatedComment: "Unterminated comment.",\n UnterminatedRegExp: "Unterminated regular expression.",\n UnterminatedString: "Unterminated string constant.",\n UnterminatedTemplate: "Unterminated template.",\n VarRedeclaration: "Identifier \'%0\' has already been declared.",\n YieldBindingIdentifier: "Can not use \'yield\' as identifier inside a generator.",\n YieldInParameter: "Yield expression is not allowed in formal parameters.",\n ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."\n}, ErrorCodes.SyntaxError);\nconst SourceTypeModuleErrorMessages = makeErrorTemplates({\n ImportMetaOutsideModule: `import.meta may appear only with \'sourceType: "module"\'`,\n ImportOutsideModule: `\'import\' and \'export\' may appear only with \'sourceType: "module"\'`\n}, ErrorCodes.SourceTypeModuleError);\n\nfunction keepReasonCodeCompat(reasonCode, syntaxPlugin) {\n {\n if (syntaxPlugin === "flow" && reasonCode === "PatternIsOptional") {\n return "OptionalBindingPattern";\n }\n }\n return reasonCode;\n}\n\nfunction makeErrorTemplates(messages, code, syntaxPlugin) {\n const templates = {};\n Object.keys(messages).forEach(reasonCode => {\n templates[reasonCode] = Object.freeze({\n code,\n reasonCode: keepReasonCodeCompat(reasonCode, syntaxPlugin),\n template: messages[reasonCode]\n });\n });\n return Object.freeze(templates);\n}\nclass ParserError extends CommentsParser {\n raise({\n code,\n reasonCode,\n template\n }, origin, ...params) {\n return this.raiseWithData(origin.node ? origin.node.loc.start : origin.at, {\n code,\n reasonCode\n }, template, ...params);\n }\n\n raiseOverwrite(loc, {\n code,\n template\n }, ...params) {\n const pos = indexes.get(loc);\n const message = template.replace(/%(\\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;\n\n if (this.options.errorRecovery) {\n const errors = this.state.errors;\n\n for (let i = errors.length - 1; i >= 0; i--) {\n const error = errors[i];\n\n if (error.pos === pos) {\n return Object.assign(error, {\n message\n });\n } else if (error.pos < pos) {\n break;\n }\n }\n }\n\n return this._raise({\n code,\n loc,\n pos\n }, message);\n }\n\n raiseWithData(loc, data, errorTemplate, ...params) {\n const pos = indexes.get(loc);\n const message = errorTemplate.replace(/%(\\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;\n return this._raise(Object.assign({\n loc,\n pos\n }, data), message);\n }\n\n _raise(errorContext, message) {\n const err = new SyntaxError(message);\n Object.assign(err, errorContext);\n\n if (this.options.errorRecovery) {\n if (!this.isLookahead) this.state.errors.push(err);\n return err;\n } else {\n throw err;\n }\n }\n\n}\n\nvar estree = (superClass => class extends superClass {\n parseRegExpLiteral({\n pattern,\n flags\n }) {\n let regex = null;\n\n try {\n regex = new RegExp(pattern, flags);\n } catch (e) {}\n\n const node = this.estreeParseLiteral(regex);\n node.regex = {\n pattern,\n flags\n };\n return node;\n }\n\n parseBigIntLiteral(value) {\n let bigInt;\n\n try {\n bigInt = BigInt(value);\n } catch (_unused) {\n bigInt = null;\n }\n\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n return node;\n }\n\n parseDecimalLiteral(value) {\n const decimal = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n return node;\n }\n\n estreeParseLiteral(value) {\n return this.parseLiteral(value, "Literal");\n }\n\n parseStringLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n parseNumericLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n parseNullLiteral() {\n return this.estreeParseLiteral(null);\n }\n\n parseBooleanLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n\n directiveToStmt(directive) {\n const directiveLiteral = directive.value;\n const stmt = this.startNodeAt(directive.start, directive.loc.start);\n const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start);\n expression.value = directiveLiteral.extra.expressionValue;\n expression.raw = directiveLiteral.extra.raw;\n stmt.expression = this.finishNodeAt(expression, "Literal", directiveLiteral.loc.end);\n stmt.directive = directiveLiteral.extra.raw.slice(1, -1);\n return this.finishNodeAt(stmt, "ExpressionStatement", directive.loc.end);\n }\n\n initFunction(node, isAsync) {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node) {\n if (node != null && this.isObjectProperty(node)) {\n this.checkDeclaration(node.value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n getObjectOrClassMethodParams(method) {\n return method.value.params;\n }\n\n isValidDirective(stmt) {\n var _stmt$expression$extr;\n\n return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);\n }\n\n parseBlockBody(node, ...args) {\n super.parseBlockBody(node, ...args);\n const directiveStatements = node.directives.map(d => this.directiveToStmt(d));\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);\n\n if (method.typeParameters) {\n method.value.typeParameters = method.typeParameters;\n delete method.typeParameters;\n }\n\n classBody.body.push(method);\n }\n\n parsePrivateName() {\n const node = super.parsePrivateName();\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n\n convertPrivateNameToPrivateIdentifier(node) {\n const name = super.getPrivateNameSV(node);\n node = node;\n delete node.id;\n node.name = name;\n node.type = "PrivateIdentifier";\n return node;\n }\n\n isPrivateName(node) {\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return super.isPrivateName(node);\n }\n }\n return node.type === "PrivateIdentifier";\n }\n\n getPrivateNameSV(node) {\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return super.getPrivateNameSV(node);\n }\n }\n return node.name;\n }\n\n parseLiteral(value, type) {\n const node = super.parseLiteral(value, type);\n node.raw = node.extra.raw;\n delete node.extra;\n return node;\n }\n\n parseFunctionBody(node, allowExpression, isMethod = false) {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== "BlockStatement";\n }\n\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n let funcNode = this.startNode();\n funcNode.kind = node.kind;\n funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n funcNode.type = "FunctionExpression";\n delete funcNode.kind;\n node.value = funcNode;\n\n if (type === "ClassPrivateMethod") {\n node.computed = false;\n }\n\n type = "MethodDefinition";\n return this.finishNode(node, type);\n }\n\n parseClassProperty(...args) {\n const propertyNode = super.parseClassProperty(...args);\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return propertyNode;\n }\n }\n propertyNode.type = "PropertyDefinition";\n return propertyNode;\n }\n\n parseClassPrivateProperty(...args) {\n const propertyNode = super.parseClassPrivateProperty(...args);\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return propertyNode;\n }\n }\n propertyNode.type = "PropertyDefinition";\n propertyNode.computed = false;\n return propertyNode;\n }\n\n parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);\n\n if (node) {\n node.type = "Property";\n if (node.kind === "method") node.kind = "init";\n node.shorthand = false;\n }\n\n return node;\n }\n\n parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);\n\n if (node) {\n node.kind = "init";\n node.type = "Property";\n }\n\n return node;\n }\n\n isAssignable(node, isBinding) {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n\n return super.isAssignable(node, isBinding);\n }\n\n toAssignable(node, isLHS = false) {\n if (node != null && this.isObjectProperty(node)) {\n this.toAssignable(node.value, isLHS);\n return node;\n }\n\n return super.toAssignable(node, isLHS);\n }\n\n toAssignableObjectExpressionProp(prop, ...args) {\n if (prop.kind === "get" || prop.kind === "set") {\n this.raise(ErrorMessages.PatternHasAccessor, {\n node: prop.key\n });\n } else if (prop.method) {\n this.raise(ErrorMessages.PatternHasMethod, {\n node: prop.key\n });\n } else {\n super.toAssignableObjectExpressionProp(prop, ...args);\n }\n }\n\n finishCallExpression(node, optional) {\n super.finishCallExpression(node, optional);\n\n if (node.callee.type === "Import") {\n node.type = "ImportExpression";\n node.source = node.arguments[0];\n\n if (this.hasPlugin("importAssertions")) {\n var _node$arguments$;\n\n node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;\n }\n\n delete node.arguments;\n delete node.callee;\n }\n\n return node;\n }\n\n toReferencedArguments(node) {\n if (node.type === "ImportExpression") {\n return;\n }\n\n super.toReferencedArguments(node);\n }\n\n parseExport(node) {\n super.parseExport(node);\n\n switch (node.type) {\n case "ExportAllDeclaration":\n node.exported = null;\n break;\n\n case "ExportNamedDeclaration":\n if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {\n node.type = "ExportAllDeclaration";\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n\n break;\n }\n\n return node;\n }\n\n parseSubscript(base, startPos, startLoc, noCalls, state) {\n const node = super.parseSubscript(base, startPos, startLoc, noCalls, state);\n\n if (state.optionalChainMember) {\n if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {\n node.type = node.type.substring(8);\n }\n\n if (state.stop) {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNode(chain, "ChainExpression");\n }\n } else if (node.type === "MemberExpression" || node.type === "CallExpression") {\n node.optional = false;\n }\n\n return node;\n }\n\n hasPropertyAsPrivateName(node) {\n if (node.type === "ChainExpression") {\n node = node.expression;\n }\n\n return super.hasPropertyAsPrivateName(node);\n }\n\n isOptionalChain(node) {\n return node.type === "ChainExpression";\n }\n\n isObjectProperty(node) {\n return node.type === "Property" && node.kind === "init" && !node.method;\n }\n\n isObjectMethod(node) {\n return node.method || node.kind === "get" || node.kind === "set";\n }\n\n});\n\nclass TokContext {\n constructor(token, preserveSpace) {\n this.token = void 0;\n this.preserveSpace = void 0;\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n\n}\nconst types = {\n brace: new TokContext("{"),\n j_oTag: new TokContext("<tag"),\n j_cTag: new TokContext("</tag"),\n j_expr: new TokContext("<tag>...</tag>", true)\n};\n{\n types.template = new TokContext("`", true);\n}\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\nclass ExportedTokenType {\n constructor(label, conf = {}) {\n this.label = void 0;\n this.keyword = void 0;\n this.beforeExpr = void 0;\n this.startsExpr = void 0;\n this.rightAssociative = void 0;\n this.isLoop = void 0;\n this.isAssign = void 0;\n this.prefix = void 0;\n this.postfix = void 0;\n this.binop = void 0;\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n {\n this.updateContext = null;\n }\n }\n\n}\nconst keywords$1 = new Map();\n\nfunction createKeyword(name, options = {}) {\n options.keyword = name;\n const token = createToken(name, options);\n keywords$1.set(name, token);\n return token;\n}\n\nfunction createBinop(name, binop) {\n return createToken(name, {\n beforeExpr,\n binop\n });\n}\n\nlet tokenTypeCounter = -1;\nconst tokenTypes = [];\nconst tokenLabels = [];\nconst tokenBinops = [];\nconst tokenBeforeExprs = [];\nconst tokenStartsExprs = [];\nconst tokenPrefixes = [];\n\nfunction createToken(name, options = {}) {\n var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;\n\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);\n tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);\n tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);\n tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);\n tokenTypes.push(new ExportedTokenType(name, options));\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(name, options = {}) {\n var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;\n\n ++tokenTypeCounter;\n keywords$1.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);\n tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);\n tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);\n tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);\n tokenTypes.push(new ExportedTokenType("name", options));\n return tokenTypeCounter;\n}\n\nconst tt = {\n bracketL: createToken("[", {\n beforeExpr,\n startsExpr\n }),\n bracketHashL: createToken("#[", {\n beforeExpr,\n startsExpr\n }),\n bracketBarL: createToken("[|", {\n beforeExpr,\n startsExpr\n }),\n bracketR: createToken("]"),\n bracketBarR: createToken("|]"),\n braceL: createToken("{", {\n beforeExpr,\n startsExpr\n }),\n braceBarL: createToken("{|", {\n beforeExpr,\n startsExpr\n }),\n braceHashL: createToken("#{", {\n beforeExpr,\n startsExpr\n }),\n braceR: createToken("}", {\n beforeExpr\n }),\n braceBarR: createToken("|}"),\n parenL: createToken("(", {\n beforeExpr,\n startsExpr\n }),\n parenR: createToken(")"),\n comma: createToken(",", {\n beforeExpr\n }),\n semi: createToken(";", {\n beforeExpr\n }),\n colon: createToken(":", {\n beforeExpr\n }),\n doubleColon: createToken("::", {\n beforeExpr\n }),\n dot: createToken("."),\n question: createToken("?", {\n beforeExpr\n }),\n questionDot: createToken("?."),\n arrow: createToken("=>", {\n beforeExpr\n }),\n template: createToken("template"),\n ellipsis: createToken("...", {\n beforeExpr\n }),\n backQuote: createToken("`", {\n startsExpr\n }),\n dollarBraceL: createToken("${", {\n beforeExpr,\n startsExpr\n }),\n templateTail: createToken("...`", {\n startsExpr\n }),\n templateNonTail: createToken("...${", {\n beforeExpr,\n startsExpr\n }),\n at: createToken("@"),\n hash: createToken("#", {\n startsExpr\n }),\n interpreterDirective: createToken("#!..."),\n eq: createToken("=", {\n beforeExpr,\n isAssign\n }),\n assign: createToken("_=", {\n beforeExpr,\n isAssign\n }),\n slashAssign: createToken("_=", {\n beforeExpr,\n isAssign\n }),\n xorAssign: createToken("_=", {\n beforeExpr,\n isAssign\n }),\n moduloAssign: createToken("_=", {\n beforeExpr,\n isAssign\n }),\n incDec: createToken("++/--", {\n prefix,\n postfix,\n startsExpr\n }),\n bang: createToken("!", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n tilde: createToken("~", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n pipeline: createBinop("|>", 0),\n nullishCoalescing: createBinop("??", 1),\n logicalOR: createBinop("||", 1),\n logicalAND: createBinop("&&", 2),\n bitwiseOR: createBinop("|", 3),\n bitwiseXOR: createBinop("^", 4),\n bitwiseAND: createBinop("&", 5),\n equality: createBinop("==/!=/===/!==", 6),\n lt: createBinop("</>/<=/>=", 7),\n gt: createBinop("</>/<=/>=", 7),\n relational: createBinop("</>/<=/>=", 7),\n bitShift: createBinop("<</>>/>>>", 8),\n plusMin: createToken("+/-", {\n beforeExpr,\n binop: 9,\n prefix,\n startsExpr\n }),\n modulo: createToken("%", {\n binop: 10,\n startsExpr\n }),\n star: createToken("*", {\n binop: 10\n }),\n slash: createBinop("/", 10),\n exponent: createToken("**", {\n beforeExpr,\n binop: 11,\n rightAssociative: true\n }),\n _in: createKeyword("in", {\n beforeExpr,\n binop: 7\n }),\n _instanceof: createKeyword("instanceof", {\n beforeExpr,\n binop: 7\n }),\n _break: createKeyword("break"),\n _case: createKeyword("case", {\n beforeExpr\n }),\n _catch: createKeyword("catch"),\n _continue: createKeyword("continue"),\n _debugger: createKeyword("debugger"),\n _default: createKeyword("default", {\n beforeExpr\n }),\n _else: createKeyword("else", {\n beforeExpr\n }),\n _finally: createKeyword("finally"),\n _function: createKeyword("function", {\n startsExpr\n }),\n _if: createKeyword("if"),\n _return: createKeyword("return", {\n beforeExpr\n }),\n _switch: createKeyword("switch"),\n _throw: createKeyword("throw", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _try: createKeyword("try"),\n _var: createKeyword("var"),\n _const: createKeyword("const"),\n _with: createKeyword("with"),\n _new: createKeyword("new", {\n beforeExpr,\n startsExpr\n }),\n _this: createKeyword("this", {\n startsExpr\n }),\n _super: createKeyword("super", {\n startsExpr\n }),\n _class: createKeyword("class", {\n startsExpr\n }),\n _extends: createKeyword("extends", {\n beforeExpr\n }),\n _export: createKeyword("export"),\n _import: createKeyword("import", {\n startsExpr\n }),\n _null: createKeyword("null", {\n startsExpr\n }),\n _true: createKeyword("true", {\n startsExpr\n }),\n _false: createKeyword("false", {\n startsExpr\n }),\n _typeof: createKeyword("typeof", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _void: createKeyword("void", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _delete: createKeyword("delete", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _do: createKeyword("do", {\n isLoop,\n beforeExpr\n }),\n _for: createKeyword("for", {\n isLoop\n }),\n _while: createKeyword("while", {\n isLoop\n }),\n _as: createKeywordLike("as", {\n startsExpr\n }),\n _assert: createKeywordLike("assert", {\n startsExpr\n }),\n _async: createKeywordLike("async", {\n startsExpr\n }),\n _await: createKeywordLike("await", {\n startsExpr\n }),\n _from: createKeywordLike("from", {\n startsExpr\n }),\n _get: createKeywordLike("get", {\n startsExpr\n }),\n _let: createKeywordLike("let", {\n startsExpr\n }),\n _meta: createKeywordLike("meta", {\n startsExpr\n }),\n _of: createKeywordLike("of", {\n startsExpr\n }),\n _sent: createKeywordLike("sent", {\n startsExpr\n }),\n _set: createKeywordLike("set", {\n startsExpr\n }),\n _static: createKeywordLike("static", {\n startsExpr\n }),\n _yield: createKeywordLike("yield", {\n startsExpr\n }),\n _asserts: createKeywordLike("asserts", {\n startsExpr\n }),\n _checks: createKeywordLike("checks", {\n startsExpr\n }),\n _exports: createKeywordLike("exports", {\n startsExpr\n }),\n _global: createKeywordLike("global", {\n startsExpr\n }),\n _implements: createKeywordLike("implements", {\n startsExpr\n }),\n _intrinsic: createKeywordLike("intrinsic", {\n startsExpr\n }),\n _infer: createKeywordLike("infer", {\n startsExpr\n }),\n _is: createKeywordLike("is", {\n startsExpr\n }),\n _mixins: createKeywordLike("mixins", {\n startsExpr\n }),\n _proto: createKeywordLike("proto", {\n startsExpr\n }),\n _require: createKeywordLike("require", {\n startsExpr\n }),\n _keyof: createKeywordLike("keyof", {\n startsExpr\n }),\n _readonly: createKeywordLike("readonly", {\n startsExpr\n }),\n _unique: createKeywordLike("unique", {\n startsExpr\n }),\n _abstract: createKeywordLike("abstract", {\n startsExpr\n }),\n _declare: createKeywordLike("declare", {\n startsExpr\n }),\n _enum: createKeywordLike("enum", {\n startsExpr\n }),\n _module: createKeywordLike("module", {\n startsExpr\n }),\n _namespace: createKeywordLike("namespace", {\n startsExpr\n }),\n _interface: createKeywordLike("interface", {\n startsExpr\n }),\n _type: createKeywordLike("type", {\n startsExpr\n }),\n _opaque: createKeywordLike("opaque", {\n startsExpr\n }),\n name: createToken("name", {\n startsExpr\n }),\n string: createToken("string", {\n startsExpr\n }),\n num: createToken("num", {\n startsExpr\n }),\n bigint: createToken("bigint", {\n startsExpr\n }),\n decimal: createToken("decimal", {\n startsExpr\n }),\n regexp: createToken("regexp", {\n startsExpr\n }),\n privateName: createToken("#name", {\n startsExpr\n }),\n eof: createToken("eof"),\n jsxName: createToken("jsxName"),\n jsxText: createToken("jsxText", {\n beforeExpr: true\n }),\n jsxTagStart: createToken("jsxTagStart", {\n startsExpr: true\n }),\n jsxTagEnd: createToken("jsxTagEnd"),\n placeholder: createToken("%%", {\n startsExpr: true\n })\n};\nfunction tokenIsIdentifier(token) {\n return token >= 89 && token <= 124;\n}\nfunction tokenKeywordOrIdentifierIsKeyword(token) {\n return token <= 88;\n}\nfunction tokenIsKeywordOrIdentifier(token) {\n return token >= 54 && token <= 124;\n}\nfunction tokenIsLiteralPropertyName(token) {\n return token >= 54 && token <= 128;\n}\nfunction tokenComesBeforeExpression(token) {\n return tokenBeforeExprs[token];\n}\nfunction tokenCanStartExpression(token) {\n return tokenStartsExprs[token];\n}\nfunction tokenIsAssignment(token) {\n return token >= 29 && token <= 33;\n}\nfunction tokenIsFlowInterfaceOrTypeOrOpaque(token) {\n return token >= 121 && token <= 123;\n}\nfunction tokenIsLoop(token) {\n return token >= 86 && token <= 88;\n}\nfunction tokenIsKeyword(token) {\n return token >= 54 && token <= 88;\n}\nfunction tokenIsOperator(token) {\n return token >= 37 && token <= 55;\n}\nfunction tokenIsPostfix(token) {\n return token === 34;\n}\nfunction tokenIsPrefix(token) {\n return tokenPrefixes[token];\n}\nfunction tokenIsTSTypeOperator(token) {\n return token >= 113 && token <= 115;\n}\nfunction tokenIsTSDeclarationStart(token) {\n return token >= 116 && token <= 122;\n}\nfunction tokenLabelName(token) {\n return tokenLabels[token];\n}\nfunction tokenOperatorPrecedence(token) {\n return tokenBinops[token];\n}\nfunction tokenIsRightAssociative(token) {\n return token === 53;\n}\nfunction tokenIsTemplate(token) {\n return token >= 24 && token <= 25;\n}\nfunction getExportedToken(token) {\n return tokenTypes[token];\n}\n{\n tokenTypes[8].updateContext = context => {\n context.pop();\n };\n\n tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {\n context.push(types.brace);\n };\n\n tokenTypes[22].updateContext = context => {\n if (context[context.length - 1] === types.template) {\n context.pop();\n } else {\n context.push(types.template);\n }\n };\n\n tokenTypes[134].updateContext = context => {\n context.push(types.j_expr, types.j_oTag);\n };\n}\n\nlet nonASCIIidentifierStartChars = "\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua