@next-core/cook 2.3.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ExecutionContext.js +57 -12
- package/dist/cjs/ExecutionContext.js.map +1 -1
- package/dist/cjs/context-free.js +2 -0
- package/dist/cjs/context-free.js.map +1 -1
- package/dist/cjs/cook.js +136 -43
- package/dist/cjs/cook.js.map +1 -1
- package/dist/esm/ExecutionContext.js +56 -9
- package/dist/esm/ExecutionContext.js.map +1 -1
- package/dist/esm/context-free.js +2 -0
- package/dist/esm/context-free.js.map +1 -1
- package/dist/esm/cook.js +137 -44
- package/dist/esm/cook.js.map +1 -1
- package/dist/types/ExecutionContext.d.ts +27 -8
- package/dist/types/cook.d.ts +3 -1
- package/package.json +2 -2
package/dist/esm/cook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cook.js","names":["ApplyStringOrNumericAssignment","CreateListIteratorRecord","ApplyStringOrNumericBinaryOperator","GetV","GetValue","InitializeReferencedBinding","IsPropertyReference","LoopContinues","PutValue","RequireObjectCoercible","ToPropertyKey","UpdateEmpty","ApplyUnaryOperator","GetIdentifierReference","ForDeclarationBindingInstantiation","CopyDataProperties","CompletionRecord","DebuggerCall","DebuggerNode","DebuggerScope","DeclarativeEnvironment","ECMAScriptCode","Empty","Environment","ExecutionContext","FormalParameters","FunctionEnvironment","IsConstructor","NormalCompletion","ReferenceRecord","SourceNode","sanitize","isAllowedConstructor","collectBoundNames","collectScopedDeclarations","containsExpression","cook","rootAst","codeSource","_hooks$beforeEvaluate3","rules","debug","globalVariables","hooks","arguments","length","undefined","expressionOnly","type","rootEnv","rootContext","VariableEnvironment","LexicalEnvironment","executionContextStack","key","value","Object","entries","CreateImmutableBinding","InitializeBinding","TemplateMap","WeakMap","GetTemplateObject","templateLiteral","memo","get","rawObj","quasis","map","quasi","raw","template","cooked","freeze","defineProperty","writable","enumerable","configurable","set","currentNode","Evaluate","node","optionalChainRef","forceYield","_hooks$beforeEvaluate","_hooks$beforeBranch2","beforeEvaluate","call","endsWith","array","element","elements","spreadValues","argument","push","ThrowIfFunctionIsInvalid","closure","InstantiateArrowFunctionExpression","leftRef","left","leftValue","rightRef","right","Value","rightValue","operator","funcName","substring","start","end","TypeError","thisValue","Base","result","ref","callee","func","optional","skipped","EvaluateCall","expression","test","consequent","alternate","ResolveBinding","name","regex","SyntaxError","flags","includes","baseReference","object","baseValue","computed","EvaluatePropertyAccessWithExpressionKey","property","EvaluatePropertyAccessWithIdentifierKey","EvaluateNew","prop","properties","fromValue","Set","kind","propName","EvaluateComputedPropertyName","propValue","method","SetFunctionName","expr","expressions","chunks","index","val","String","join","tagRef","tag","tagFunc","deleteStatus","ReferenceName","lref","rval","IsAnonymousFunctionDefinition","NamedEvaluation","rref","DestructuringAssignmentEvaluation","lval","r","body","oldEnv","getRunningContext","blockEnv","BlockDeclarationInstantiation","blockValue","EvaluateStatementList","EvaluateBreakableStatement","DoWhileLoopEvaluation","ForInOfLoopEvaluation","ForLoopEvaluation","InstantiateOrdinaryFunctionExpression","_hooks$beforeBranch","beforeBranch","v","exprRef","lhs","oldValue","Number","newValue","prefix","discriminant","switchValue","cases","R","CaseBlockEvaluation","block","error","handler","_hooks$beforeEvaluate2","CatchClauseEvaluation","finalizer","F","Type","declarator","declarations","init","id","bindingId","rhs","BindingInitialization","WhileLoopEvaluation","env","thrownValue","param","catchEnv","argName","CreateMutableBinding","B","stmtResult","input","V","defaultCaseIndex","findIndex","switchCase","hasDefaultCase","A","slice","found","C","CaseClauseIsSelected","foundInB","clauseSelector","exprValue","isVariableDeclaration","lhsKind","uninitializedBoundNames","iterationKind","keyResult","ForInOfHeadEvaluation","ForInOfBodyEvaluation","runningContext","newEnv","iterator","EnumerateObjectProperties","stmt","iteratorRecord","destructuring","done","nextValue","next","lhsRef","iterationEnv","lhsName","status","return","innerResult","_node$init","ForBodyEvaluation","update","loopEnv","isConst","boundNames","dn","perIterationLets","Array","from","bodyResult","increment","perIterationBindings","CreatePerIterationEnvironment","testRef","testValue","incRef","lastIterationEnv","outer","OuterEnv","thisIterationEnv","bn","lastValue","GetBindingValue","pattern","PropertyDestructuringAssignmentEvaluation","IteratorDestructuringAssignmentEvaluation","excludedNames","valueTarget","defaultValue","add","KeyedDestructuringAssignmentEvaluation","RestDestructuringAssignmentEvaluation","propertyName","assignmentTarget","isObjectOrArray","rhsValue","restProperty","restObj","n","strict","propertyNameReference","propertyNameValue","propertyKey","identifier","propertyNameString","code","var","topLevel","d","IsConstantDeclaration","fn","fo","InstantiateFunctionObject","args","argList","ArgumentListEvaluation","debuggerCall","apply","constructExpr","constructor","constructorName","isArray","arg","CallFunction","_hooks$beforeCall","_currentNode","beforeCall","PrepareForOrdinaryCall","OrdinaryCallEvaluateBody","pop","calleeContext","Function","localEnv","EvaluateFunctionBody","FunctionDeclarationInstantiation","statements","s","Error","formals","parameterNames","hasParameterExpressions","varDeclarations","varNames","functionNames","functionsToInitialize","i","unshift","noVar","paramName","IteratorBindingInitialization","varEnv","initialValue","lexEnv","lexDeclarations","f","SetMutableBinding","scope","OrdinaryFunctionCreate","functionExpression","funcEnv","arrowFunction","sourceNode","isConstructor","unwind","defineProperties","params","environment","InitializeBoundName","PropertyBindingInitialization","RestBindingInitialization","KeyedBindingInitialization","P","bindingElement","isIdentifier","async","generator"],"sources":["../../src/cook.ts"],"sourcesContent":["import type {\n ArrayPattern,\n ArrowFunctionExpression,\n CallExpression,\n CatchClause,\n DoWhileStatement,\n Expression,\n ForInStatement,\n ForOfStatement,\n ForStatement,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n LVal,\n NewExpression,\n ObjectPattern,\n PatternLike,\n RestElement,\n Statement,\n SwitchCase,\n TemplateLiteral,\n VariableDeclaration,\n WhileStatement,\n} from \"@babel/types\";\nimport {\n ApplyStringOrNumericAssignment,\n CreateListIteratorRecord,\n ApplyStringOrNumericBinaryOperator,\n GetV,\n GetValue,\n InitializeReferencedBinding,\n IsPropertyReference,\n LoopContinues,\n PutValue,\n RequireObjectCoercible,\n ToPropertyKey,\n UpdateEmpty,\n ApplyUnaryOperator,\n GetIdentifierReference,\n ForDeclarationBindingInstantiation,\n CopyDataProperties,\n} from \"./context-free.js\";\nimport {\n CompletionRecord,\n DebuggerCall,\n DebuggerNode,\n DebuggerScope,\n DeclarativeEnvironment,\n ECMAScriptCode,\n Empty,\n Environment,\n EnvironmentRecord,\n ExecutionContext,\n FormalParameters,\n FunctionEnvironment,\n FunctionObject,\n IsConstructor,\n NormalCompletion,\n OptionalChainRef,\n ReferenceRecord,\n SourceNode,\n} from \"./ExecutionContext.js\";\nimport type {\n EstreeLVal,\n EstreeNode,\n EstreeObjectExpression,\n EstreeObjectPattern,\n EstreeProperty,\n CookRules,\n FunctionDefinition,\n} from \"./interfaces.js\";\nimport { sanitize, isAllowedConstructor } from \"./sanitize.js\";\nimport {\n collectBoundNames,\n collectScopedDeclarations,\n containsExpression,\n} from \"./traverse.js\";\n\nexport interface CookOptions {\n rules?: CookRules;\n globalVariables?: Record<string, unknown>;\n hooks?: CookHooks;\n debug?: boolean;\n}\n\nexport interface CookHooks {\n beforeEvaluate?(node: EstreeNode): void;\n beforeCall?(node: EstreeNode): void;\n beforeBranch?(node: EstreeNode, branch: \"if\" | \"else\"): void;\n}\n\ninterface EvaluateResult<T, TReturn> extends Iterator<T, TReturn> {\n [Symbol.iterator](): EvaluateResult<T, TReturn>;\n}\n\ntype CompletionRecordResult<T = unknown> = EvaluateResult<T, CompletionRecord>;\n\n/** For next-core internal usage only. */\nexport function cook(\n rootAst: FunctionDeclaration | Expression,\n codeSource: string,\n { rules, debug, globalVariables = {}, hooks = {} }: CookOptions = {}\n): unknown {\n const expressionOnly = rootAst.type !== \"FunctionDeclaration\";\n\n const rootEnv = new DeclarativeEnvironment(null);\n const rootContext = new ExecutionContext();\n rootContext.VariableEnvironment = rootEnv;\n rootContext.LexicalEnvironment = rootEnv;\n const executionContextStack = [rootContext];\n\n for (const [key, value] of Object.entries(globalVariables)) {\n rootEnv.CreateImmutableBinding(key, true);\n rootEnv.InitializeBinding(key, value);\n }\n\n const TemplateMap = new WeakMap<TemplateLiteral, string[]>();\n\n // https://tc39.es/ecma262/#sec-gettemplateobject\n function GetTemplateObject(templateLiteral: TemplateLiteral): string[] {\n const memo = TemplateMap.get(templateLiteral);\n if (memo) {\n return memo;\n }\n const rawObj = templateLiteral.quasis.map((quasi) => quasi.value.raw);\n const template = templateLiteral.quasis.map((quasi) => quasi.value.cooked!);\n Object.freeze(rawObj);\n Object.defineProperty(template, \"raw\", {\n value: rawObj,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n Object.freeze(template);\n TemplateMap.set(templateLiteral, template);\n return template;\n }\n\n let currentNode: EstreeNode | undefined;\n\n function* Evaluate(\n node: EstreeNode,\n optionalChainRef?: OptionalChainRef,\n forceYield?: boolean\n ): CompletionRecordResult {\n hooks.beforeEvaluate?.(node);\n currentNode = node;\n if (\n debug &&\n (forceYield ||\n (node.type.endsWith(\"Statement\") &&\n node.type !== \"TryStatement\" &&\n node.type !== \"BlockStatement\" &&\n node.type !== \"ForStatement\" &&\n node.type !== \"ForInStatement\" &&\n node.type !== \"ForOfStatement\"))\n ) {\n yield;\n }\n // Expressions:\n switch (node.type) {\n case \"ArrayExpression\": {\n // https://tc39.es/ecma262/#sec-array-initializer\n const array = [];\n for (const element of node.elements) {\n if (!element) {\n array.length += 1;\n } else if (element.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(element.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(element)));\n }\n }\n return NormalCompletion(array);\n }\n case \"ArrowFunctionExpression\": {\n // https://tc39.es/ecma262/#sec-arrow-function-definitions\n ThrowIfFunctionIsInvalid(node);\n const closure = InstantiateArrowFunctionExpression(node);\n return NormalCompletion(closure);\n }\n case \"BinaryExpression\": {\n const leftRef = yield* Evaluate(node.left);\n const leftValue = GetValue(leftRef);\n const rightRef = (yield* Evaluate(node.right)).Value;\n const rightValue = GetValue(rightRef);\n if (expressionOnly && (node.operator as unknown) === \"|>\") {\n // Minimal pipeline operator is supported only in expression-only mode.\n // See https://tc39.es/proposal-pipeline-operator\n // and https://github.com/tc39/proposal-pipeline-operator\n if (typeof rightValue !== \"function\") {\n const funcName = codeSource.substring(\n node.right.start!,\n node.right.end!\n );\n throw new TypeError(`${funcName} is not a function`);\n }\n let thisValue;\n if (rightRef instanceof ReferenceRecord) {\n if (IsPropertyReference(rightRef)) {\n thisValue = rightRef.Base;\n }\n }\n return NormalCompletion(\n (rightValue as unknown as Function).call(thisValue, leftValue)\n );\n }\n // https://tc39.es/ecma262/#sec-additive-operators\n const result = ApplyStringOrNumericBinaryOperator(\n leftValue as number,\n node.operator,\n rightValue as number\n );\n return NormalCompletion(result);\n }\n case \"CallExpression\": {\n // https://tc39.es/ecma262/#sec-function-calls\n const ref = (yield* Evaluate(node.callee, optionalChainRef))\n .Value as ReferenceRecord;\n const func = GetValue(ref) as Function;\n if (\n (func === undefined || func === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n sanitize(func);\n\n if (debug) yield;\n\n return yield* EvaluateCall(func, ref, node.arguments, node.callee);\n }\n case \"ChainExpression\":\n // https://tc39.es/ecma262/#sec-optional-chains\n return yield* Evaluate(node.expression, {});\n case \"ConditionalExpression\":\n // https://tc39.es/ecma262/#sec-conditional-operator\n return NormalCompletion(\n GetValue(\n yield* Evaluate(\n GetValue(yield* Evaluate(node.test))\n ? node.consequent\n : node.alternate\n )\n )\n );\n case \"Identifier\":\n // https://tc39.es/ecma262/#sec-identifiers\n return NormalCompletion(ResolveBinding(node.name));\n case \"Literal\": {\n // https://tc39.es/ecma262/#sec-primary-expression-literals\n if (node.regex) {\n if (node.value === null) {\n // Invalid regular expression fails silently in @babel/parser.\n throw new SyntaxError(`Invalid regular expression: ${node.raw}`);\n }\n if (node.regex.flags.includes(\"u\")) {\n // Currently unicode flag is not fully supported across major browsers.\n throw new SyntaxError(\n `Unsupported unicode flag in regular expression: ${node.raw}`\n );\n }\n }\n return NormalCompletion(node.value);\n }\n case \"LogicalExpression\": {\n // https://tc39.es/ecma262/#sec-binary-logical-operators\n const leftValue = GetValue(yield* Evaluate(node.left));\n switch (node.operator) {\n case \"&&\":\n return NormalCompletion(\n leftValue && GetValue(yield* Evaluate(node.right))\n );\n case \"||\":\n return NormalCompletion(\n leftValue || GetValue(yield* Evaluate(node.right))\n );\n case \"??\":\n return NormalCompletion(\n leftValue ?? GetValue(yield* Evaluate(node.right))\n );\n // istanbul ignore next\n default:\n throw new SyntaxError(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore never reach here.\n `Unsupported logical operator '${node.operator}'`\n );\n }\n }\n case \"MemberExpression\": {\n // https://tc39.es/ecma262/#sec-property-accessors\n const baseReference = (yield* Evaluate(node.object, optionalChainRef))\n .Value as ReferenceRecord;\n const baseValue = GetValue(baseReference) as Record<\n PropertyKey,\n unknown\n >;\n if (\n (baseValue === undefined || baseValue === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n sanitize(baseValue);\n const result = node.computed\n ? yield* EvaluatePropertyAccessWithExpressionKey(\n baseValue,\n node.property as Expression,\n true\n )\n : EvaluatePropertyAccessWithIdentifierKey(\n baseValue,\n node.property as Identifier,\n true\n );\n sanitize(result);\n return NormalCompletion(result);\n }\n case \"NewExpression\":\n // https://tc39.es/ecma262/#sec-new-operator\n return yield* EvaluateNew(node.callee, node.arguments);\n case \"ObjectExpression\": {\n // https://tc39.es/ecma262/#sec-object-initializer\n const object: Record<PropertyKey, unknown> = {};\n for (const prop of (node as EstreeObjectExpression).properties) {\n if (prop.type === \"SpreadElement\") {\n const fromValue = GetValue(yield* Evaluate(prop.argument));\n CopyDataProperties(object, fromValue, new Set());\n } else {\n if (prop.kind !== \"init\") {\n throw new SyntaxError(\"Unsupported object getter/setter\");\n }\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : yield* EvaluateComputedPropertyName(prop.key as Expression);\n if (propName === \"__proto__\") {\n throw new TypeError(\n \"Setting '__proto__' property is not allowed\"\n );\n }\n const propValue = GetValue(yield* Evaluate(prop.value));\n if (prop.method && typeof propValue === \"function\") {\n SetFunctionName(propValue as FunctionObject, propName as string);\n }\n object[propName] = propValue;\n }\n }\n return NormalCompletion(object);\n }\n case \"SequenceExpression\": {\n // https://tc39.es/ecma262/#sec-comma-operator\n let result: CompletionRecord | undefined;\n for (const expr of node.expressions) {\n result = NormalCompletion(GetValue(yield* Evaluate(expr)));\n }\n return result!;\n }\n case \"TemplateLiteral\": {\n // https://tc39.es/ecma262/#sec-template-literals\n const chunks: string[] = [node.quasis[0].value.cooked!];\n let index = 0;\n for (const expr of node.expressions) {\n const val = GetValue(yield* Evaluate(expr));\n chunks.push(String(val));\n chunks.push(node.quasis[(index += 1)].value.cooked!);\n }\n return NormalCompletion(chunks.join(\"\"));\n }\n case \"TaggedTemplateExpression\": {\n // https://tc39.es/ecma262/#sec-tagged-templates\n const tagRef = (yield* Evaluate(node.tag)).Value as ReferenceRecord;\n const tagFunc = GetValue(tagRef) as Function;\n sanitize(tagFunc);\n if (debug) yield;\n return yield* EvaluateCall(tagFunc, tagRef, node.quasi, node.tag);\n }\n case \"UnaryExpression\": {\n // https://tc39.es/ecma262/#sec-unary-operators\n const ref = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n if (!expressionOnly && node.operator === \"delete\") {\n // Delete operator is supported only in function mode.\n if (!(ref instanceof ReferenceRecord)) {\n return NormalCompletion(true);\n }\n // istanbul ignore else\n if (IsPropertyReference(ref)) {\n const deleteStatus = delete (\n ref.Base as Record<PropertyKey, unknown>\n )[ref.ReferenceName];\n return NormalCompletion(deleteStatus);\n }\n // Should never reach here in strict mode.\n }\n if (node.operator === \"typeof\") {\n if (ref instanceof ReferenceRecord && ref.Base === \"unresolvable\") {\n return NormalCompletion(\"undefined\");\n }\n return NormalCompletion(typeof GetValue(ref));\n }\n return NormalCompletion(\n ApplyUnaryOperator(GetValue(ref), node.operator)\n );\n }\n }\n if (!expressionOnly) {\n // Statements and assignments:\n switch (node.type) {\n case \"AssignmentExpression\": {\n // https://tc39.es/ecma262/#sec-assignment-operators\n if (node.operator === \"=\") {\n if (\n !(\n node.left.type === \"ArrayPattern\" ||\n node.left.type === \"ObjectPattern\"\n )\n ) {\n const lref = (yield* Evaluate(node.left))\n .Value as ReferenceRecord;\n let rval: unknown;\n if (\n IsAnonymousFunctionDefinition(node.right) &&\n node.left.type === \"Identifier\"\n ) {\n rval = NamedEvaluation(node.right, node.left.name);\n } else {\n const rref = yield* Evaluate(node.right);\n rval = GetValue(rref);\n }\n PutValue(lref, rval);\n return NormalCompletion(rval);\n }\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n yield* DestructuringAssignmentEvaluation(node.left, rval);\n return NormalCompletion(rval);\n }\n // Operators other than `=`.\n const lref = (yield* Evaluate(node.left)).Value as ReferenceRecord;\n const lval = GetValue(lref) as string | number;\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n const r = ApplyStringOrNumericAssignment(lval, node.operator, rval);\n PutValue(lref, r);\n return NormalCompletion(r);\n }\n case \"BlockStatement\": {\n // https://tc39.es/ecma262/#sec-block\n if (!node.body.length) {\n return NormalCompletion(Empty);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.body, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const blockValue = yield* EvaluateStatementList(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return blockValue;\n }\n case \"BreakStatement\":\n // https://tc39.es/ecma262/#sec-break-statement\n return new CompletionRecord(\"break\", Empty);\n case \"ContinueStatement\":\n // https://tc39.es/ecma262/#sec-continue-statement\n return new CompletionRecord(\"continue\", Empty);\n case \"EmptyStatement\":\n // https://tc39.es/ecma262/#sec-empty-statement\n return NormalCompletion(Empty);\n case \"DoWhileStatement\":\n // https://tc39.es/ecma262/#sec-do-while-statement\n return EvaluateBreakableStatement(yield* DoWhileLoopEvaluation(node));\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n // https://tc39.es/ecma262/#sec-expression-statement\n return yield* Evaluate(node.expression);\n case \"ForInStatement\":\n case \"ForOfStatement\":\n // https://tc39.es/ecma262/#sec-for-in-and-for-of-statements\n return EvaluateBreakableStatement(yield* ForInOfLoopEvaluation(node));\n case \"ForStatement\":\n // https://tc39.es/ecma262/#sec-for-statement\n return EvaluateBreakableStatement(yield* ForLoopEvaluation(node));\n case \"FunctionDeclaration\":\n // https://tc39.es/ecma262/#sec-function-definitions\n return NormalCompletion(Empty);\n case \"FunctionExpression\":\n // https://tc39.es/ecma262/#sec-function-defining-expressions\n ThrowIfFunctionIsInvalid(node);\n return NormalCompletion(InstantiateOrdinaryFunctionExpression(node));\n case \"IfStatement\":\n // https://tc39.es/ecma262/#sec-if-statement\n if (GetValue(yield* Evaluate(node.test))) {\n hooks.beforeBranch?.(node, \"if\");\n return UpdateEmpty(yield* Evaluate(node.consequent), undefined);\n }\n hooks.beforeBranch?.(node, \"else\");\n if (node.alternate) {\n return UpdateEmpty(yield* Evaluate(node.alternate), undefined);\n }\n return NormalCompletion(undefined);\n case \"ReturnStatement\": {\n // https://tc39.es/ecma262/#sec-return-statement\n let v: unknown;\n if (node.argument) {\n const exprRef = yield* Evaluate(node.argument);\n v = GetValue(exprRef);\n }\n currentNode = node;\n return new CompletionRecord(\"return\", v);\n }\n case \"ThrowStatement\":\n // https://tc39.es/ecma262/#sec-throw-statement\n throw GetValue(yield* Evaluate(node.argument));\n case \"UpdateExpression\": {\n // https://tc39.es/ecma262/#sec-update-expressions\n const lhs = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n const oldValue = Number(GetValue(lhs));\n const newValue = node.operator === \"++\" ? oldValue + 1 : oldValue - 1;\n PutValue(lhs, newValue);\n return NormalCompletion(node.prefix ? newValue : oldValue);\n }\n case \"SwitchCase\":\n return yield* EvaluateStatementList(node.consequent);\n case \"SwitchStatement\": {\n // https://tc39.es/ecma262/#sec-switch-statement\n const exprRef = yield* Evaluate(node.discriminant);\n const switchValue = GetValue(exprRef);\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.cases, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const R = yield* CaseBlockEvaluation(node.cases, switchValue);\n getRunningContext().LexicalEnvironment = oldEnv;\n return EvaluateBreakableStatement(R);\n }\n case \"TryStatement\": {\n // https://tc39.es/ecma262/#sec-try-statement\n let R: CompletionRecord;\n try {\n R = yield* Evaluate(node.block);\n } catch (error) {\n if (node.handler) {\n currentNode = node.handler;\n hooks.beforeEvaluate?.(node.handler);\n R = yield* CatchClauseEvaluation(node.handler, error);\n } else {\n throw error;\n }\n } finally {\n if (node.finalizer) {\n const F = yield* Evaluate(node.finalizer);\n if (F.Type !== \"normal\") {\n R = F;\n }\n }\n }\n return R;\n }\n case \"VariableDeclaration\": {\n // https://tc39.es/ecma262/#sec-declarations-and-the-variable-statement\n let result: CompletionRecord | undefined;\n for (const declarator of node.declarations) {\n currentNode = declarator;\n if (!declarator.init) {\n // Assert: a declarator without init is always an identifier.\n if (node.kind === \"var\") {\n result = NormalCompletion(Empty);\n } else {\n const lhs = ResolveBinding((declarator.id as Identifier).name);\n result = InitializeReferencedBinding(lhs, undefined);\n }\n } else if (declarator.id.type === \"Identifier\") {\n currentNode = declarator.init;\n if (debug) yield;\n const bindingId = declarator.id.name;\n const lhs = ResolveBinding(bindingId);\n let value: unknown;\n if (IsAnonymousFunctionDefinition(declarator.init)) {\n value = NamedEvaluation(declarator.init, bindingId);\n } else {\n const rhs = yield* Evaluate(declarator.init);\n value = GetValue(rhs);\n }\n result =\n node.kind === \"var\"\n ? PutValue(lhs, value)\n : InitializeReferencedBinding(lhs, value);\n } else {\n currentNode = declarator.init;\n if (debug) yield;\n const rhs = yield* Evaluate(declarator.init);\n const rval = GetValue(rhs);\n result = yield* BindingInitialization(\n declarator.id,\n rval,\n node.kind === \"var\"\n ? undefined\n : getRunningContext().LexicalEnvironment\n );\n }\n }\n return result!;\n }\n case \"WhileStatement\":\n // https://tc39.es/ecma262/#sec-while-statement\n return EvaluateBreakableStatement(yield* WhileLoopEvaluation(node));\n }\n }\n // eslint-disable-next-line no-console\n throw new SyntaxError(`Unsupported node type \\`${node.type}\\``);\n }\n\n // https://tc39.es/ecma262/#sec-execution-contexts\n function getRunningContext(): ExecutionContext {\n return executionContextStack[executionContextStack.length - 1];\n }\n\n // https://tc39.es/ecma262/#sec-resolvebinding\n function ResolveBinding(\n name: string,\n env?: EnvironmentRecord\n ): ReferenceRecord {\n if (!env) {\n env = getRunningContext().LexicalEnvironment;\n }\n return GetIdentifierReference(env, name, true);\n }\n\n // Try statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-catchclauseevaluation\n function* CatchClauseEvaluation(\n node: CatchClause,\n thrownValue: unknown\n ): CompletionRecordResult {\n if (!node.param) {\n return yield* Evaluate(node.body);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const catchEnv = new DeclarativeEnvironment(oldEnv);\n for (const argName of collectBoundNames(node.param)) {\n catchEnv.CreateMutableBinding(argName, false);\n }\n getRunningContext().LexicalEnvironment = catchEnv;\n yield* BindingInitialization(node.param, thrownValue, catchEnv);\n const B = yield* Evaluate(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return B;\n }\n\n // Iteration statements and switch statements.\n // https://tc39.es/ecma262/#prod-BreakableStatement\n function EvaluateBreakableStatement(\n stmtResult: CompletionRecord\n ): CompletionRecord {\n return stmtResult.Type === \"break\"\n ? stmtResult.Value === Empty\n ? NormalCompletion(undefined)\n : NormalCompletion(stmtResult.Value)\n : stmtResult;\n }\n\n // Switch statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n function* CaseBlockEvaluation(\n cases: SwitchCase[],\n input: unknown\n ): CompletionRecordResult {\n let V: unknown;\n\n const defaultCaseIndex = cases.findIndex((switchCase) => !switchCase.test);\n const hasDefaultCase = defaultCaseIndex >= 0;\n const A = hasDefaultCase ? cases.slice(0, defaultCaseIndex) : cases;\n let found = false;\n for (const C of A) {\n if (!found) {\n found = yield* CaseClauseIsSelected(C, input);\n }\n if (found) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n\n if (!hasDefaultCase) {\n return NormalCompletion(V);\n }\n\n let foundInB = false;\n const B = cases.slice(defaultCaseIndex + 1);\n if (!found) {\n for (const C of B) {\n if (!foundInB) {\n foundInB = yield* CaseClauseIsSelected(C, input);\n }\n if (foundInB) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n }\n\n if (foundInB) {\n return NormalCompletion(V);\n }\n const R = yield* Evaluate(cases[defaultCaseIndex]);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n\n // NOTE: The following is another complete iteration of the second CaseClauses.\n for (const C of B) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n return NormalCompletion(V);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseclauseisselected\n function* CaseClauseIsSelected(\n C: SwitchCase,\n input: unknown\n ): EvaluateResult<unknown, boolean> {\n const clauseSelector = GetValue(yield* Evaluate(C.test!));\n return input === clauseSelector;\n }\n\n // While statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-whileloopevaluation\n function* WhileLoopEvaluation(node: WhileStatement): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const exprValue = GetValue(yield* Evaluate(node.test));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n }\n }\n\n // Do-while Statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-dowhileloopevaluation\n function* DoWhileLoopEvaluation(\n node: DoWhileStatement\n ): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n const exprValue = GetValue(yield* Evaluate(node.test));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n }\n }\n\n // For in/of statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation\n function* ForInOfLoopEvaluation(\n node: ForInStatement | ForOfStatement\n ): CompletionRecordResult {\n const lhs = node.left;\n const isVariableDeclaration = lhs.type === \"VariableDeclaration\";\n const lhsKind = isVariableDeclaration\n ? lhs.kind === \"var\"\n ? \"varBinding\"\n : \"lexicalBinding\"\n : \"assignment\";\n const uninitializedBoundNames =\n lhsKind === \"lexicalBinding\" ? collectBoundNames(lhs) : [];\n const iterationKind =\n node.type === \"ForInStatement\" ? \"enumerate\" : \"iterate\";\n const keyResult = yield* ForInOfHeadEvaluation(\n uninitializedBoundNames,\n node.right,\n iterationKind\n );\n if (keyResult.Type !== \"normal\") {\n // When enumerate, if the target is nil, a break completion will be returned.\n return keyResult;\n }\n return yield* ForInOfBodyEvaluation(\n lhs,\n node.body,\n keyResult.Value as Iterator<unknown>,\n iterationKind,\n lhsKind\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofheadevaluation\n function* ForInOfHeadEvaluation(\n uninitializedBoundNames: string[],\n expr: Expression,\n iterationKind: \"enumerate\" | \"iterate\"\n ): CompletionRecordResult {\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (uninitializedBoundNames.length > 0) {\n const newEnv = new DeclarativeEnvironment(oldEnv);\n for (const name of uninitializedBoundNames) {\n newEnv.CreateMutableBinding(name, false);\n }\n runningContext.LexicalEnvironment = newEnv;\n }\n const exprRef = yield* Evaluate(expr, undefined, true);\n runningContext.LexicalEnvironment = oldEnv;\n const exprValue = GetValue(exprRef);\n if (iterationKind === \"enumerate\") {\n if (exprValue === null || exprValue === undefined) {\n return new CompletionRecord(\"break\", Empty);\n }\n const iterator = EnumerateObjectProperties(exprValue);\n return NormalCompletion(iterator);\n }\n const iterator = CreateListIteratorRecord(exprValue as Iterable<unknown>);\n return NormalCompletion(iterator);\n }\n\n function* ForInOfBodyEvaluation(\n node: VariableDeclaration | EstreeLVal,\n stmt: Statement,\n iteratorRecord: Iterator<unknown>,\n iterationKind: \"enumerate\" | \"iterate\",\n lhsKind: \"varBinding\" | \"lexicalBinding\" | \"assignment\"\n ): CompletionRecordResult {\n const lhs =\n lhsKind === \"assignment\"\n ? (node as EstreeLVal)\n : (node as VariableDeclaration).declarations[0].id;\n const oldEnv = getRunningContext().LexicalEnvironment;\n let V: unknown;\n // When `destructuring` is false,\n // For `node` whose `kind` is assignment:\n // `lhs` is an `Identifier` or a `MemberExpression`,\n // Otherwise:\n // `lhs` is an `Identifier`.\n const destructuring =\n lhs.type === \"ObjectPattern\" || lhs.type === \"ArrayPattern\";\n // eslint-disable-next-line no-constant-condition\n while (true) {\n currentNode = lhs;\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n if (debug) yield;\n return NormalCompletion(V);\n }\n let lhsRef: ReferenceRecord | undefined;\n let iterationEnv: DeclarativeEnvironment | undefined;\n if (lhsKind === \"lexicalBinding\") {\n iterationEnv = new DeclarativeEnvironment(oldEnv);\n ForDeclarationBindingInstantiation(\n node as VariableDeclaration,\n iterationEnv\n );\n getRunningContext().LexicalEnvironment = iterationEnv;\n if (debug) yield;\n if (!destructuring) {\n const [lhsName] = collectBoundNames(lhs);\n lhsRef = ResolveBinding(lhsName);\n }\n } else {\n if (debug) yield;\n if (!destructuring) {\n lhsRef = (yield* Evaluate(lhs)).Value as ReferenceRecord;\n }\n }\n\n destructuring\n ? lhsKind === \"assignment\"\n ? yield* DestructuringAssignmentEvaluation(lhs, nextValue)\n : lhsKind === \"varBinding\"\n ? yield* BindingInitialization(lhs, nextValue, undefined)\n : yield* BindingInitialization(lhs, nextValue, iterationEnv)\n : lhsKind === \"lexicalBinding\"\n ? InitializeReferencedBinding(lhsRef!, nextValue)\n : PutValue(lhsRef!, nextValue);\n\n const result = yield* Evaluate(stmt);\n getRunningContext().LexicalEnvironment = oldEnv;\n if (!LoopContinues(result)) {\n const status = UpdateEmpty(result, V);\n if (\n !(\n iterationKind === \"enumerate\" || iteratorRecord.return === undefined\n )\n ) {\n // Perform *IteratorClose*\n // https://tc39.es/ecma262/#sec-iteratorclose\n const innerResult = iteratorRecord.return();\n if (\n !innerResult ||\n ![\"object\", \"function\"].includes(typeof innerResult)\n ) {\n throw new TypeError(`Iterator result is not an object`);\n }\n }\n return status;\n }\n if (result.Value !== Empty) {\n V = result.Value;\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-enumerate-object-properties\n function* EnumerateObjectProperties(value: any): Iterator<PropertyKey> {\n for (const key in value) {\n yield key;\n }\n }\n\n // For statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forloopevaluation\n function* ForLoopEvaluation(node: ForStatement): CompletionRecordResult {\n if (node.init?.type === \"VariableDeclaration\") {\n // `for (var … ; … ; … ) …`\n if (node.init.kind === \"var\") {\n yield* Evaluate(node.init);\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n // `for (let/const … ; … ; … ) …`\n const oldEnv = getRunningContext().LexicalEnvironment;\n const loopEnv = new DeclarativeEnvironment(oldEnv);\n const isConst = node.init.kind === \"const\";\n const boundNames = collectBoundNames(node.init);\n for (const dn of boundNames) {\n if (isConst) {\n loopEnv.CreateImmutableBinding(dn, true);\n } else {\n loopEnv.CreateMutableBinding(dn, false);\n }\n }\n getRunningContext().LexicalEnvironment = loopEnv;\n yield* Evaluate(node.init);\n const perIterationLets = isConst ? [] : Array.from(boundNames);\n const bodyResult = yield* ForBodyEvaluation(\n node.test,\n node.update,\n node.body,\n perIterationLets\n );\n getRunningContext().LexicalEnvironment = oldEnv;\n return bodyResult;\n }\n // `for ( … ; … ; … ) …`\n if (node.init) {\n const exprRef = yield* Evaluate(node.init);\n GetValue(exprRef);\n }\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n\n // https://tc39.es/ecma262/#sec-forbodyevaluation\n function* ForBodyEvaluation(\n test: Expression | null | undefined,\n increment: Expression | null | undefined,\n stmt: Statement,\n perIterationBindings: string[]\n ): CompletionRecordResult {\n CreatePerIterationEnvironment(perIterationBindings);\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (test) {\n const testRef = yield* Evaluate(test, undefined, true);\n const testValue = GetValue(testRef);\n if (!testValue) {\n return NormalCompletion(V);\n }\n }\n const result = yield* Evaluate(stmt);\n if (!LoopContinues(result)) {\n return UpdateEmpty(result, V);\n }\n if (result.Value) {\n V = result.Value;\n }\n CreatePerIterationEnvironment(perIterationBindings);\n if (increment) {\n const incRef = yield* Evaluate(increment, undefined, true);\n GetValue(incRef);\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-createperiterationenvironment\n function CreatePerIterationEnvironment(\n perIterationBindings: string[]\n ): unknown {\n if (perIterationBindings.length === 0) {\n return;\n }\n const lastIterationEnv = getRunningContext().LexicalEnvironment!;\n const outer = lastIterationEnv.OuterEnv;\n const thisIterationEnv = new DeclarativeEnvironment(outer);\n for (const bn of perIterationBindings) {\n thisIterationEnv.CreateMutableBinding(bn, false);\n const lastValue = lastIterationEnv.GetBindingValue(bn, false);\n thisIterationEnv.InitializeBinding(bn, lastValue);\n }\n getRunningContext().LexicalEnvironment = thisIterationEnv;\n }\n\n // Destructuring assignments.\n // https://tc39.es/ecma262/#sec-runtime-semantics-destructuringassignmentevaluation\n function* DestructuringAssignmentEvaluation(\n pattern: ObjectPattern | EstreeObjectPattern | ArrayPattern,\n value: unknown\n ): CompletionRecordResult {\n if (pattern.type === \"ObjectPattern\") {\n RequireObjectCoercible(value);\n if (pattern.properties.length > 0) {\n yield* PropertyDestructuringAssignmentEvaluation(\n (pattern as EstreeObjectPattern).properties,\n value\n );\n }\n return NormalCompletion(Empty);\n }\n const iteratorRecord = CreateListIteratorRecord(value as Iterable<unknown>);\n return yield* IteratorDestructuringAssignmentEvaluation(\n pattern.elements,\n iteratorRecord\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-propertydestructuringassignmentevaluation\n function* PropertyDestructuringAssignmentEvaluation(\n properties: (EstreeProperty | RestElement)[],\n value: unknown\n ): EvaluateResult<unknown, void> {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"Property\") {\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : ((yield* EvaluateComputedPropertyName(\n prop.key as Expression\n )) as string);\n const valueTarget =\n prop.value.type === \"AssignmentPattern\"\n ? prop.value.left\n : prop.value;\n if (valueTarget.type === \"Identifier\") {\n const lref = ResolveBinding(valueTarget.name);\n let v = GetV(value, propName);\n if (prop.value.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(prop.value.right)) {\n v = NamedEvaluation(prop.value.right, valueTarget.name);\n } else {\n const defaultValue = yield* Evaluate(prop.value.right);\n v = GetValue(defaultValue);\n }\n }\n PutValue(lref, v);\n excludedNames.add(propName);\n } else {\n yield* KeyedDestructuringAssignmentEvaluation(\n prop.value,\n value,\n propName\n );\n excludedNames.add(propName);\n }\n } else {\n yield* RestDestructuringAssignmentEvaluation(\n prop,\n value,\n excludedNames\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyeddestructuringassignmentevaluation\n function* KeyedDestructuringAssignmentEvaluation(\n node: EstreeNode,\n value: unknown,\n propertyName: PropertyKey\n ): CompletionRecordResult {\n const assignmentTarget =\n node.type === \"AssignmentPattern\" ? node.left : node;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n const v = GetV(value, propertyName);\n let rhsValue;\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n // `assignmentTarget.type` is never \"Identifier\" here.\n const defaultValue = yield* Evaluate(node.right);\n rhsValue = GetValue(defaultValue);\n } else {\n rhsValue = v;\n }\n if (isObjectOrArray) {\n return yield* DestructuringAssignmentEvaluation(\n assignmentTarget,\n rhsValue\n );\n }\n return PutValue(lref!, rhsValue);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-restdestructuringassignmentevaluation\n function* RestDestructuringAssignmentEvaluation(\n restProperty: RestElement,\n value: unknown,\n excludedNames: Set<PropertyKey>\n ): CompletionRecordResult {\n const lref = (yield* Evaluate(restProperty.argument))\n .Value as ReferenceRecord;\n const restObj = CopyDataProperties({}, value, excludedNames);\n return PutValue(lref, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratordestructuringassignmentevaluation\n function* IteratorDestructuringAssignmentEvaluation(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>\n ): CompletionRecordResult {\n let status = NormalCompletion(Empty);\n for (const element of elements) {\n if (!element) {\n iteratorRecord.next();\n status = NormalCompletion(Empty);\n continue;\n }\n const assignmentTarget =\n element.type === \"RestElement\"\n ? element.argument\n : element.type === \"AssignmentPattern\"\n ? element.left\n : element;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n let v: unknown;\n if (element.type !== \"RestElement\") {\n const { done, value: nextValue } = iteratorRecord.next();\n const value = done ? undefined : nextValue;\n if (element.type === \"AssignmentPattern\" && value === undefined) {\n if (\n IsAnonymousFunctionDefinition(element.right) &&\n assignmentTarget.type === \"Identifier\"\n ) {\n v = NamedEvaluation(element.right, assignmentTarget.name);\n } else {\n const defaultValue = yield* Evaluate(element.right);\n v = GetValue(defaultValue);\n }\n } else {\n v = value;\n }\n } else {\n // RestElement\n v = [];\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n break;\n }\n (v as unknown[])[n] = nextValue;\n n++;\n }\n }\n if (isObjectOrArray) {\n status = yield* DestructuringAssignmentEvaluation(assignmentTarget, v);\n } else {\n status = PutValue(lref!, v);\n }\n }\n return status;\n }\n\n // Object expressions.\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-expression-key\n function* EvaluatePropertyAccessWithExpressionKey(\n baseValue: Record<PropertyKey, unknown>,\n expression: Expression,\n strict: boolean\n ): EvaluateResult<unknown, ReferenceRecord> {\n const propertyNameReference = yield* Evaluate(expression);\n const propertyNameValue = GetValue(propertyNameReference);\n const propertyKey = ToPropertyKey(propertyNameValue);\n return new ReferenceRecord(baseValue, propertyKey, strict);\n }\n\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-identifier-key\n function EvaluatePropertyAccessWithIdentifierKey(\n baseValue: Record<PropertyKey, unknown>,\n identifier: Identifier,\n strict: boolean\n ): ReferenceRecord {\n const propertyNameString = identifier.name;\n return new ReferenceRecord(baseValue, propertyNameString, strict);\n }\n\n // Block statements.\n // https://tc39.es/ecma262/#sec-blockdeclarationinstantiation\n function BlockDeclarationInstantiation(\n code: Statement[] | SwitchCase[],\n env: EnvironmentRecord\n ): void {\n const declarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: false,\n });\n for (const d of declarations) {\n const IsConstantDeclaration =\n d.type === \"VariableDeclaration\" && d.kind === \"const\";\n for (const dn of collectBoundNames(d)) {\n if (IsConstantDeclaration) {\n env.CreateImmutableBinding(dn, true);\n } else {\n env.CreateMutableBinding(dn, false);\n }\n }\n if (d.type === \"FunctionDeclaration\") {\n const [fn] = collectBoundNames(d);\n const fo = InstantiateFunctionObject(d, env);\n env.InitializeBinding(fn, fo);\n }\n }\n }\n\n // Function declarations and expressions.\n // https://tc39.es/ecma262/#sec-evaluatecall\n function* EvaluateCall(\n func: Function,\n ref: ReferenceRecord,\n args: CallExpression[\"arguments\"] | TemplateLiteral,\n callee: CallExpression[\"callee\"]\n ): CompletionRecordResult {\n let thisValue;\n if (ref instanceof ReferenceRecord) {\n if (IsPropertyReference(ref)) {\n thisValue = ref.Base;\n }\n }\n const argList = yield* ArgumentListEvaluation(args);\n if (typeof func !== \"function\") {\n const funcName = codeSource.substring(callee.start!, callee.end!);\n throw new TypeError(`${funcName} is not a function`);\n }\n\n if (debug) {\n const debuggerCall = (func as FunctionObject)[DebuggerCall];\n if (debuggerCall) {\n const result = yield* (debuggerCall as Function).apply(\n thisValue,\n argList\n );\n sanitize(result);\n return NormalCompletion(result);\n }\n }\n\n const result = func.apply(thisValue, argList);\n sanitize(result);\n return NormalCompletion(result);\n }\n\n // https://tc39.es/ecma262/#sec-evaluatenew\n function* EvaluateNew(\n constructExpr: CallExpression[\"callee\"],\n args: NewExpression[\"arguments\"]\n ): CompletionRecordResult {\n const ref = yield* Evaluate(constructExpr);\n const constructor = GetValue(ref) as new (...args: unknown[]) => unknown;\n const argList = yield* ArgumentListEvaluation(args);\n if (\n typeof constructor !== \"function\" ||\n (constructor as unknown as FunctionObject)[IsConstructor] === false\n ) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not a constructor`);\n }\n if (!isAllowedConstructor(constructor)) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not an allowed constructor`);\n }\n\n return NormalCompletion(new constructor(...argList));\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-argumentlistevaluation\n function* ArgumentListEvaluation(\n args: CallExpression[\"arguments\"] | TemplateLiteral\n ): EvaluateResult<unknown, unknown[]> {\n const array: unknown[] = [];\n if (Array.isArray(args)) {\n for (const arg of args) {\n if (arg.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(arg.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(arg)));\n }\n }\n } else {\n array.push(GetTemplateObject(args));\n for (const expr of args.expressions) {\n array.push(GetValue(yield* Evaluate(expr)));\n }\n }\n return array;\n }\n\n // https://tc39.es/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n function* CallFunction(\n closure: FunctionObject,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, unknown> {\n hooks.beforeCall?.(closure[SourceNode]);\n PrepareForOrdinaryCall(closure);\n const result = yield* OrdinaryCallEvaluateBody(closure, args);\n if (currentNode?.type !== \"ReturnStatement\") {\n currentNode = closure[SourceNode];\n }\n if (debug)\n yield {\n type: \"return\",\n value: result.Type === \"return\" ? result.Value : undefined,\n };\n executionContextStack.pop();\n if (result.Type === \"return\") {\n return result.Value;\n }\n return undefined;\n }\n\n // https://tc39.es/ecma262/#sec-prepareforordinarycall\n function PrepareForOrdinaryCall(F: FunctionObject): ExecutionContext {\n const calleeContext = new ExecutionContext();\n calleeContext.Function = F;\n const localEnv = new FunctionEnvironment(F[Environment]);\n calleeContext.VariableEnvironment = localEnv;\n calleeContext.LexicalEnvironment = localEnv;\n executionContextStack.push(calleeContext);\n return calleeContext;\n }\n\n // https://tc39.es/ecma262/#sec-ordinarycallevaluatebody\n function* OrdinaryCallEvaluateBody(\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n return yield* EvaluateFunctionBody(F[ECMAScriptCode], F, args);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-evaluatefunctionbody\n function* EvaluateFunctionBody(\n body: Statement[] | Expression,\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n yield* FunctionDeclarationInstantiation(F, args);\n if (Array.isArray(body)) {\n return yield* EvaluateStatementList(body);\n }\n return new CompletionRecord(\"return\", GetValue(yield* Evaluate(body)));\n }\n\n // https://tc39.es/ecma262/#sec-block-runtime-semantics-evaluation\n function* EvaluateStatementList(\n statements: Statement[]\n ): CompletionRecordResult {\n let result = NormalCompletion(Empty);\n for (const stmt of statements) {\n const s = yield* Evaluate(stmt);\n if (s.Type !== \"normal\") {\n return s;\n }\n result = UpdateEmpty(result, s.Value);\n }\n return result;\n }\n\n // https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition\n function IsAnonymousFunctionDefinition(\n node: EstreeNode\n ): node is FunctionDefinition {\n // No ParenthesizedExpression in ESTree.\n return (\n (node.type === \"FunctionExpression\" && !node.id) ||\n node.type === \"ArrowFunctionExpression\"\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation\n function NamedEvaluation(node: FunctionDefinition, name: string) {\n // No ParenthesizedExpression in ESTree.\n switch (node.type) {\n case \"FunctionExpression\":\n return InstantiateOrdinaryFunctionExpression(node, name);\n case \"ArrowFunctionExpression\":\n return InstantiateArrowFunctionExpression(node, name);\n // istanbul ignore next: should never happen\n default:\n throw new Error(\n `Unexpected node type for NamedEvaluation: ${(node as FunctionDefinition).type}`\n );\n }\n }\n\n // https://tc39.es/ecma262/#sec-functiondeclarationinstantiation\n function* FunctionDeclarationInstantiation(\n func: FunctionObject,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, void> {\n const calleeContext = getRunningContext();\n const code = func[ECMAScriptCode];\n const formals = func[FormalParameters] as FunctionDeclaration[\"params\"];\n const parameterNames = collectBoundNames(formals);\n const hasParameterExpressions = containsExpression(formals);\n const varDeclarations = collectScopedDeclarations(code, {\n var: true,\n topLevel: true,\n });\n const varNames = collectBoundNames(varDeclarations);\n\n // `functionNames` ∈ `varNames`\n // `functionsToInitialize` ≈ `functionNames`\n const functionNames: string[] = [];\n const functionsToInitialize: FunctionDeclaration[] = [];\n for (let i = varDeclarations.length - 1; i >= 0; i--) {\n const d = varDeclarations[i];\n if (d.type === \"FunctionDeclaration\") {\n ThrowIfFunctionIsInvalid(d);\n const [fn] = collectBoundNames(d);\n if (!functionNames.includes(fn)) {\n functionNames.unshift(fn);\n functionsToInitialize.unshift(d);\n }\n } else if (rules?.noVar) {\n throw new SyntaxError(\n \"Var declaration is not recommended, use `let` or `const` instead\"\n );\n }\n }\n\n const env = calleeContext.LexicalEnvironment!;\n for (const paramName of parameterNames) {\n // In strict mode, it's guaranteed no duplicate params exist.\n env.CreateMutableBinding(paramName, false);\n }\n\n const iteratorRecord = CreateListIteratorRecord(args);\n yield* IteratorBindingInitialization(formals, iteratorRecord, env);\n\n let varEnv: EnvironmentRecord;\n if (!hasParameterExpressions) {\n // NOTE: Only a single Environment Record is needed for the parameters\n // and top-level vars.\n // `varNames` are unique.\n for (const n of varNames) {\n if (!parameterNames.includes(n)) {\n env.CreateMutableBinding(n, false);\n env.InitializeBinding(n, undefined);\n }\n }\n varEnv = env;\n } else {\n // NOTE: A separate Environment Record is needed to ensure that closures\n // created by expressions in the formal parameter list do not have\n // visibility of declarations in the function body.\n varEnv = new DeclarativeEnvironment(env);\n calleeContext.VariableEnvironment = varEnv;\n // `varNames` are unique.\n for (const n of varNames) {\n varEnv.CreateMutableBinding(n, false);\n let initialValue: unknown;\n if (parameterNames.includes(n) && !functionNames.includes(n)) {\n initialValue = env.GetBindingValue(n, false);\n }\n varEnv.InitializeBinding(n, initialValue);\n // NOTE: A var with the same name as a formal parameter initially has\n // the same value as the corresponding initialized parameter.\n }\n }\n const lexEnv = varEnv;\n calleeContext.LexicalEnvironment = lexEnv;\n\n const lexDeclarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: true,\n });\n for (const d of lexDeclarations) {\n for (const dn of collectBoundNames(d)) {\n // Only lexical VariableDeclaration here in top-level.\n if ((d as VariableDeclaration).kind === \"const\") {\n lexEnv.CreateImmutableBinding(dn, true);\n } else {\n lexEnv.CreateMutableBinding(dn, false);\n }\n }\n }\n\n for (const f of functionsToInitialize) {\n const [fn] = collectBoundNames(f);\n const fo = InstantiateFunctionObject(f, lexEnv);\n varEnv.SetMutableBinding(fn, fo, false);\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatefunctionobject\n function InstantiateFunctionObject(\n func: FunctionDeclaration,\n scope: EnvironmentRecord\n ): FunctionObject {\n const F = OrdinaryFunctionCreate(func, scope, true);\n\n if (func.id) {\n SetFunctionName(F, func.id.name);\n }\n\n return F;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n if (functionExpression.id) {\n const name = functionExpression.id.name;\n const funcEnv = new DeclarativeEnvironment(scope);\n funcEnv.CreateImmutableBinding(name, false);\n const closure = OrdinaryFunctionCreate(functionExpression, funcEnv, true);\n SetFunctionName(closure, name);\n funcEnv.InitializeBinding(name, closure);\n return closure;\n } else {\n const closure = OrdinaryFunctionCreate(functionExpression, scope, true);\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatearrowfunctionexpression\n function InstantiateArrowFunctionExpression(\n arrowFunction: ArrowFunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n const closure = OrdinaryFunctionCreate(arrowFunction, scope, false);\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n\n function SetFunctionName(F: FunctionObject, name: string) {\n Object.defineProperty(F, \"name\", {\n value: name,\n configurable: true,\n });\n }\n\n // https://tc39.es/ecma262/#sec-ordinaryfunctioncreate\n function OrdinaryFunctionCreate(\n sourceNode:\n | FunctionDeclaration\n | FunctionExpression\n | ArrowFunctionExpression,\n scope: EnvironmentRecord,\n isConstructor: boolean\n ): FunctionObject {\n const F = function () {\n // eslint-disable-next-line prefer-rest-params\n return unwind(CallFunction(F, arguments));\n } as FunctionObject;\n Object.defineProperties(F, {\n [SourceNode]: {\n value: sourceNode,\n },\n [FormalParameters]: {\n value: sourceNode.params,\n },\n [ECMAScriptCode]: {\n value:\n sourceNode.body.type === \"BlockStatement\"\n ? sourceNode.body.body\n : sourceNode.body,\n },\n [Environment]: {\n value: scope,\n },\n [IsConstructor]: {\n value: isConstructor,\n },\n });\n if (debug) {\n Object.defineProperty(F, DebuggerCall, {\n value: function () {\n // eslint-disable-next-line prefer-rest-params\n return CallFunction(F, arguments);\n },\n });\n }\n return F;\n }\n\n // Patterns initialization.\n // https://tc39.es/ecma262/#sec-runtime-semantics-bindinginitialization\n function* BindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n switch (node.type) {\n case \"Identifier\":\n return InitializeBoundName(node.name, value, environment);\n case \"ObjectPattern\":\n RequireObjectCoercible(value);\n return yield* PropertyBindingInitialization(\n (node as EstreeObjectPattern).properties,\n value,\n environment\n );\n case \"ArrayPattern\": {\n const iteratorRecord = CreateListIteratorRecord(\n value as Iterable<unknown>\n );\n return yield* IteratorBindingInitialization(\n node.elements,\n iteratorRecord,\n environment\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization\n function* PropertyBindingInitialization(\n properties: (EstreeProperty | RestElement)[],\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecordResult {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"RestElement\") {\n return RestBindingInitialization(\n prop,\n value,\n environment,\n excludedNames\n );\n }\n if (!prop.computed && prop.key.type === \"Identifier\") {\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n prop.key.name\n );\n excludedNames.add(prop.key.name);\n } else {\n const P = yield* EvaluateComputedPropertyName(prop.key as Expression);\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n P\n );\n excludedNames.add(P);\n }\n }\n return NormalCompletion(Empty);\n }\n\n // https://tc39.es/ecma262/#prod-ComputedPropertyName\n function* EvaluateComputedPropertyName(\n node: Expression\n ): EvaluateResult<unknown, PropertyKey> {\n const propName = GetValue(yield* Evaluate(node));\n return ToPropertyKey(propName);\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization\n function RestBindingInitialization(\n restProperty: RestElement,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n excludedNames: Set<PropertyKey>\n ): CompletionRecord {\n const lhs = ResolveBinding(\n (restProperty.argument as Identifier).name,\n environment\n );\n const restObj = CopyDataProperties({}, value, excludedNames);\n if (!environment) {\n return PutValue(lhs, restObj);\n }\n return InitializeReferencedBinding(lhs, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratorbindinginitialization\n function* IteratorBindingInitialization(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n if (elements.length === 0) {\n return NormalCompletion(Empty);\n }\n let result;\n for (const node of elements) {\n if (!node) {\n // Elision element.\n iteratorRecord.next();\n result = NormalCompletion(Empty);\n } else if (node.type === \"RestElement\") {\n // Rest element.\n if (node.argument.type === \"Identifier\") {\n const lhs = ResolveBinding(node.argument.name, environment);\n const A: unknown[] = [];\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = environment\n ? InitializeReferencedBinding(lhs, A)\n : PutValue(lhs, A);\n break;\n }\n A[n] = value;\n n++;\n }\n } else {\n const A: unknown[] = [];\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = yield* BindingInitialization(\n node.argument,\n A,\n environment\n );\n break;\n }\n A[n] = value;\n n++;\n }\n }\n } else {\n // Normal element.\n const bindingElement =\n node.type === \"AssignmentPattern\" ? node.left : node;\n switch (bindingElement.type) {\n case \"ObjectPattern\":\n case \"ArrayPattern\": {\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n result = yield* BindingInitialization(\n bindingElement,\n v,\n environment\n );\n break;\n }\n case \"Identifier\": {\n const bindingId = bindingElement.name;\n const lhs = ResolveBinding(bindingId, environment);\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n result = environment\n ? InitializeReferencedBinding(lhs, v)\n : PutValue(lhs, v);\n break;\n }\n }\n }\n }\n return result;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyedbindinginitialization\n function* KeyedBindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n propertyName: PropertyKey\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n const isIdentifier =\n node.type === \"Identifier\" ||\n (node.type === \"AssignmentPattern\" && node.left.type === \"Identifier\");\n if (isIdentifier) {\n const bindingId =\n node.type === \"Identifier\" ? node.name : (node.left as Identifier).name;\n const lhs = ResolveBinding(bindingId, environment);\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n if (!environment) {\n return PutValue(lhs, v);\n }\n return InitializeReferencedBinding(lhs, v);\n }\n\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n return yield* BindingInitialization(\n node.type === \"AssignmentPattern\" ? node.left : node,\n v,\n environment\n );\n }\n\n // https://tc39.es/ecma262/#sec-initializeboundname\n function InitializeBoundName(\n name: string,\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecord {\n // Assert: environment is always present.\n environment!.InitializeBinding(name, value);\n return NormalCompletion(Empty);\n }\n\n function ThrowIfFunctionIsInvalid(\n func: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression\n ): void {\n if (func.async || func.generator) {\n throw new SyntaxError(\n `${func.async ? \"Async\" : \"Generator\"} function is not allowed`\n );\n }\n if (expressionOnly && !(func as ArrowFunctionExpression).expression) {\n throw new SyntaxError(\n \"Only an `Expression` is allowed in `ArrowFunctionExpression`'s body\"\n );\n }\n }\n\n if (expressionOnly) {\n return GetValue(unwind(Evaluate(rootAst)));\n }\n\n hooks.beforeEvaluate?.(rootAst);\n ThrowIfFunctionIsInvalid(rootAst);\n const [fn] = collectBoundNames(rootAst);\n // Create an immutable binding for the root function.\n rootEnv.CreateImmutableBinding(fn, true);\n const fo = InstantiateFunctionObject(rootAst, rootEnv);\n rootEnv.InitializeBinding(fn, fo);\n\n if (debug) {\n Object.defineProperties(fo, {\n [DebuggerScope]: {\n value: function () {\n return getRunningContext().LexicalEnvironment;\n },\n },\n [DebuggerNode]: {\n value: function () {\n return currentNode;\n },\n },\n });\n }\n\n return fo;\n}\n\nfunction unwind(iterator: EvaluateResult<unknown, unknown>): unknown {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iterator.next();\n if (done) {\n return value;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"cook.js","names":["ApplyStringOrNumericAssignment","CreateListIteratorRecord","ApplyStringOrNumericBinaryOperator","GetV","GetValue","InitializeReferencedBinding","IsPropertyReference","LoopContinues","PutValue","RequireObjectCoercible","ToPropertyKey","UpdateEmpty","ApplyUnaryOperator","GetIdentifierReference","ForDeclarationBindingInstantiation","CopyDataProperties","CompletionRecord","DebuggerCall","DebuggerNode","DebuggerReturn","DebuggerScope","DeclarativeEnvironment","ECMAScriptCode","Empty","Environment","ExecutionContext","FormalParameters","FunctionEnvironment","IsConstructor","NormalCompletion","ReferenceRecord","SourceNode","Mode","ThisMode","sanitize","isAllowedConstructor","collectBoundNames","collectScopedDeclarations","containsExpression","cook","rootAst","codeSource","_hooks$beforeEvaluate3","rules","debug","externalSourceForDebug","globalVariables","ArrayConstructor","Array","hooks","arguments","length","undefined","expressionOnly","type","doSanitize","cooked","rootEnv","rootContext","VariableEnvironment","LexicalEnvironment","executionContextStack","key","value","Object","entries","CreateImmutableBinding","InitializeBinding","TemplateMap","WeakMap","GetTemplateObject","templateLiteral","memo","get","rawObj","quasis","map","quasi","raw","template","freeze","defineProperty","writable","enumerable","configurable","set","currentNode","Evaluate","node","optionalChainRef","forceYield","_hooks$beforeEvaluate","_hooks$beforeBranch2","beforeEvaluate","call","endsWith","expression","array","element","elements","spreadValues","argument","push","ThrowIfFunctionIsInvalid","closure","InstantiateArrowFunctionExpression","leftRef","left","leftValue","rightRef","right","rightValue","operator","funcName","substring","start","end","TypeError","thisValue","Base","result","ref","callee","Value","func","optional","skipped","EvaluateCall","test","consequent","alternate","ResolveBinding","name","regex","SyntaxError","flags","includes","baseReference","object","baseValue","computed","EvaluatePropertyAccessWithExpressionKey","property","EvaluatePropertyAccessWithIdentifierKey","EvaluateNew","prop","properties","fromValue","Set","kind","propName","EvaluateComputedPropertyName","propValue","method","SetFunctionName","expr","expressions","chunks","index","val","String","join","tagRef","tag","tagFunc","deleteStatus","ReferenceName","lref","rval","IsAnonymousFunctionDefinition","NamedEvaluation","rref","DestructuringAssignmentEvaluation","lval","r","body","oldEnv","getRunningContext","blockEnv","BlockDeclarationInstantiation","blockValue","EvaluateStatementList","EvaluateBreakableStatement","DoWhileLoopEvaluation","ForInOfLoopEvaluation","ForLoopEvaluation","InstantiateOrdinaryFunctionExpression","_hooks$beforeBranch","beforeBranch","v","exprRef","envRec","GetThisEnvironment","GetThisBinding","lhs","oldValue","Number","newValue","prefix","discriminant","switchValue","cases","R","CaseBlockEvaluation","block","error","handler","_hooks$beforeEvaluate2","CatchClauseEvaluation","finalizer","F","Type","declarator","declarations","init","id","bindingId","rhs","BindingInitialization","WhileLoopEvaluation","env","thrownValue","param","catchEnv","argName","CreateMutableBinding","B","stmtResult","input","V","defaultCaseIndex","findIndex","switchCase","hasDefaultCase","A","slice","found","C","CaseClauseIsSelected","foundInB","clauseSelector","exprValue","isVariableDeclaration","lhsKind","uninitializedBoundNames","iterationKind","keyResult","ForInOfHeadEvaluation","ForInOfBodyEvaluation","runningContext","newEnv","iterator","EnumerateObjectProperties","stmt","iteratorRecord","destructuring","done","nextValue","next","lhsRef","iterationEnv","lhsName","status","return","innerResult","_node$init","ForBodyEvaluation","update","loopEnv","isConst","boundNames","dn","perIterationLets","from","bodyResult","increment","perIterationBindings","CreatePerIterationEnvironment","testRef","testValue","incRef","lastIterationEnv","outer","OuterEnv","thisIterationEnv","bn","lastValue","GetBindingValue","pattern","PropertyDestructuringAssignmentEvaluation","IteratorDestructuringAssignmentEvaluation","excludedNames","valueTarget","defaultValue","add","KeyedDestructuringAssignmentEvaluation","RestDestructuringAssignmentEvaluation","propertyName","assignmentTarget","isObjectOrArray","rhsValue","restProperty","restObj","n","strict","propertyNameReference","propertyNameValue","propertyKey","identifier","propertyNameString","code","var","topLevel","d","IsConstantDeclaration","fn","fo","InstantiateFunctionObject","args","argList","ArgumentListEvaluation","debuggerCall","apply","constructExpr","constructor","constructorName","isArray","arg","CallFunction","thisArgument","_hooks$beforeCall","beforeCall","calleeContext","PrepareForOrdinaryCall","OrdinaryCallBindThis","OrdinaryCallEvaluateBody","pop","Function","localEnv","LEXICAL","BindThisValue","EvaluateFunctionBody","FunctionDeclarationInstantiation","statements","s","HasThisBinding","Error","formals","parameterNames","hasParameterExpressions","varDeclarations","varNames","functionNames","functionsToInitialize","i","unshift","noVar","argumentsObjectNeeded","paramName","parameterBindings","ao","CreateUnmappedArgumentsObject","concat","IteratorBindingInitialization","varEnv","instantiatedVarNames","initialValue","lexEnv","lexDeclarations","f","SetMutableBinding","argumentObject","Symbol","prototype","values","ThrowTypeError","scope","OrdinaryFunctionCreate","functionExpression","funcEnv","arrowFunction","sourceNode","isConstructor","lexicalThis","unwind","defineProperties","params","STRICT","environment","InitializeBoundName","PropertyBindingInitialization","RestBindingInitialization","KeyedBindingInitialization","P","bindingElement","isIdentifier","async","generator"],"sources":["../../src/cook.ts"],"sourcesContent":["import type {\n ArrayPattern,\n ArrowFunctionExpression,\n CallExpression,\n CatchClause,\n DoWhileStatement,\n Expression,\n ForInStatement,\n ForOfStatement,\n ForStatement,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n LVal,\n NewExpression,\n ObjectPattern,\n PatternLike,\n RestElement,\n Statement,\n SwitchCase,\n TemplateLiteral,\n VariableDeclaration,\n WhileStatement,\n} from \"@babel/types\";\nimport {\n ApplyStringOrNumericAssignment,\n CreateListIteratorRecord,\n ApplyStringOrNumericBinaryOperator,\n GetV,\n GetValue,\n InitializeReferencedBinding,\n IsPropertyReference,\n LoopContinues,\n PutValue,\n RequireObjectCoercible,\n ToPropertyKey,\n UpdateEmpty,\n ApplyUnaryOperator,\n GetIdentifierReference,\n ForDeclarationBindingInstantiation,\n CopyDataProperties,\n} from \"./context-free.js\";\nimport {\n CompletionRecord,\n DebuggerCall,\n DebuggerNode,\n DebuggerReturn,\n DebuggerScope,\n DeclarativeEnvironment,\n ECMAScriptCode,\n Empty,\n Environment,\n EnvironmentRecord,\n ExecutionContext,\n FormalParameters,\n FunctionEnvironment,\n FunctionObject,\n IsConstructor,\n NormalCompletion,\n OptionalChainRef,\n ReferenceRecord,\n SourceNode,\n Mode,\n ThisMode,\n} from \"./ExecutionContext.js\";\nimport type {\n EstreeLVal,\n EstreeNode,\n EstreeObjectExpression,\n EstreeObjectPattern,\n EstreeProperty,\n CookRules,\n FunctionDefinition,\n} from \"./interfaces.js\";\nimport { sanitize, isAllowedConstructor } from \"./sanitize.js\";\nimport {\n collectBoundNames,\n collectScopedDeclarations,\n containsExpression,\n} from \"./traverse.js\";\n\nexport interface CookOptions {\n rules?: CookRules;\n globalVariables?: Record<string, unknown>;\n hooks?: CookHooks;\n debug?: boolean;\n externalSourceForDebug?: boolean;\n ArrayConstructor?: typeof Array;\n}\n\nexport interface CookHooks {\n beforeEvaluate?(node: EstreeNode): void;\n beforeCall?(node: EstreeNode): void;\n beforeBranch?(node: EstreeNode, branch: \"if\" | \"else\"): void;\n}\n\ninterface EvaluateResult<T, TReturn> extends Iterator<T, TReturn> {\n [Symbol.iterator](): EvaluateResult<T, TReturn>;\n}\n\ntype CompletionRecordResult<T = unknown> = EvaluateResult<T, CompletionRecord>;\n\n/** For next-core internal usage only. */\nexport function cook(\n rootAst: FunctionDeclaration | Expression,\n codeSource: string,\n {\n rules,\n debug,\n externalSourceForDebug,\n globalVariables = {},\n // Allow debugger to override Array constructor.\n ArrayConstructor = Array,\n hooks = {},\n }: CookOptions = {}\n): unknown {\n const expressionOnly = rootAst.type !== \"FunctionDeclaration\";\n\n function doSanitize(cooked: unknown) {\n if (!externalSourceForDebug) {\n sanitize(cooked);\n }\n }\n\n const rootEnv = new DeclarativeEnvironment(null);\n const rootContext = new ExecutionContext();\n rootContext.VariableEnvironment = rootEnv;\n rootContext.LexicalEnvironment = rootEnv;\n const executionContextStack = [rootContext];\n\n for (const [key, value] of Object.entries(globalVariables)) {\n rootEnv.CreateImmutableBinding(key, true);\n rootEnv.InitializeBinding(key, value);\n }\n\n const TemplateMap = new WeakMap<TemplateLiteral, string[]>();\n\n // https://tc39.es/ecma262/#sec-gettemplateobject\n function GetTemplateObject(templateLiteral: TemplateLiteral): string[] {\n const memo = TemplateMap.get(templateLiteral);\n if (memo) {\n return memo;\n }\n const rawObj = templateLiteral.quasis.map((quasi) => quasi.value.raw);\n const template = templateLiteral.quasis.map((quasi) => quasi.value.cooked!);\n Object.freeze(rawObj);\n Object.defineProperty(template, \"raw\", {\n value: rawObj,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n Object.freeze(template);\n TemplateMap.set(templateLiteral, template);\n return template;\n }\n\n let currentNode: EstreeNode | undefined;\n\n function* Evaluate(\n node: EstreeNode,\n optionalChainRef?: OptionalChainRef,\n forceYield?: boolean\n ): CompletionRecordResult {\n hooks.beforeEvaluate?.(node);\n currentNode = node;\n if (\n debug &&\n (forceYield ||\n (node.type.endsWith(\"Statement\") &&\n !(\n node.type === \"ExpressionStatement\" &&\n (node.expression.type === \"CallExpression\" ||\n node.expression.type === \"TaggedTemplateExpression\")\n ) &&\n node.type !== \"TryStatement\" &&\n node.type !== \"BlockStatement\" &&\n node.type !== \"DoWhileStatement\" &&\n node.type !== \"WhileStatement\" &&\n node.type !== \"ForStatement\" &&\n node.type !== \"ForInStatement\" &&\n node.type !== \"ForOfStatement\"))\n ) {\n yield;\n }\n // Expressions:\n switch (node.type) {\n case \"ArrayExpression\": {\n // https://tc39.es/ecma262/#sec-array-initializer\n const array = new ArrayConstructor();\n for (const element of node.elements) {\n if (!element) {\n array.length += 1;\n } else if (element.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(element.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(element)));\n }\n }\n return NormalCompletion(array);\n }\n case \"ArrowFunctionExpression\": {\n // https://tc39.es/ecma262/#sec-arrow-function-definitions\n ThrowIfFunctionIsInvalid(node);\n const closure = InstantiateArrowFunctionExpression(node);\n return NormalCompletion(closure);\n }\n case \"BinaryExpression\": {\n const leftRef = yield* Evaluate(node.left);\n const leftValue = GetValue(leftRef);\n const rightRef = yield* Evaluate(node.right);\n const rightValue = GetValue(rightRef);\n if (expressionOnly && (node.operator as unknown) === \"|>\") {\n // Minimal pipeline operator is supported only in expression-only mode.\n // See https://tc39.es/proposal-pipeline-operator\n // and https://github.com/tc39/proposal-pipeline-operator\n if (typeof rightValue !== \"function\") {\n const funcName = codeSource.substring(\n node.right.start!,\n node.right.end!\n );\n throw new TypeError(`${funcName} is not a function`);\n }\n let thisValue;\n if (rightRef instanceof ReferenceRecord) {\n if (IsPropertyReference(rightRef)) {\n thisValue = rightRef.Base;\n }\n }\n return NormalCompletion(\n (rightValue as unknown as Function).call(thisValue, leftValue)\n );\n }\n // https://tc39.es/ecma262/#sec-additive-operators\n const result = ApplyStringOrNumericBinaryOperator(\n leftValue as number,\n node.operator,\n rightValue as number\n );\n return NormalCompletion(result);\n }\n case \"CallExpression\": {\n // https://tc39.es/ecma262/#sec-function-calls\n const ref = (yield* Evaluate(node.callee, optionalChainRef))\n .Value as ReferenceRecord;\n const func = GetValue(ref) as Function;\n if (\n (func === undefined || func === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n doSanitize(func);\n\n if (debug) yield;\n\n return yield* EvaluateCall(func, ref, node.arguments, node.callee);\n }\n case \"ChainExpression\":\n // https://tc39.es/ecma262/#sec-optional-chains\n return yield* Evaluate(node.expression, {});\n case \"ConditionalExpression\":\n // https://tc39.es/ecma262/#sec-conditional-operator\n return NormalCompletion(\n GetValue(\n yield* Evaluate(\n GetValue(yield* Evaluate(node.test))\n ? node.consequent\n : node.alternate\n )\n )\n );\n case \"Identifier\":\n // https://tc39.es/ecma262/#sec-identifiers\n return NormalCompletion(ResolveBinding(node.name));\n case \"Literal\": {\n // https://tc39.es/ecma262/#sec-primary-expression-literals\n if (node.regex) {\n if (node.value === null) {\n // Invalid regular expression fails silently in @babel/parser.\n throw new SyntaxError(`Invalid regular expression: ${node.raw}`);\n }\n if (node.regex.flags.includes(\"u\")) {\n // Currently unicode flag is not fully supported across major browsers.\n throw new SyntaxError(\n `Unsupported unicode flag in regular expression: ${node.raw}`\n );\n }\n }\n return NormalCompletion(node.value);\n }\n case \"LogicalExpression\": {\n // https://tc39.es/ecma262/#sec-binary-logical-operators\n const leftValue = GetValue(yield* Evaluate(node.left));\n switch (node.operator) {\n case \"&&\":\n return NormalCompletion(\n leftValue && GetValue(yield* Evaluate(node.right))\n );\n case \"||\":\n return NormalCompletion(\n leftValue || GetValue(yield* Evaluate(node.right))\n );\n case \"??\":\n return NormalCompletion(\n leftValue ?? GetValue(yield* Evaluate(node.right))\n );\n // istanbul ignore next\n default:\n throw new SyntaxError(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore never reach here.\n `Unsupported logical operator '${node.operator}'`\n );\n }\n }\n case \"MemberExpression\": {\n // https://tc39.es/ecma262/#sec-property-accessors\n const baseReference = (yield* Evaluate(node.object, optionalChainRef))\n .Value as ReferenceRecord;\n const baseValue = GetValue(baseReference) as Record<\n PropertyKey,\n unknown\n >;\n if (\n (baseValue === undefined || baseValue === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n doSanitize(baseValue);\n const result = node.computed\n ? yield* EvaluatePropertyAccessWithExpressionKey(\n baseValue,\n node.property as Expression,\n true\n )\n : EvaluatePropertyAccessWithIdentifierKey(\n baseValue,\n node.property as Identifier,\n true\n );\n doSanitize(result);\n return NormalCompletion(result);\n }\n case \"NewExpression\":\n // https://tc39.es/ecma262/#sec-new-operator\n return yield* EvaluateNew(node.callee, node.arguments);\n case \"ObjectExpression\": {\n // https://tc39.es/ecma262/#sec-object-initializer\n const object: Record<PropertyKey, unknown> = {};\n for (const prop of (node as EstreeObjectExpression).properties) {\n if (prop.type === \"SpreadElement\") {\n const fromValue = GetValue(yield* Evaluate(prop.argument));\n CopyDataProperties(object, fromValue, new Set());\n } else {\n if (prop.kind !== \"init\") {\n throw new SyntaxError(\"Unsupported object getter/setter\");\n }\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : yield* EvaluateComputedPropertyName(prop.key as Expression);\n if (propName === \"__proto__\") {\n throw new TypeError(\n \"Setting '__proto__' property is not allowed\"\n );\n }\n const propValue = GetValue(yield* Evaluate(prop.value));\n if (prop.method && typeof propValue === \"function\") {\n SetFunctionName(propValue as FunctionObject, propName as string);\n }\n object[propName] = propValue;\n }\n }\n return NormalCompletion(object);\n }\n case \"SequenceExpression\": {\n // https://tc39.es/ecma262/#sec-comma-operator\n let result: CompletionRecord | undefined;\n for (const expr of node.expressions) {\n result = NormalCompletion(GetValue(yield* Evaluate(expr)));\n }\n return result!;\n }\n case \"TemplateLiteral\": {\n // https://tc39.es/ecma262/#sec-template-literals\n const chunks: string[] = [node.quasis[0].value.cooked!];\n let index = 0;\n for (const expr of node.expressions) {\n const val = GetValue(yield* Evaluate(expr));\n chunks.push(String(val));\n chunks.push(node.quasis[(index += 1)].value.cooked!);\n }\n return NormalCompletion(chunks.join(\"\"));\n }\n case \"TaggedTemplateExpression\": {\n // https://tc39.es/ecma262/#sec-tagged-templates\n const tagRef = (yield* Evaluate(node.tag)).Value as ReferenceRecord;\n const tagFunc = GetValue(tagRef) as Function;\n doSanitize(tagFunc);\n if (debug) yield;\n return yield* EvaluateCall(tagFunc, tagRef, node.quasi, node.tag);\n }\n case \"UnaryExpression\": {\n // https://tc39.es/ecma262/#sec-unary-operators\n const ref = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n if (!expressionOnly && node.operator === \"delete\") {\n // Delete operator is supported only in function mode.\n if (!(ref instanceof ReferenceRecord)) {\n return NormalCompletion(true);\n }\n // istanbul ignore else\n if (IsPropertyReference(ref)) {\n const deleteStatus = delete (\n ref.Base as Record<PropertyKey, unknown>\n )[ref.ReferenceName];\n return NormalCompletion(deleteStatus);\n }\n // Should never reach here in strict mode.\n }\n if (node.operator === \"typeof\") {\n if (ref instanceof ReferenceRecord && ref.Base === \"unresolvable\") {\n return NormalCompletion(\"undefined\");\n }\n return NormalCompletion(typeof GetValue(ref));\n }\n return NormalCompletion(\n ApplyUnaryOperator(GetValue(ref), node.operator)\n );\n }\n }\n if (!expressionOnly) {\n // Statements and assignments:\n switch (node.type) {\n case \"AssignmentExpression\": {\n // https://tc39.es/ecma262/#sec-assignment-operators\n if (node.operator === \"=\") {\n if (\n !(\n node.left.type === \"ArrayPattern\" ||\n node.left.type === \"ObjectPattern\"\n )\n ) {\n const lref = (yield* Evaluate(node.left))\n .Value as ReferenceRecord;\n let rval: unknown;\n if (\n IsAnonymousFunctionDefinition(node.right) &&\n node.left.type === \"Identifier\"\n ) {\n rval = NamedEvaluation(node.right, node.left.name);\n } else {\n const rref = yield* Evaluate(node.right);\n rval = GetValue(rref);\n }\n PutValue(lref, rval);\n return NormalCompletion(rval);\n }\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n yield* DestructuringAssignmentEvaluation(node.left, rval);\n return NormalCompletion(rval);\n }\n // Operators other than `=`.\n const lref = (yield* Evaluate(node.left)).Value as ReferenceRecord;\n const lval = GetValue(lref) as string | number;\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n const r = ApplyStringOrNumericAssignment(lval, node.operator, rval);\n PutValue(lref, r);\n return NormalCompletion(r);\n }\n case \"BlockStatement\": {\n // https://tc39.es/ecma262/#sec-block\n if (!node.body.length) {\n return NormalCompletion(Empty);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.body, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const blockValue = yield* EvaluateStatementList(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return blockValue;\n }\n case \"BreakStatement\":\n // https://tc39.es/ecma262/#sec-break-statement\n return new CompletionRecord(\"break\", Empty);\n case \"ContinueStatement\":\n // https://tc39.es/ecma262/#sec-continue-statement\n return new CompletionRecord(\"continue\", Empty);\n case \"EmptyStatement\":\n // https://tc39.es/ecma262/#sec-empty-statement\n return NormalCompletion(Empty);\n case \"DoWhileStatement\":\n // https://tc39.es/ecma262/#sec-do-while-statement\n return EvaluateBreakableStatement(yield* DoWhileLoopEvaluation(node));\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n // https://tc39.es/ecma262/#sec-expression-statement\n return yield* Evaluate(node.expression);\n case \"ForInStatement\":\n case \"ForOfStatement\":\n // https://tc39.es/ecma262/#sec-for-in-and-for-of-statements\n return EvaluateBreakableStatement(yield* ForInOfLoopEvaluation(node));\n case \"ForStatement\":\n // https://tc39.es/ecma262/#sec-for-statement\n return EvaluateBreakableStatement(yield* ForLoopEvaluation(node));\n case \"FunctionDeclaration\":\n // https://tc39.es/ecma262/#sec-function-definitions\n return NormalCompletion(Empty);\n case \"FunctionExpression\":\n // https://tc39.es/ecma262/#sec-function-defining-expressions\n ThrowIfFunctionIsInvalid(node);\n return NormalCompletion(InstantiateOrdinaryFunctionExpression(node));\n case \"IfStatement\":\n // https://tc39.es/ecma262/#sec-if-statement\n if (GetValue(yield* Evaluate(node.test))) {\n hooks.beforeBranch?.(node, \"if\");\n return UpdateEmpty(yield* Evaluate(node.consequent), undefined);\n }\n hooks.beforeBranch?.(node, \"else\");\n if (node.alternate) {\n return UpdateEmpty(yield* Evaluate(node.alternate), undefined);\n }\n return NormalCompletion(undefined);\n case \"ReturnStatement\": {\n // https://tc39.es/ecma262/#sec-return-statement\n let v: unknown;\n if (node.argument) {\n const exprRef = yield* Evaluate(node.argument);\n v = GetValue(exprRef);\n }\n return new CompletionRecord(\"return\", v);\n }\n case \"ThisExpression\": {\n if (!externalSourceForDebug) {\n break;\n }\n const envRec = GetThisEnvironment();\n return NormalCompletion(envRec.GetThisBinding());\n }\n case \"ThrowStatement\":\n // https://tc39.es/ecma262/#sec-throw-statement\n throw GetValue(yield* Evaluate(node.argument));\n case \"UpdateExpression\": {\n // https://tc39.es/ecma262/#sec-update-expressions\n const lhs = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n const oldValue = Number(GetValue(lhs));\n const newValue = node.operator === \"++\" ? oldValue + 1 : oldValue - 1;\n PutValue(lhs, newValue);\n return NormalCompletion(node.prefix ? newValue : oldValue);\n }\n case \"SwitchCase\":\n return yield* EvaluateStatementList(node.consequent);\n case \"SwitchStatement\": {\n // https://tc39.es/ecma262/#sec-switch-statement\n const exprRef = yield* Evaluate(node.discriminant);\n const switchValue = GetValue(exprRef);\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.cases, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const R = yield* CaseBlockEvaluation(node.cases, switchValue);\n getRunningContext().LexicalEnvironment = oldEnv;\n return EvaluateBreakableStatement(R);\n }\n case \"TryStatement\": {\n // https://tc39.es/ecma262/#sec-try-statement\n let R: CompletionRecord;\n try {\n R = yield* Evaluate(node.block);\n } catch (error) {\n if (node.handler) {\n currentNode = node.handler;\n hooks.beforeEvaluate?.(node.handler);\n R = yield* CatchClauseEvaluation(node.handler, error);\n } else {\n throw error;\n }\n } finally {\n if (node.finalizer) {\n const F = yield* Evaluate(node.finalizer);\n if (F.Type !== \"normal\") {\n R = F;\n }\n }\n }\n return R;\n }\n case \"VariableDeclaration\": {\n // https://tc39.es/ecma262/#sec-declarations-and-the-variable-statement\n let result: CompletionRecord | undefined;\n for (const declarator of node.declarations) {\n currentNode = declarator;\n if (!declarator.init) {\n // Assert: a declarator without init is always an identifier.\n if (node.kind === \"var\") {\n result = NormalCompletion(Empty);\n } else {\n const lhs = ResolveBinding((declarator.id as Identifier).name);\n result = InitializeReferencedBinding(lhs, undefined);\n }\n } else if (declarator.id.type === \"Identifier\") {\n currentNode = declarator.init;\n if (debug) yield;\n const bindingId = declarator.id.name;\n const lhs = ResolveBinding(bindingId);\n let value: unknown;\n if (IsAnonymousFunctionDefinition(declarator.init)) {\n value = NamedEvaluation(declarator.init, bindingId);\n } else {\n const rhs = yield* Evaluate(declarator.init);\n value = GetValue(rhs);\n }\n result =\n node.kind === \"var\"\n ? PutValue(lhs, value)\n : InitializeReferencedBinding(lhs, value);\n } else {\n currentNode = declarator.init;\n if (debug) yield;\n const rhs = yield* Evaluate(declarator.init);\n const rval = GetValue(rhs);\n result = yield* BindingInitialization(\n declarator.id,\n rval,\n node.kind === \"var\"\n ? undefined\n : getRunningContext().LexicalEnvironment\n );\n }\n }\n return result!;\n }\n case \"WhileStatement\":\n // https://tc39.es/ecma262/#sec-while-statement\n return EvaluateBreakableStatement(yield* WhileLoopEvaluation(node));\n }\n }\n // eslint-disable-next-line no-console\n throw new SyntaxError(`Unsupported node type \\`${node.type}\\``);\n }\n\n // https://tc39.es/ecma262/#sec-execution-contexts\n function getRunningContext(): ExecutionContext {\n return executionContextStack[executionContextStack.length - 1];\n }\n\n // https://tc39.es/ecma262/#sec-resolvebinding\n function ResolveBinding(\n name: string,\n env?: EnvironmentRecord\n ): ReferenceRecord {\n if (!env) {\n env = getRunningContext().LexicalEnvironment;\n }\n return GetIdentifierReference(env, name, true);\n }\n\n // Try statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-catchclauseevaluation\n function* CatchClauseEvaluation(\n node: CatchClause,\n thrownValue: unknown\n ): CompletionRecordResult {\n if (!node.param) {\n return yield* Evaluate(node.body);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const catchEnv = new DeclarativeEnvironment(oldEnv);\n for (const argName of collectBoundNames(node.param)) {\n catchEnv.CreateMutableBinding(argName, false);\n }\n getRunningContext().LexicalEnvironment = catchEnv;\n yield* BindingInitialization(node.param, thrownValue, catchEnv);\n const B = yield* Evaluate(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return B;\n }\n\n // Iteration statements and switch statements.\n // https://tc39.es/ecma262/#prod-BreakableStatement\n function EvaluateBreakableStatement(\n stmtResult: CompletionRecord\n ): CompletionRecord {\n return stmtResult.Type === \"break\"\n ? stmtResult.Value === Empty\n ? NormalCompletion(undefined)\n : NormalCompletion(stmtResult.Value)\n : stmtResult;\n }\n\n // Switch statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n function* CaseBlockEvaluation(\n cases: SwitchCase[],\n input: unknown\n ): CompletionRecordResult {\n let V: unknown;\n\n const defaultCaseIndex = cases.findIndex((switchCase) => !switchCase.test);\n const hasDefaultCase = defaultCaseIndex >= 0;\n const A = hasDefaultCase ? cases.slice(0, defaultCaseIndex) : cases;\n let found = false;\n for (const C of A) {\n if (!found) {\n found = yield* CaseClauseIsSelected(C, input);\n }\n if (found) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n\n if (!hasDefaultCase) {\n return NormalCompletion(V);\n }\n\n let foundInB = false;\n const B = cases.slice(defaultCaseIndex + 1);\n if (!found) {\n for (const C of B) {\n if (!foundInB) {\n foundInB = yield* CaseClauseIsSelected(C, input);\n }\n if (foundInB) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n }\n\n if (foundInB) {\n return NormalCompletion(V);\n }\n const R = yield* Evaluate(cases[defaultCaseIndex]);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n\n // NOTE: The following is another complete iteration of the second CaseClauses.\n for (const C of B) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n return NormalCompletion(V);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseclauseisselected\n function* CaseClauseIsSelected(\n C: SwitchCase,\n input: unknown\n ): EvaluateResult<unknown, boolean> {\n const clauseSelector = GetValue(yield* Evaluate(C.test!));\n return input === clauseSelector;\n }\n\n // While statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-whileloopevaluation\n function* WhileLoopEvaluation(node: WhileStatement): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const exprValue = GetValue(yield* Evaluate(node.test, undefined, true));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n }\n }\n\n // Do-while Statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-dowhileloopevaluation\n function* DoWhileLoopEvaluation(\n node: DoWhileStatement\n ): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n const exprValue = GetValue(yield* Evaluate(node.test, undefined, true));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n }\n }\n\n // For in/of statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation\n function* ForInOfLoopEvaluation(\n node: ForInStatement | ForOfStatement\n ): CompletionRecordResult {\n const lhs = node.left;\n const isVariableDeclaration = lhs.type === \"VariableDeclaration\";\n const lhsKind = isVariableDeclaration\n ? lhs.kind === \"var\"\n ? \"varBinding\"\n : \"lexicalBinding\"\n : \"assignment\";\n const uninitializedBoundNames =\n lhsKind === \"lexicalBinding\" ? collectBoundNames(lhs) : [];\n const iterationKind =\n node.type === \"ForInStatement\" ? \"enumerate\" : \"iterate\";\n const keyResult = yield* ForInOfHeadEvaluation(\n uninitializedBoundNames,\n node.right,\n iterationKind\n );\n if (keyResult.Type !== \"normal\") {\n // When enumerate, if the target is nil, a break completion will be returned.\n return keyResult;\n }\n return yield* ForInOfBodyEvaluation(\n lhs,\n node.body,\n keyResult.Value as Iterator<unknown>,\n iterationKind,\n lhsKind\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofheadevaluation\n function* ForInOfHeadEvaluation(\n uninitializedBoundNames: string[],\n expr: Expression,\n iterationKind: \"enumerate\" | \"iterate\"\n ): CompletionRecordResult {\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (uninitializedBoundNames.length > 0) {\n const newEnv = new DeclarativeEnvironment(oldEnv);\n for (const name of uninitializedBoundNames) {\n newEnv.CreateMutableBinding(name, false);\n }\n runningContext.LexicalEnvironment = newEnv;\n }\n const exprRef = yield* Evaluate(expr, undefined, true);\n runningContext.LexicalEnvironment = oldEnv;\n const exprValue = GetValue(exprRef);\n if (iterationKind === \"enumerate\") {\n if (exprValue === null || exprValue === undefined) {\n return new CompletionRecord(\"break\", Empty);\n }\n const iterator = EnumerateObjectProperties(exprValue);\n return NormalCompletion(iterator);\n }\n const iterator = CreateListIteratorRecord(exprValue as Iterable<unknown>);\n return NormalCompletion(iterator);\n }\n\n function* ForInOfBodyEvaluation(\n node: VariableDeclaration | EstreeLVal,\n stmt: Statement,\n iteratorRecord: Iterator<unknown>,\n iterationKind: \"enumerate\" | \"iterate\",\n lhsKind: \"varBinding\" | \"lexicalBinding\" | \"assignment\"\n ): CompletionRecordResult {\n const lhs =\n lhsKind === \"assignment\"\n ? (node as EstreeLVal)\n : (node as VariableDeclaration).declarations[0].id;\n const oldEnv = getRunningContext().LexicalEnvironment;\n let V: unknown;\n // When `destructuring` is false,\n // For `node` whose `kind` is assignment:\n // `lhs` is an `Identifier` or a `MemberExpression`,\n // Otherwise:\n // `lhs` is an `Identifier`.\n const destructuring =\n lhs.type === \"ObjectPattern\" || lhs.type === \"ArrayPattern\";\n // eslint-disable-next-line no-constant-condition\n while (true) {\n currentNode = lhs;\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n if (debug) yield;\n return NormalCompletion(V);\n }\n let lhsRef: ReferenceRecord | undefined;\n let iterationEnv: DeclarativeEnvironment | undefined;\n if (lhsKind === \"lexicalBinding\") {\n iterationEnv = new DeclarativeEnvironment(oldEnv);\n ForDeclarationBindingInstantiation(\n node as VariableDeclaration,\n iterationEnv\n );\n getRunningContext().LexicalEnvironment = iterationEnv;\n if (debug) yield;\n if (!destructuring) {\n const [lhsName] = collectBoundNames(lhs);\n lhsRef = ResolveBinding(lhsName);\n }\n } else {\n if (debug) yield;\n if (!destructuring) {\n lhsRef = (yield* Evaluate(lhs)).Value as ReferenceRecord;\n }\n }\n\n destructuring\n ? lhsKind === \"assignment\"\n ? yield* DestructuringAssignmentEvaluation(lhs, nextValue)\n : lhsKind === \"varBinding\"\n ? yield* BindingInitialization(lhs, nextValue, undefined)\n : yield* BindingInitialization(lhs, nextValue, iterationEnv)\n : lhsKind === \"lexicalBinding\"\n ? InitializeReferencedBinding(lhsRef!, nextValue)\n : PutValue(lhsRef!, nextValue);\n\n const result = yield* Evaluate(stmt);\n getRunningContext().LexicalEnvironment = oldEnv;\n if (!LoopContinues(result)) {\n const status = UpdateEmpty(result, V);\n if (\n !(\n iterationKind === \"enumerate\" || iteratorRecord.return === undefined\n )\n ) {\n // Perform *IteratorClose*\n // https://tc39.es/ecma262/#sec-iteratorclose\n const innerResult = iteratorRecord.return();\n if (\n !innerResult ||\n ![\"object\", \"function\"].includes(typeof innerResult)\n ) {\n throw new TypeError(`Iterator result is not an object`);\n }\n }\n return status;\n }\n if (result.Value !== Empty) {\n V = result.Value;\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-enumerate-object-properties\n function* EnumerateObjectProperties(value: any): Iterator<PropertyKey> {\n for (const key in value) {\n yield key;\n }\n }\n\n // For statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forloopevaluation\n function* ForLoopEvaluation(node: ForStatement): CompletionRecordResult {\n if (node.init?.type === \"VariableDeclaration\") {\n // `for (var … ; … ; … ) …`\n if (node.init.kind === \"var\") {\n yield* Evaluate(node.init);\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n // `for (let/const … ; … ; … ) …`\n const oldEnv = getRunningContext().LexicalEnvironment;\n const loopEnv = new DeclarativeEnvironment(oldEnv);\n const isConst = node.init.kind === \"const\";\n const boundNames = collectBoundNames(node.init);\n for (const dn of boundNames) {\n if (isConst) {\n loopEnv.CreateImmutableBinding(dn, true);\n } else {\n loopEnv.CreateMutableBinding(dn, false);\n }\n }\n getRunningContext().LexicalEnvironment = loopEnv;\n yield* Evaluate(node.init);\n const perIterationLets = isConst ? [] : Array.from(boundNames);\n const bodyResult = yield* ForBodyEvaluation(\n node.test,\n node.update,\n node.body,\n perIterationLets\n );\n getRunningContext().LexicalEnvironment = oldEnv;\n return bodyResult;\n }\n // `for ( … ; … ; … ) …`\n if (node.init) {\n const exprRef = yield* Evaluate(node.init);\n GetValue(exprRef);\n }\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n\n // https://tc39.es/ecma262/#sec-forbodyevaluation\n function* ForBodyEvaluation(\n test: Expression | null | undefined,\n increment: Expression | null | undefined,\n stmt: Statement,\n perIterationBindings: string[]\n ): CompletionRecordResult {\n CreatePerIterationEnvironment(perIterationBindings);\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (test) {\n const testRef = yield* Evaluate(test, undefined, true);\n const testValue = GetValue(testRef);\n if (!testValue) {\n return NormalCompletion(V);\n }\n }\n const result = yield* Evaluate(stmt);\n if (!LoopContinues(result)) {\n return UpdateEmpty(result, V);\n }\n if (result.Value) {\n V = result.Value;\n }\n CreatePerIterationEnvironment(perIterationBindings);\n if (increment) {\n const incRef = yield* Evaluate(increment, undefined, true);\n GetValue(incRef);\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-createperiterationenvironment\n function CreatePerIterationEnvironment(\n perIterationBindings: string[]\n ): unknown {\n if (perIterationBindings.length === 0) {\n return;\n }\n const lastIterationEnv = getRunningContext().LexicalEnvironment!;\n const outer = lastIterationEnv.OuterEnv;\n const thisIterationEnv = new DeclarativeEnvironment(outer);\n for (const bn of perIterationBindings) {\n thisIterationEnv.CreateMutableBinding(bn, false);\n const lastValue = lastIterationEnv.GetBindingValue(bn, false);\n thisIterationEnv.InitializeBinding(bn, lastValue);\n }\n getRunningContext().LexicalEnvironment = thisIterationEnv;\n }\n\n // Destructuring assignments.\n // https://tc39.es/ecma262/#sec-runtime-semantics-destructuringassignmentevaluation\n function* DestructuringAssignmentEvaluation(\n pattern: ObjectPattern | EstreeObjectPattern | ArrayPattern,\n value: unknown\n ): CompletionRecordResult {\n if (pattern.type === \"ObjectPattern\") {\n RequireObjectCoercible(value);\n if (pattern.properties.length > 0) {\n yield* PropertyDestructuringAssignmentEvaluation(\n (pattern as EstreeObjectPattern).properties,\n value\n );\n }\n return NormalCompletion(Empty);\n }\n const iteratorRecord = CreateListIteratorRecord(value as Iterable<unknown>);\n return yield* IteratorDestructuringAssignmentEvaluation(\n pattern.elements,\n iteratorRecord\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-propertydestructuringassignmentevaluation\n function* PropertyDestructuringAssignmentEvaluation(\n properties: (EstreeProperty | RestElement)[],\n value: unknown\n ): EvaluateResult<unknown, void> {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"Property\") {\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : ((yield* EvaluateComputedPropertyName(\n prop.key as Expression\n )) as string);\n const valueTarget =\n prop.value.type === \"AssignmentPattern\"\n ? prop.value.left\n : prop.value;\n if (valueTarget.type === \"Identifier\") {\n const lref = ResolveBinding(valueTarget.name);\n let v = GetV(value, propName);\n if (prop.value.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(prop.value.right)) {\n v = NamedEvaluation(prop.value.right, valueTarget.name);\n } else {\n const defaultValue = yield* Evaluate(prop.value.right);\n v = GetValue(defaultValue);\n }\n }\n PutValue(lref, v);\n excludedNames.add(propName);\n } else {\n yield* KeyedDestructuringAssignmentEvaluation(\n prop.value,\n value,\n propName\n );\n excludedNames.add(propName);\n }\n } else {\n yield* RestDestructuringAssignmentEvaluation(\n prop,\n value,\n excludedNames\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyeddestructuringassignmentevaluation\n function* KeyedDestructuringAssignmentEvaluation(\n node: EstreeNode,\n value: unknown,\n propertyName: PropertyKey\n ): CompletionRecordResult {\n const assignmentTarget =\n node.type === \"AssignmentPattern\" ? node.left : node;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n const v = GetV(value, propertyName);\n let rhsValue;\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n // `assignmentTarget.type` is never \"Identifier\" here.\n const defaultValue = yield* Evaluate(node.right);\n rhsValue = GetValue(defaultValue);\n } else {\n rhsValue = v;\n }\n if (isObjectOrArray) {\n return yield* DestructuringAssignmentEvaluation(\n assignmentTarget,\n rhsValue\n );\n }\n return PutValue(lref!, rhsValue);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-restdestructuringassignmentevaluation\n function* RestDestructuringAssignmentEvaluation(\n restProperty: RestElement,\n value: unknown,\n excludedNames: Set<PropertyKey>\n ): CompletionRecordResult {\n const lref = (yield* Evaluate(restProperty.argument))\n .Value as ReferenceRecord;\n const restObj = CopyDataProperties({}, value, excludedNames);\n return PutValue(lref, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratordestructuringassignmentevaluation\n function* IteratorDestructuringAssignmentEvaluation(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>\n ): CompletionRecordResult {\n let status = NormalCompletion(Empty);\n for (const element of elements) {\n if (!element) {\n iteratorRecord.next();\n status = NormalCompletion(Empty);\n continue;\n }\n const assignmentTarget =\n element.type === \"RestElement\"\n ? element.argument\n : element.type === \"AssignmentPattern\"\n ? element.left\n : element;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n let v: unknown;\n if (element.type !== \"RestElement\") {\n const { done, value: nextValue } = iteratorRecord.next();\n const value = done ? undefined : nextValue;\n if (element.type === \"AssignmentPattern\" && value === undefined) {\n if (\n IsAnonymousFunctionDefinition(element.right) &&\n assignmentTarget.type === \"Identifier\"\n ) {\n v = NamedEvaluation(element.right, assignmentTarget.name);\n } else {\n const defaultValue = yield* Evaluate(element.right);\n v = GetValue(defaultValue);\n }\n } else {\n v = value;\n }\n } else {\n // RestElement\n v = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n break;\n }\n (v as unknown[])[n] = nextValue;\n n++;\n }\n }\n if (isObjectOrArray) {\n status = yield* DestructuringAssignmentEvaluation(assignmentTarget, v);\n } else {\n status = PutValue(lref!, v);\n }\n }\n return status;\n }\n\n // Object expressions.\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-expression-key\n function* EvaluatePropertyAccessWithExpressionKey(\n baseValue: Record<PropertyKey, unknown>,\n expression: Expression,\n strict: boolean\n ): EvaluateResult<unknown, ReferenceRecord> {\n const propertyNameReference = yield* Evaluate(expression);\n const propertyNameValue = GetValue(propertyNameReference);\n const propertyKey = ToPropertyKey(propertyNameValue);\n return new ReferenceRecord(baseValue, propertyKey, strict);\n }\n\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-identifier-key\n function EvaluatePropertyAccessWithIdentifierKey(\n baseValue: Record<PropertyKey, unknown>,\n identifier: Identifier,\n strict: boolean\n ): ReferenceRecord {\n currentNode = identifier;\n const propertyNameString = identifier.name;\n return new ReferenceRecord(baseValue, propertyNameString, strict);\n }\n\n // Block statements.\n // https://tc39.es/ecma262/#sec-blockdeclarationinstantiation\n function BlockDeclarationInstantiation(\n code: Statement[] | SwitchCase[],\n env: EnvironmentRecord\n ): void {\n const declarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: false,\n });\n for (const d of declarations) {\n const IsConstantDeclaration =\n d.type === \"VariableDeclaration\" && d.kind === \"const\";\n for (const dn of collectBoundNames(d)) {\n if (IsConstantDeclaration) {\n env.CreateImmutableBinding(dn, true);\n } else {\n env.CreateMutableBinding(dn, false);\n }\n }\n if (d.type === \"FunctionDeclaration\") {\n const [fn] = collectBoundNames(d);\n const fo = InstantiateFunctionObject(d, env);\n env.InitializeBinding(fn, fo);\n }\n }\n }\n\n // Function declarations and expressions.\n // https://tc39.es/ecma262/#sec-evaluatecall\n function* EvaluateCall(\n func: Function,\n ref: ReferenceRecord,\n args: CallExpression[\"arguments\"] | TemplateLiteral,\n callee: CallExpression[\"callee\"]\n ): CompletionRecordResult {\n let thisValue;\n if (ref instanceof ReferenceRecord) {\n if (IsPropertyReference(ref)) {\n thisValue = ref.Base;\n }\n }\n const argList = yield* ArgumentListEvaluation(args);\n if (typeof func !== \"function\") {\n const funcName = codeSource.substring(callee.start!, callee.end!);\n throw new TypeError(`${funcName} is not a function`);\n }\n\n if (debug || externalSourceForDebug) {\n const debuggerCall = (func as FunctionObject)[DebuggerCall];\n if (debuggerCall) {\n const result = yield* (debuggerCall as Function).apply(\n thisValue,\n argList\n );\n doSanitize(result);\n return NormalCompletion(result);\n }\n }\n\n const result = func.apply(thisValue, argList);\n doSanitize(result);\n return NormalCompletion(result);\n }\n\n // https://tc39.es/ecma262/#sec-evaluatenew\n function* EvaluateNew(\n constructExpr: CallExpression[\"callee\"],\n args: NewExpression[\"arguments\"]\n ): CompletionRecordResult {\n const ref = yield* Evaluate(constructExpr);\n const constructor = GetValue(ref) as new (...args: unknown[]) => unknown;\n const argList = yield* ArgumentListEvaluation(args);\n if (\n typeof constructor !== \"function\" ||\n (constructor as unknown as FunctionObject)[IsConstructor] === false\n ) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not a constructor`);\n }\n if (\n !externalSourceForDebug &&\n !isAllowedConstructor(constructor) &&\n constructor !== ArrayConstructor\n ) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not an allowed constructor`);\n }\n\n return NormalCompletion(new constructor(...argList));\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-argumentlistevaluation\n function* ArgumentListEvaluation(\n args: CallExpression[\"arguments\"] | TemplateLiteral\n ): EvaluateResult<unknown, unknown[]> {\n const array: unknown[] = [];\n if (Array.isArray(args)) {\n for (const arg of args) {\n if (arg.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(arg.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(arg)));\n }\n }\n } else {\n array.push(GetTemplateObject(args));\n for (const expr of args.expressions) {\n array.push(GetValue(yield* Evaluate(expr)));\n }\n }\n return array;\n }\n\n // https://tc39.es/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n function* CallFunction(\n closure: FunctionObject,\n thisArgument: unknown,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, unknown> {\n hooks.beforeCall?.(closure[SourceNode]);\n const calleeContext = PrepareForOrdinaryCall(closure);\n OrdinaryCallBindThis(closure, calleeContext, thisArgument);\n const result = yield* OrdinaryCallEvaluateBody(closure, args);\n if (debug) {\n currentNode = {\n ...closure[SourceNode],\n [DebuggerReturn]: true,\n } as EstreeNode & {\n [DebuggerReturn]?: boolean;\n };\n yield {\n type: \"return\",\n value: result.Type === \"return\" ? result.Value : undefined,\n };\n }\n executionContextStack.pop();\n if (result.Type === \"return\") {\n return result.Value;\n }\n return undefined;\n }\n\n // https://tc39.es/ecma262/#sec-prepareforordinarycall\n function PrepareForOrdinaryCall(F: FunctionObject): ExecutionContext {\n const calleeContext = new ExecutionContext();\n calleeContext.Function = F;\n const localEnv = new FunctionEnvironment(F);\n calleeContext.VariableEnvironment = localEnv;\n calleeContext.LexicalEnvironment = localEnv;\n executionContextStack.push(calleeContext);\n return calleeContext;\n }\n\n function OrdinaryCallBindThis(\n F: FunctionObject,\n calleeContext: ExecutionContext,\n thisArgument: unknown\n ) {\n if (F[ThisMode] === Mode.LEXICAL) {\n return;\n }\n const localEnv = calleeContext.LexicalEnvironment;\n (localEnv as FunctionEnvironment)?.BindThisValue(thisArgument);\n }\n\n // https://tc39.es/ecma262/#sec-ordinarycallevaluatebody\n function* OrdinaryCallEvaluateBody(\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n return yield* EvaluateFunctionBody(F[ECMAScriptCode], F, args);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-evaluatefunctionbody\n function* EvaluateFunctionBody(\n body: Statement[] | Expression,\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n yield* FunctionDeclarationInstantiation(F, args);\n if (Array.isArray(body)) {\n return yield* EvaluateStatementList(body);\n }\n return new CompletionRecord(\"return\", GetValue(yield* Evaluate(body)));\n }\n\n // https://tc39.es/ecma262/#sec-block-runtime-semantics-evaluation\n function* EvaluateStatementList(\n statements: Statement[]\n ): CompletionRecordResult {\n let result = NormalCompletion(Empty);\n for (const stmt of statements) {\n const s = yield* Evaluate(stmt);\n if (s.Type !== \"normal\") {\n return s;\n }\n result = UpdateEmpty(result, s.Value);\n }\n return result;\n }\n\n function GetThisEnvironment(): FunctionEnvironment {\n let env: EnvironmentRecord | null | undefined =\n getRunningContext().LexicalEnvironment;\n while (env) {\n if (env.HasThisBinding()) {\n return env as FunctionEnvironment;\n }\n env = env.OuterEnv;\n }\n throw new Error(\"Accessing global this is forbidden\");\n }\n\n // https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition\n function IsAnonymousFunctionDefinition(\n node: EstreeNode\n ): node is FunctionDefinition {\n // No ParenthesizedExpression in ESTree.\n return (\n (node.type === \"FunctionExpression\" && !node.id) ||\n node.type === \"ArrowFunctionExpression\"\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation\n function NamedEvaluation(node: FunctionDefinition, name: string) {\n // No ParenthesizedExpression in ESTree.\n switch (node.type) {\n case \"FunctionExpression\":\n return InstantiateOrdinaryFunctionExpression(node, name);\n case \"ArrowFunctionExpression\":\n return InstantiateArrowFunctionExpression(node, name);\n // istanbul ignore next: should never happen\n default:\n throw new Error(\n `Unexpected node type for NamedEvaluation: ${(node as FunctionDefinition).type}`\n );\n }\n }\n\n // https://tc39.es/ecma262/#sec-functiondeclarationinstantiation\n function* FunctionDeclarationInstantiation(\n func: FunctionObject,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, void> {\n const calleeContext = getRunningContext();\n const code = func[ECMAScriptCode];\n const formals = func[FormalParameters] as FunctionDeclaration[\"params\"];\n const parameterNames = collectBoundNames(formals);\n const hasParameterExpressions = containsExpression(formals);\n const varDeclarations = collectScopedDeclarations(code, {\n var: true,\n topLevel: true,\n });\n const varNames = collectBoundNames(varDeclarations);\n\n // `functionNames` ∈ `varNames`\n // `functionsToInitialize` ≈ `functionNames`\n const functionNames: string[] = [];\n const functionsToInitialize: FunctionDeclaration[] = [];\n for (let i = varDeclarations.length - 1; i >= 0; i--) {\n const d = varDeclarations[i];\n if (d.type === \"FunctionDeclaration\") {\n ThrowIfFunctionIsInvalid(d);\n const [fn] = collectBoundNames(d);\n if (!functionNames.includes(fn)) {\n functionNames.unshift(fn);\n functionsToInitialize.unshift(d);\n }\n } else if (rules?.noVar) {\n throw new SyntaxError(\n \"Var declaration is not recommended, use `let` or `const` instead\"\n );\n }\n }\n\n // let argumentsObjectNeeded = true;\n // if (func[ThisMode] === Mode.LEXICAL) {\n // // NOTE: Arrow functions never have an arguments object.\n // argumentsObjectNeeded = false;\n // } else if (parameterNames.includes(\"arguments\")) {\n // argumentsObjectNeeded = false;\n // } else if (!hasParameterExpressions && (\n // varNames.includes(\"arguments\") ||\n // collectBoundNames(collectScopedDeclarations(code, { var: false })).includes(\"arguments\")\n // )) {\n // argumentsObjectNeeded = false;\n // }\n // NOTE: In strict mode, no parameter/function/var/lexical names can be \"arguments\".\n const argumentsObjectNeeded =\n !!externalSourceForDebug && func[ThisMode] !== Mode.LEXICAL;\n\n const env = calleeContext.LexicalEnvironment!;\n for (const paramName of parameterNames) {\n // In strict mode, it's guaranteed no duplicate params exist.\n env.CreateMutableBinding(paramName, false);\n }\n\n let parameterBindings = parameterNames;\n if (argumentsObjectNeeded) {\n const ao = CreateUnmappedArgumentsObject(args);\n env.CreateImmutableBinding(\"arguments\", false);\n env.InitializeBinding(\"arguments\", ao);\n parameterBindings = parameterNames.concat(\"arguments\");\n }\n\n const iteratorRecord = CreateListIteratorRecord(args);\n yield* IteratorBindingInitialization(formals, iteratorRecord, env);\n\n let varEnv: EnvironmentRecord;\n if (!hasParameterExpressions) {\n // NOTE: Only a single Environment Record is needed for the parameters\n // and top-level vars.\n // `varNames` are unique.\n const instantiatedVarNames = [...parameterBindings];\n for (const n of varNames) {\n if (!instantiatedVarNames.includes(n)) {\n instantiatedVarNames.push(n);\n env.CreateMutableBinding(n, false);\n env.InitializeBinding(n, undefined);\n }\n }\n varEnv = env;\n } else {\n // NOTE: A separate Environment Record is needed to ensure that closures\n // created by expressions in the formal parameter list do not have\n // visibility of declarations in the function body.\n varEnv = new DeclarativeEnvironment(env);\n calleeContext.VariableEnvironment = varEnv;\n // `varNames` are unique.\n const instantiatedVarNames: string[] = [];\n for (const n of varNames) {\n if (!instantiatedVarNames.includes(n)) {\n instantiatedVarNames.push(n);\n varEnv.CreateMutableBinding(n, false);\n let initialValue: unknown;\n if (parameterBindings.includes(n) && !functionNames.includes(n)) {\n initialValue = env.GetBindingValue(n, false);\n }\n varEnv.InitializeBinding(n, initialValue);\n // NOTE: A var with the same name as a formal parameter initially has\n // the same value as the corresponding initialized parameter.\n }\n }\n }\n const lexEnv = varEnv;\n calleeContext.LexicalEnvironment = lexEnv;\n\n const lexDeclarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: true,\n });\n for (const d of lexDeclarations) {\n for (const dn of collectBoundNames(d)) {\n // Only lexical VariableDeclaration here in top-level.\n if ((d as VariableDeclaration).kind === \"const\") {\n lexEnv.CreateImmutableBinding(dn, true);\n } else {\n lexEnv.CreateMutableBinding(dn, false);\n }\n }\n }\n\n for (const f of functionsToInitialize) {\n const [fn] = collectBoundNames(f);\n const fo = InstantiateFunctionObject(f, lexEnv);\n varEnv.SetMutableBinding(fn, fo, false);\n }\n }\n\n function CreateUnmappedArgumentsObject(args: Iterable<unknown>) {\n const argList = [...args];\n const argumentObject: Record<string, unknown> = {};\n Object.defineProperty(argumentObject, \"length\", {\n value: argList.length,\n writable: true,\n configurable: true,\n });\n for (let index = 0; index < argList.length; index++) {\n argumentObject[String(index)] = argList[index];\n }\n Object.defineProperty(argumentObject, Symbol.iterator, {\n value: Array.prototype.values,\n writable: true,\n configurable: true,\n });\n const ThrowTypeError = () => {\n throw new TypeError(\n \"'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them\"\n );\n };\n Object.defineProperty(argumentObject, \"callee\", {\n get: ThrowTypeError,\n set: ThrowTypeError,\n });\n return argumentObject;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatefunctionobject\n function InstantiateFunctionObject(\n func: FunctionDeclaration,\n scope: EnvironmentRecord\n ): FunctionObject {\n const F = OrdinaryFunctionCreate(func, scope, true, false);\n\n if (func.id) {\n SetFunctionName(F, func.id.name);\n }\n\n return F;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n if (functionExpression.id) {\n const name = functionExpression.id.name;\n const funcEnv = new DeclarativeEnvironment(scope);\n funcEnv.CreateImmutableBinding(name, false);\n const closure = OrdinaryFunctionCreate(\n functionExpression,\n funcEnv,\n true,\n false\n );\n SetFunctionName(closure, name);\n funcEnv.InitializeBinding(name, closure);\n return closure;\n } else {\n const closure = OrdinaryFunctionCreate(\n functionExpression,\n scope,\n true,\n false\n );\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatearrowfunctionexpression\n function InstantiateArrowFunctionExpression(\n arrowFunction: ArrowFunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n const closure = OrdinaryFunctionCreate(arrowFunction, scope, false, true);\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n\n function SetFunctionName(F: FunctionObject, name: string) {\n Object.defineProperty(F, \"name\", {\n value: name,\n configurable: true,\n });\n }\n\n // https://tc39.es/ecma262/#sec-ordinaryfunctioncreate\n function OrdinaryFunctionCreate(\n sourceNode:\n | FunctionDeclaration\n | FunctionExpression\n | ArrowFunctionExpression,\n scope: EnvironmentRecord,\n isConstructor: boolean,\n lexicalThis: boolean\n ): FunctionObject {\n const F = function (this: unknown) {\n // eslint-disable-next-line prefer-rest-params\n return unwind(CallFunction(F, this, arguments));\n } as FunctionObject;\n Object.defineProperties(F, {\n [SourceNode]: {\n value: sourceNode,\n },\n [FormalParameters]: {\n value: sourceNode.params,\n },\n [ECMAScriptCode]: {\n value:\n sourceNode.body.type === \"BlockStatement\"\n ? sourceNode.body.body\n : sourceNode.body,\n },\n [Environment]: {\n value: scope,\n },\n [IsConstructor]: {\n value: isConstructor,\n },\n [ThisMode]: {\n value: lexicalThis ? Mode.LEXICAL : Mode.STRICT,\n },\n });\n if (debug || externalSourceForDebug) {\n Object.defineProperty(F, DebuggerCall, {\n value: function () {\n // eslint-disable-next-line prefer-rest-params\n return CallFunction(F, this, arguments);\n },\n });\n }\n return F;\n }\n\n // Patterns initialization.\n // https://tc39.es/ecma262/#sec-runtime-semantics-bindinginitialization\n function* BindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n switch (node.type) {\n case \"Identifier\":\n return InitializeBoundName(node.name, value, environment);\n case \"ObjectPattern\":\n RequireObjectCoercible(value);\n return yield* PropertyBindingInitialization(\n (node as EstreeObjectPattern).properties,\n value,\n environment\n );\n case \"ArrayPattern\": {\n const iteratorRecord = CreateListIteratorRecord(\n value as Iterable<unknown>\n );\n return yield* IteratorBindingInitialization(\n node.elements,\n iteratorRecord,\n environment\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization\n function* PropertyBindingInitialization(\n properties: (EstreeProperty | RestElement)[],\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecordResult {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"RestElement\") {\n return RestBindingInitialization(\n prop,\n value,\n environment,\n excludedNames\n );\n }\n if (!prop.computed && prop.key.type === \"Identifier\") {\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n prop.key.name\n );\n excludedNames.add(prop.key.name);\n } else {\n const P = yield* EvaluateComputedPropertyName(prop.key as Expression);\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n P\n );\n excludedNames.add(P);\n }\n }\n return NormalCompletion(Empty);\n }\n\n // https://tc39.es/ecma262/#prod-ComputedPropertyName\n function* EvaluateComputedPropertyName(\n node: Expression\n ): EvaluateResult<unknown, PropertyKey> {\n const propName = GetValue(yield* Evaluate(node));\n return ToPropertyKey(propName);\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization\n function RestBindingInitialization(\n restProperty: RestElement,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n excludedNames: Set<PropertyKey>\n ): CompletionRecord {\n const lhs = ResolveBinding(\n (restProperty.argument as Identifier).name,\n environment\n );\n const restObj = CopyDataProperties({}, value, excludedNames);\n if (!environment) {\n return PutValue(lhs, restObj);\n }\n return InitializeReferencedBinding(lhs, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratorbindinginitialization\n function* IteratorBindingInitialization(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n if (elements.length === 0) {\n return NormalCompletion(Empty);\n }\n let result;\n for (const node of elements) {\n if (!node) {\n // Elision element.\n iteratorRecord.next();\n result = NormalCompletion(Empty);\n } else if (node.type === \"RestElement\") {\n // Rest element.\n if (node.argument.type === \"Identifier\") {\n const lhs = ResolveBinding(node.argument.name, environment);\n const A: unknown[] = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = environment\n ? InitializeReferencedBinding(lhs, A)\n : PutValue(lhs, A);\n break;\n }\n A[n] = value;\n n++;\n }\n } else {\n const A: unknown[] = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = yield* BindingInitialization(\n node.argument,\n A,\n environment\n );\n break;\n }\n A[n] = value;\n n++;\n }\n }\n } else {\n // Normal element.\n const bindingElement =\n node.type === \"AssignmentPattern\" ? node.left : node;\n switch (bindingElement.type) {\n case \"ObjectPattern\":\n case \"ArrayPattern\": {\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n result = yield* BindingInitialization(\n bindingElement,\n v,\n environment\n );\n break;\n }\n case \"Identifier\": {\n const bindingId = bindingElement.name;\n const lhs = ResolveBinding(bindingId, environment);\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n result = environment\n ? InitializeReferencedBinding(lhs, v)\n : PutValue(lhs, v);\n break;\n }\n }\n }\n }\n return result;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyedbindinginitialization\n function* KeyedBindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n propertyName: PropertyKey\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n const isIdentifier =\n node.type === \"Identifier\" ||\n (node.type === \"AssignmentPattern\" && node.left.type === \"Identifier\");\n if (isIdentifier) {\n const bindingId =\n node.type === \"Identifier\" ? node.name : (node.left as Identifier).name;\n const lhs = ResolveBinding(bindingId, environment);\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n if (!environment) {\n return PutValue(lhs, v);\n }\n return InitializeReferencedBinding(lhs, v);\n }\n\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n return yield* BindingInitialization(\n node.type === \"AssignmentPattern\" ? node.left : node,\n v,\n environment\n );\n }\n\n // https://tc39.es/ecma262/#sec-initializeboundname\n function InitializeBoundName(\n name: string,\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecord {\n // Assert: environment is always present.\n environment!.InitializeBinding(name, value);\n return NormalCompletion(Empty);\n }\n\n function ThrowIfFunctionIsInvalid(\n func: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression\n ): void {\n if (func.async || func.generator) {\n throw new SyntaxError(\n `${func.async ? \"Async\" : \"Generator\"} function is not allowed`\n );\n }\n if (expressionOnly && !(func as ArrowFunctionExpression).expression) {\n throw new SyntaxError(\n \"Only an `Expression` is allowed in `ArrowFunctionExpression`'s body\"\n );\n }\n }\n\n if (expressionOnly) {\n return GetValue(unwind(Evaluate(rootAst)));\n }\n\n hooks.beforeEvaluate?.(rootAst);\n ThrowIfFunctionIsInvalid(rootAst);\n const [fn] = collectBoundNames(rootAst);\n // Create an immutable binding for the root function.\n rootEnv.CreateImmutableBinding(fn, true);\n const fo = InstantiateFunctionObject(rootAst, rootEnv);\n rootEnv.InitializeBinding(fn, fo);\n\n if (debug) {\n Object.defineProperties(fo, {\n [DebuggerScope]: {\n value: function () {\n return getRunningContext().LexicalEnvironment;\n },\n },\n [DebuggerNode]: {\n value: function () {\n return currentNode;\n },\n },\n });\n }\n\n return fo;\n}\n\nfunction unwind(iterator: EvaluateResult<unknown, unknown>): unknown {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iterator.next();\n if (done) {\n return value;\n }\n }\n}\n"],"mappings":"AAwBA,SACEA,8BAA8B,EAC9BC,wBAAwB,EACxBC,kCAAkC,EAClCC,IAAI,EACJC,QAAQ,EACRC,2BAA2B,EAC3BC,mBAAmB,EACnBC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,EACtBC,aAAa,EACbC,WAAW,EACXC,kBAAkB,EAClBC,sBAAsB,EACtBC,kCAAkC,EAClCC,kBAAkB,QACb,mBAAmB;AAC1B,SACEC,gBAAgB,EAChBC,YAAY,EACZC,YAAY,EACZC,cAAc,EACdC,aAAa,EACbC,sBAAsB,EACtBC,cAAc,EACdC,KAAK,EACLC,WAAW,EAEXC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,EAEnBC,aAAa,EACbC,gBAAgB,EAEhBC,eAAe,EACfC,UAAU,EACVC,IAAI,EACJC,QAAQ,QACH,uBAAuB;AAU9B,SAASC,QAAQ,EAAEC,oBAAoB,QAAQ,eAAe;AAC9D,SACEC,iBAAiB,EACjBC,yBAAyB,EACzBC,kBAAkB,QACb,eAAe;AAuBtB;AACA,OAAO,SAASC,IAAIA,CAClBC,OAAyC,EACzCC,UAAkB,EAUT;EAAA,IAAAC,sBAAA;EAAA,IATT;IACEC,KAAK;IACLC,KAAK;IACLC,sBAAsB;IACtBC,eAAe,GAAG,CAAC,CAAC;IACpB;IACAC,gBAAgB,GAAGC,KAAK;IACxBC,KAAK,GAAG,CAAC;EACE,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEnB,MAAMG,cAAc,GAAGb,OAAO,CAACc,IAAI,KAAK,qBAAqB;EAE7D,SAASC,UAAUA,CAACC,MAAe,EAAE;IACnC,IAAI,CAACX,sBAAsB,EAAE;MAC3BX,QAAQ,CAACsB,MAAM,CAAC;IAClB;EACF;EAEA,MAAMC,OAAO,GAAG,IAAIpC,sBAAsB,CAAC,IAAI,CAAC;EAChD,MAAMqC,WAAW,GAAG,IAAIjC,gBAAgB,CAAC,CAAC;EAC1CiC,WAAW,CAACC,mBAAmB,GAAGF,OAAO;EACzCC,WAAW,CAACE,kBAAkB,GAAGH,OAAO;EACxC,MAAMI,qBAAqB,GAAG,CAACH,WAAW,CAAC;EAE3C,KAAK,MAAM,CAACI,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACnB,eAAe,CAAC,EAAE;IAC1DW,OAAO,CAACS,sBAAsB,CAACJ,GAAG,EAAE,IAAI,CAAC;IACzCL,OAAO,CAACU,iBAAiB,CAACL,GAAG,EAAEC,KAAK,CAAC;EACvC;EAEA,MAAMK,WAAW,GAAG,IAAIC,OAAO,CAA4B,CAAC;;EAE5D;EACA,SAASC,iBAAiBA,CAACC,eAAgC,EAAY;IACrE,MAAMC,IAAI,GAAGJ,WAAW,CAACK,GAAG,CAACF,eAAe,CAAC;IAC7C,IAAIC,IAAI,EAAE;MACR,OAAOA,IAAI;IACb;IACA,MAAME,MAAM,GAAGH,eAAe,CAACI,MAAM,CAACC,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACd,KAAK,CAACe,GAAG,CAAC;IACrE,MAAMC,QAAQ,GAAGR,eAAe,CAACI,MAAM,CAACC,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACd,KAAK,CAACP,MAAO,CAAC;IAC3EQ,MAAM,CAACgB,MAAM,CAACN,MAAM,CAAC;IACrBV,MAAM,CAACiB,cAAc,CAACF,QAAQ,EAAE,KAAK,EAAE;MACrChB,KAAK,EAAEW,MAAM;MACbQ,QAAQ,EAAE,KAAK;MACfC,UAAU,EAAE,KAAK;MACjBC,YAAY,EAAE;IAChB,CAAC,CAAC;IACFpB,MAAM,CAACgB,MAAM,CAACD,QAAQ,CAAC;IACvBX,WAAW,CAACiB,GAAG,CAACd,eAAe,EAAEQ,QAAQ,CAAC;IAC1C,OAAOA,QAAQ;EACjB;EAEA,IAAIO,WAAmC;EAEvC,UAAUC,QAAQA,CAChBC,IAAgB,EAChBC,gBAAmC,EACnCC,UAAoB,EACI;IAAA,IAAAC,qBAAA,EAAAC,oBAAA;IACxB,CAAAD,qBAAA,GAAA1C,KAAK,CAAC4C,cAAc,cAAAF,qBAAA,eAApBA,qBAAA,CAAAG,IAAA,CAAA7C,KAAK,EAAkBuC,IAAI,CAAC;IAC5BF,WAAW,GAAGE,IAAI;IAClB,IACE5C,KAAK,KACJ8C,UAAU,IACRF,IAAI,CAAClC,IAAI,CAACyC,QAAQ,CAAC,WAAW,CAAC,IAC9B,EACEP,IAAI,CAAClC,IAAI,KAAK,qBAAqB,KAClCkC,IAAI,CAACQ,UAAU,CAAC1C,IAAI,KAAK,gBAAgB,IACxCkC,IAAI,CAACQ,UAAU,CAAC1C,IAAI,KAAK,0BAA0B,CAAC,CACvD,IACDkC,IAAI,CAAClC,IAAI,KAAK,cAAc,IAC5BkC,IAAI,CAAClC,IAAI,KAAK,gBAAgB,IAC9BkC,IAAI,CAAClC,IAAI,KAAK,kBAAkB,IAChCkC,IAAI,CAAClC,IAAI,KAAK,gBAAgB,IAC9BkC,IAAI,CAAClC,IAAI,KAAK,cAAc,IAC5BkC,IAAI,CAAClC,IAAI,KAAK,gBAAgB,IAC9BkC,IAAI,CAAClC,IAAI,KAAK,gBAAiB,CAAC,EACpC;MACA,KAAK;IACP;IACA;IACA,QAAQkC,IAAI,CAAClC,IAAI;MACf,KAAK,iBAAiB;QAAE;UACtB;UACA,MAAM2C,KAAK,GAAG,IAAIlD,gBAAgB,CAAC,CAAC;UACpC,KAAK,MAAMmD,OAAO,IAAIV,IAAI,CAACW,QAAQ,EAAE;YACnC,IAAI,CAACD,OAAO,EAAE;cACZD,KAAK,CAAC9C,MAAM,IAAI,CAAC;YACnB,CAAC,MAAM,IAAI+C,OAAO,CAAC5C,IAAI,KAAK,eAAe,EAAE;cAC3C,MAAM8C,YAAY,GAAGhG,QAAQ,CAC3B,OAAOmF,QAAQ,CAACW,OAAO,CAACG,QAAQ,CAClC,CAAc;cACdJ,KAAK,CAACK,IAAI,CAAC,GAAGF,YAAY,CAAC;YAC7B,CAAC,MAAM;cACLH,KAAK,CAACK,IAAI,CAAClG,QAAQ,CAAC,OAAOmF,QAAQ,CAACW,OAAO,CAAC,CAAC,CAAC;YAChD;UACF;UACA,OAAOrE,gBAAgB,CAACoE,KAAK,CAAC;QAChC;MACA,KAAK,yBAAyB;QAAE;UAC9B;UACAM,wBAAwB,CAACf,IAAI,CAAC;UAC9B,MAAMgB,OAAO,GAAGC,kCAAkC,CAACjB,IAAI,CAAC;UACxD,OAAO3D,gBAAgB,CAAC2E,OAAO,CAAC;QAClC;MACA,KAAK,kBAAkB;QAAE;UACvB,MAAME,OAAO,GAAG,OAAOnB,QAAQ,CAACC,IAAI,CAACmB,IAAI,CAAC;UAC1C,MAAMC,SAAS,GAAGxG,QAAQ,CAACsG,OAAO,CAAC;UACnC,MAAMG,QAAQ,GAAG,OAAOtB,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;UAC5C,MAAMC,UAAU,GAAG3G,QAAQ,CAACyG,QAAQ,CAAC;UACrC,IAAIxD,cAAc,IAAKmC,IAAI,CAACwB,QAAQ,KAAiB,IAAI,EAAE;YACzD;YACA;YACA;YACA,IAAI,OAAOD,UAAU,KAAK,UAAU,EAAE;cACpC,MAAME,QAAQ,GAAGxE,UAAU,CAACyE,SAAS,CACnC1B,IAAI,CAACsB,KAAK,CAACK,KAAK,EAChB3B,IAAI,CAACsB,KAAK,CAACM,GACb,CAAC;cACD,MAAM,IAAIC,SAAS,CAAC,GAAGJ,QAAQ,oBAAoB,CAAC;YACtD;YACA,IAAIK,SAAS;YACb,IAAIT,QAAQ,YAAY/E,eAAe,EAAE;cACvC,IAAIxB,mBAAmB,CAACuG,QAAQ,CAAC,EAAE;gBACjCS,SAAS,GAAGT,QAAQ,CAACU,IAAI;cAC3B;YACF;YACA,OAAO1F,gBAAgB,CACpBkF,UAAU,CAAyBjB,IAAI,CAACwB,SAAS,EAAEV,SAAS,CAC/D,CAAC;UACH;UACA;UACA,MAAMY,MAAM,GAAGtH,kCAAkC,CAC/C0G,SAAS,EACTpB,IAAI,CAACwB,QAAQ,EACbD,UACF,CAAC;UACD,OAAOlF,gBAAgB,CAAC2F,MAAM,CAAC;QACjC;MACA,KAAK,gBAAgB;QAAE;UACrB;UACA,MAAMC,GAAG,GAAG,CAAC,OAAOlC,QAAQ,CAACC,IAAI,CAACkC,MAAM,EAAEjC,gBAAgB,CAAC,EACxDkC,KAAwB;UAC3B,MAAMC,IAAI,GAAGxH,QAAQ,CAACqH,GAAG,CAAa;UACtC,IACE,CAACG,IAAI,KAAKxE,SAAS,IAAIwE,IAAI,KAAK,IAAI,MACnCpC,IAAI,CAACqC,QAAQ,IAAIpC,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAEqC,OAAO,CAAC,EAC5C;YACArC,gBAAgB,CAAEqC,OAAO,GAAG,IAAI;YAChC,OAAOjG,gBAAgB,CAACuB,SAAS,CAAC;UACpC;UACAG,UAAU,CAACqE,IAAI,CAAC;UAEhB,IAAIhF,KAAK,EAAE,KAAK;UAEhB,OAAO,OAAOmF,YAAY,CAACH,IAAI,EAAEH,GAAG,EAAEjC,IAAI,CAACtC,SAAS,EAAEsC,IAAI,CAACkC,MAAM,CAAC;QACpE;MACA,KAAK,iBAAiB;QACpB;QACA,OAAO,OAAOnC,QAAQ,CAACC,IAAI,CAACQ,UAAU,EAAE,CAAC,CAAC,CAAC;MAC7C,KAAK,uBAAuB;QAC1B;QACA,OAAOnE,gBAAgB,CACrBzB,QAAQ,CACN,OAAOmF,QAAQ,CACbnF,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACwC,IAAI,CAAC,CAAC,GAChCxC,IAAI,CAACyC,UAAU,GACfzC,IAAI,CAAC0C,SACX,CACF,CACF,CAAC;MACH,KAAK,YAAY;QACf;QACA,OAAOrG,gBAAgB,CAACsG,cAAc,CAAC3C,IAAI,CAAC4C,IAAI,CAAC,CAAC;MACpD,KAAK,SAAS;QAAE;UACd;UACA,IAAI5C,IAAI,CAAC6C,KAAK,EAAE;YACd,IAAI7C,IAAI,CAACzB,KAAK,KAAK,IAAI,EAAE;cACvB;cACA,MAAM,IAAIuE,WAAW,CAAC,+BAA+B9C,IAAI,CAACV,GAAG,EAAE,CAAC;YAClE;YACA,IAAIU,IAAI,CAAC6C,KAAK,CAACE,KAAK,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;cAClC;cACA,MAAM,IAAIF,WAAW,CACnB,mDAAmD9C,IAAI,CAACV,GAAG,EAC7D,CAAC;YACH;UACF;UACA,OAAOjD,gBAAgB,CAAC2D,IAAI,CAACzB,KAAK,CAAC;QACrC;MACA,KAAK,mBAAmB;QAAE;UACxB;UACA,MAAM6C,SAAS,GAAGxG,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACmB,IAAI,CAAC,CAAC;UACtD,QAAQnB,IAAI,CAACwB,QAAQ;YACnB,KAAK,IAAI;cACP,OAAOnF,gBAAgB,CACrB+E,SAAS,IAAIxG,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC,CACnD,CAAC;YACH,KAAK,IAAI;cACP,OAAOjF,gBAAgB,CACrB+E,SAAS,IAAIxG,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC,CACnD,CAAC;YACH,KAAK,IAAI;cACP,OAAOjF,gBAAgB,CACrB+E,SAAS,IAAIxG,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC,CACnD,CAAC;YACH;YACA;cACE,MAAM,IAAIwB,WAAW;cACnB;cACA;cACA,iCAAiC9C,IAAI,CAACwB,QAAQ,GAChD,CAAC;UACL;QACF;MACA,KAAK,kBAAkB;QAAE;UACvB;UACA,MAAMyB,aAAa,GAAG,CAAC,OAAOlD,QAAQ,CAACC,IAAI,CAACkD,MAAM,EAAEjD,gBAAgB,CAAC,EAClEkC,KAAwB;UAC3B,MAAMgB,SAAS,GAAGvI,QAAQ,CAACqI,aAAa,CAGvC;UACD,IACE,CAACE,SAAS,KAAKvF,SAAS,IAAIuF,SAAS,KAAK,IAAI,MAC7CnD,IAAI,CAACqC,QAAQ,IAAIpC,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAEqC,OAAO,CAAC,EAC5C;YACArC,gBAAgB,CAAEqC,OAAO,GAAG,IAAI;YAChC,OAAOjG,gBAAgB,CAACuB,SAAS,CAAC;UACpC;UACAG,UAAU,CAACoF,SAAS,CAAC;UACrB,MAAMnB,MAAM,GAAGhC,IAAI,CAACoD,QAAQ,GACxB,OAAOC,uCAAuC,CAC5CF,SAAS,EACTnD,IAAI,CAACsD,QAAQ,EACb,IACF,CAAC,GACDC,uCAAuC,CACrCJ,SAAS,EACTnD,IAAI,CAACsD,QAAQ,EACb,IACF,CAAC;UACLvF,UAAU,CAACiE,MAAM,CAAC;UAClB,OAAO3F,gBAAgB,CAAC2F,MAAM,CAAC;QACjC;MACA,KAAK,eAAe;QAClB;QACA,OAAO,OAAOwB,WAAW,CAACxD,IAAI,CAACkC,MAAM,EAAElC,IAAI,CAACtC,SAAS,CAAC;MACxD,KAAK,kBAAkB;QAAE;UACvB;UACA,MAAMwF,MAAoC,GAAG,CAAC,CAAC;UAC/C,KAAK,MAAMO,IAAI,IAAKzD,IAAI,CAA4B0D,UAAU,EAAE;YAC9D,IAAID,IAAI,CAAC3F,IAAI,KAAK,eAAe,EAAE;cACjC,MAAM6F,SAAS,GAAG/I,QAAQ,CAAC,OAAOmF,QAAQ,CAAC0D,IAAI,CAAC5C,QAAQ,CAAC,CAAC;cAC1DtF,kBAAkB,CAAC2H,MAAM,EAAES,SAAS,EAAE,IAAIC,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC,MAAM;cACL,IAAIH,IAAI,CAACI,IAAI,KAAK,MAAM,EAAE;gBACxB,MAAM,IAAIf,WAAW,CAAC,kCAAkC,CAAC;cAC3D;cACA,MAAMgB,QAAQ,GACZ,CAACL,IAAI,CAACL,QAAQ,IAAIK,IAAI,CAACnF,GAAG,CAACR,IAAI,KAAK,YAAY,GAC5C2F,IAAI,CAACnF,GAAG,CAACsE,IAAI,GACb,OAAOmB,4BAA4B,CAACN,IAAI,CAACnF,GAAiB,CAAC;cACjE,IAAIwF,QAAQ,KAAK,WAAW,EAAE;gBAC5B,MAAM,IAAIjC,SAAS,CACjB,6CACF,CAAC;cACH;cACA,MAAMmC,SAAS,GAAGpJ,QAAQ,CAAC,OAAOmF,QAAQ,CAAC0D,IAAI,CAAClF,KAAK,CAAC,CAAC;cACvD,IAAIkF,IAAI,CAACQ,MAAM,IAAI,OAAOD,SAAS,KAAK,UAAU,EAAE;gBAClDE,eAAe,CAACF,SAAS,EAAoBF,QAAkB,CAAC;cAClE;cACAZ,MAAM,CAACY,QAAQ,CAAC,GAAGE,SAAS;YAC9B;UACF;UACA,OAAO3H,gBAAgB,CAAC6G,MAAM,CAAC;QACjC;MACA,KAAK,oBAAoB;QAAE;UACzB;UACA,IAAIlB,MAAoC;UACxC,KAAK,MAAMmC,IAAI,IAAInE,IAAI,CAACoE,WAAW,EAAE;YACnCpC,MAAM,GAAG3F,gBAAgB,CAACzB,QAAQ,CAAC,OAAOmF,QAAQ,CAACoE,IAAI,CAAC,CAAC,CAAC;UAC5D;UACA,OAAOnC,MAAM;QACf;MACA,KAAK,iBAAiB;QAAE;UACtB;UACA,MAAMqC,MAAgB,GAAG,CAACrE,IAAI,CAACb,MAAM,CAAC,CAAC,CAAC,CAACZ,KAAK,CAACP,MAAM,CAAE;UACvD,IAAIsG,KAAK,GAAG,CAAC;UACb,KAAK,MAAMH,IAAI,IAAInE,IAAI,CAACoE,WAAW,EAAE;YACnC,MAAMG,GAAG,GAAG3J,QAAQ,CAAC,OAAOmF,QAAQ,CAACoE,IAAI,CAAC,CAAC;YAC3CE,MAAM,CAACvD,IAAI,CAAC0D,MAAM,CAACD,GAAG,CAAC,CAAC;YACxBF,MAAM,CAACvD,IAAI,CAACd,IAAI,CAACb,MAAM,CAAEmF,KAAK,IAAI,CAAC,CAAE,CAAC/F,KAAK,CAACP,MAAO,CAAC;UACtD;UACA,OAAO3B,gBAAgB,CAACgI,MAAM,CAACI,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C;MACA,KAAK,0BAA0B;QAAE;UAC/B;UACA,MAAMC,MAAM,GAAG,CAAC,OAAO3E,QAAQ,CAACC,IAAI,CAAC2E,GAAG,CAAC,EAAExC,KAAwB;UACnE,MAAMyC,OAAO,GAAGhK,QAAQ,CAAC8J,MAAM,CAAa;UAC5C3G,UAAU,CAAC6G,OAAO,CAAC;UACnB,IAAIxH,KAAK,EAAE,KAAK;UAChB,OAAO,OAAOmF,YAAY,CAACqC,OAAO,EAAEF,MAAM,EAAE1E,IAAI,CAACX,KAAK,EAAEW,IAAI,CAAC2E,GAAG,CAAC;QACnE;MACA,KAAK,iBAAiB;QAAE;UACtB;UACA,MAAM1C,GAAG,GAAG,CAAC,OAAOlC,QAAQ,CAACC,IAAI,CAACa,QAAQ,CAAC,EAAEsB,KAAwB;UACrE,IAAI,CAACtE,cAAc,IAAImC,IAAI,CAACwB,QAAQ,KAAK,QAAQ,EAAE;YACjD;YACA,IAAI,EAAES,GAAG,YAAY3F,eAAe,CAAC,EAAE;cACrC,OAAOD,gBAAgB,CAAC,IAAI,CAAC;YAC/B;YACA;YACA,IAAIvB,mBAAmB,CAACmH,GAAG,CAAC,EAAE;cAC5B,MAAM4C,YAAY,GAAG,OACnB5C,GAAG,CAACF,IAAI,CACRE,GAAG,CAAC6C,aAAa,CAAC;cACpB,OAAOzI,gBAAgB,CAACwI,YAAY,CAAC;YACvC;YACA;UACF;UACA,IAAI7E,IAAI,CAACwB,QAAQ,KAAK,QAAQ,EAAE;YAC9B,IAAIS,GAAG,YAAY3F,eAAe,IAAI2F,GAAG,CAACF,IAAI,KAAK,cAAc,EAAE;cACjE,OAAO1F,gBAAgB,CAAC,WAAW,CAAC;YACtC;YACA,OAAOA,gBAAgB,CAAC,OAAOzB,QAAQ,CAACqH,GAAG,CAAC,CAAC;UAC/C;UACA,OAAO5F,gBAAgB,CACrBjB,kBAAkB,CAACR,QAAQ,CAACqH,GAAG,CAAC,EAAEjC,IAAI,CAACwB,QAAQ,CACjD,CAAC;QACH;IACF;IACA,IAAI,CAAC3D,cAAc,EAAE;MACnB;MACA,QAAQmC,IAAI,CAAClC,IAAI;QACf,KAAK,sBAAsB;UAAE;YAC3B;YACA,IAAIkC,IAAI,CAACwB,QAAQ,KAAK,GAAG,EAAE;cACzB,IACE,EACExB,IAAI,CAACmB,IAAI,CAACrD,IAAI,KAAK,cAAc,IACjCkC,IAAI,CAACmB,IAAI,CAACrD,IAAI,KAAK,eAAe,CACnC,EACD;gBACA,MAAMiH,IAAI,GAAG,CAAC,OAAOhF,QAAQ,CAACC,IAAI,CAACmB,IAAI,CAAC,EACrCgB,KAAwB;gBAC3B,IAAI6C,IAAa;gBACjB,IACEC,6BAA6B,CAACjF,IAAI,CAACsB,KAAK,CAAC,IACzCtB,IAAI,CAACmB,IAAI,CAACrD,IAAI,KAAK,YAAY,EAC/B;kBACAkH,IAAI,GAAGE,eAAe,CAAClF,IAAI,CAACsB,KAAK,EAAEtB,IAAI,CAACmB,IAAI,CAACyB,IAAI,CAAC;gBACpD,CAAC,MAAM;kBACL,MAAMuC,IAAI,GAAG,OAAOpF,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;kBACxC0D,IAAI,GAAGpK,QAAQ,CAACuK,IAAI,CAAC;gBACvB;gBACAnK,QAAQ,CAAC+J,IAAI,EAAEC,IAAI,CAAC;gBACpB,OAAO3I,gBAAgB,CAAC2I,IAAI,CAAC;cAC/B;cACA,MAAMG,IAAI,GAAG,OAAOpF,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;cACxC,MAAM0D,IAAI,GAAGpK,QAAQ,CAACuK,IAAI,CAAoB;cAC9C,OAAOC,iCAAiC,CAACpF,IAAI,CAACmB,IAAI,EAAE6D,IAAI,CAAC;cACzD,OAAO3I,gBAAgB,CAAC2I,IAAI,CAAC;YAC/B;YACA;YACA,MAAMD,IAAI,GAAG,CAAC,OAAOhF,QAAQ,CAACC,IAAI,CAACmB,IAAI,CAAC,EAAEgB,KAAwB;YAClE,MAAMkD,IAAI,GAAGzK,QAAQ,CAACmK,IAAI,CAAoB;YAC9C,MAAMI,IAAI,GAAG,OAAOpF,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;YACxC,MAAM0D,IAAI,GAAGpK,QAAQ,CAACuK,IAAI,CAAoB;YAC9C,MAAMG,CAAC,GAAG9K,8BAA8B,CAAC6K,IAAI,EAAErF,IAAI,CAACwB,QAAQ,EAAEwD,IAAI,CAAC;YACnEhK,QAAQ,CAAC+J,IAAI,EAAEO,CAAC,CAAC;YACjB,OAAOjJ,gBAAgB,CAACiJ,CAAC,CAAC;UAC5B;QACA,KAAK,gBAAgB;UAAE;YACrB;YACA,IAAI,CAACtF,IAAI,CAACuF,IAAI,CAAC5H,MAAM,EAAE;cACrB,OAAOtB,gBAAgB,CAACN,KAAK,CAAC;YAChC;YACA,MAAMyJ,MAAM,GAAGC,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;YACrD,MAAMsH,QAAQ,GAAG,IAAI7J,sBAAsB,CAAC2J,MAAM,CAAC;YACnDG,6BAA6B,CAAC3F,IAAI,CAACuF,IAAI,EAAEG,QAAQ,CAAC;YAClDD,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGsH,QAAQ;YACjD,MAAME,UAAU,GAAG,OAAOC,qBAAqB,CAAC7F,IAAI,CAACuF,IAAI,CAAC;YAC1DE,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGoH,MAAM;YAC/C,OAAOI,UAAU;UACnB;QACA,KAAK,gBAAgB;UACnB;UACA,OAAO,IAAIpK,gBAAgB,CAAC,OAAO,EAAEO,KAAK,CAAC;QAC7C,KAAK,mBAAmB;UACtB;UACA,OAAO,IAAIP,gBAAgB,CAAC,UAAU,EAAEO,KAAK,CAAC;QAChD,KAAK,gBAAgB;UACnB;UACA,OAAOM,gBAAgB,CAACN,KAAK,CAAC;QAChC,KAAK,kBAAkB;UACrB;UACA,OAAO+J,0BAA0B,CAAC,OAAOC,qBAAqB,CAAC/F,IAAI,CAAC,CAAC;QACvE,KAAK,qBAAqB;QAC1B,KAAK,gBAAgB;UACnB;UACA,OAAO,OAAOD,QAAQ,CAACC,IAAI,CAACQ,UAAU,CAAC;QACzC,KAAK,gBAAgB;QACrB,KAAK,gBAAgB;UACnB;UACA,OAAOsF,0BAA0B,CAAC,OAAOE,qBAAqB,CAAChG,IAAI,CAAC,CAAC;QACvE,KAAK,cAAc;UACjB;UACA,OAAO8F,0BAA0B,CAAC,OAAOG,iBAAiB,CAACjG,IAAI,CAAC,CAAC;QACnE,KAAK,qBAAqB;UACxB;UACA,OAAO3D,gBAAgB,CAACN,KAAK,CAAC;QAChC,KAAK,oBAAoB;UACvB;UACAgF,wBAAwB,CAACf,IAAI,CAAC;UAC9B,OAAO3D,gBAAgB,CAAC6J,qCAAqC,CAAClG,IAAI,CAAC,CAAC;QACtE,KAAK,aAAa;UAChB;UACA,IAAIpF,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACwC,IAAI,CAAC,CAAC,EAAE;YAAA,IAAA2D,mBAAA;YACxC,CAAAA,mBAAA,GAAA1I,KAAK,CAAC2I,YAAY,cAAAD,mBAAA,eAAlBA,mBAAA,CAAA7F,IAAA,CAAA7C,KAAK,EAAgBuC,IAAI,EAAE,IAAI,CAAC;YAChC,OAAO7E,WAAW,CAAC,OAAO4E,QAAQ,CAACC,IAAI,CAACyC,UAAU,CAAC,EAAE7E,SAAS,CAAC;UACjE;UACA,CAAAwC,oBAAA,GAAA3C,KAAK,CAAC2I,YAAY,cAAAhG,oBAAA,eAAlBA,oBAAA,CAAAE,IAAA,CAAA7C,KAAK,EAAgBuC,IAAI,EAAE,MAAM,CAAC;UAClC,IAAIA,IAAI,CAAC0C,SAAS,EAAE;YAClB,OAAOvH,WAAW,CAAC,OAAO4E,QAAQ,CAACC,IAAI,CAAC0C,SAAS,CAAC,EAAE9E,SAAS,CAAC;UAChE;UACA,OAAOvB,gBAAgB,CAACuB,SAAS,CAAC;QACpC,KAAK,iBAAiB;UAAE;YACtB;YACA,IAAIyI,CAAU;YACd,IAAIrG,IAAI,CAACa,QAAQ,EAAE;cACjB,MAAMyF,OAAO,GAAG,OAAOvG,QAAQ,CAACC,IAAI,CAACa,QAAQ,CAAC;cAC9CwF,CAAC,GAAGzL,QAAQ,CAAC0L,OAAO,CAAC;YACvB;YACA,OAAO,IAAI9K,gBAAgB,CAAC,QAAQ,EAAE6K,CAAC,CAAC;UAC1C;QACA,KAAK,gBAAgB;UAAE;YACrB,IAAI,CAAChJ,sBAAsB,EAAE;cAC3B;YACF;YACA,MAAMkJ,MAAM,GAAGC,kBAAkB,CAAC,CAAC;YACnC,OAAOnK,gBAAgB,CAACkK,MAAM,CAACE,cAAc,CAAC,CAAC,CAAC;UAClD;QACA,KAAK,gBAAgB;UACnB;UACA,MAAM7L,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACa,QAAQ,CAAC,CAAC;QAChD,KAAK,kBAAkB;UAAE;YACvB;YACA,MAAM6F,GAAG,GAAG,CAAC,OAAO3G,QAAQ,CAACC,IAAI,CAACa,QAAQ,CAAC,EAAEsB,KAAwB;YACrE,MAAMwE,QAAQ,GAAGC,MAAM,CAAChM,QAAQ,CAAC8L,GAAG,CAAC,CAAC;YACtC,MAAMG,QAAQ,GAAG7G,IAAI,CAACwB,QAAQ,KAAK,IAAI,GAAGmF,QAAQ,GAAG,CAAC,GAAGA,QAAQ,GAAG,CAAC;YACrE3L,QAAQ,CAAC0L,GAAG,EAAEG,QAAQ,CAAC;YACvB,OAAOxK,gBAAgB,CAAC2D,IAAI,CAAC8G,MAAM,GAAGD,QAAQ,GAAGF,QAAQ,CAAC;UAC5D;QACA,KAAK,YAAY;UACf,OAAO,OAAOd,qBAAqB,CAAC7F,IAAI,CAACyC,UAAU,CAAC;QACtD,KAAK,iBAAiB;UAAE;YACtB;YACA,MAAM6D,OAAO,GAAG,OAAOvG,QAAQ,CAACC,IAAI,CAAC+G,YAAY,CAAC;YAClD,MAAMC,WAAW,GAAGpM,QAAQ,CAAC0L,OAAO,CAAC;YACrC,MAAMd,MAAM,GAAGC,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;YACrD,MAAMsH,QAAQ,GAAG,IAAI7J,sBAAsB,CAAC2J,MAAM,CAAC;YACnDG,6BAA6B,CAAC3F,IAAI,CAACiH,KAAK,EAAEvB,QAAQ,CAAC;YACnDD,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGsH,QAAQ;YACjD,MAAMwB,CAAC,GAAG,OAAOC,mBAAmB,CAACnH,IAAI,CAACiH,KAAK,EAAED,WAAW,CAAC;YAC7DvB,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGoH,MAAM;YAC/C,OAAOM,0BAA0B,CAACoB,CAAC,CAAC;UACtC;QACA,KAAK,cAAc;UAAE;YACnB;YACA,IAAIA,CAAmB;YACvB,IAAI;cACFA,CAAC,GAAG,OAAOnH,QAAQ,CAACC,IAAI,CAACoH,KAAK,CAAC;YACjC,CAAC,CAAC,OAAOC,KAAK,EAAE;cACd,IAAIrH,IAAI,CAACsH,OAAO,EAAE;gBAAA,IAAAC,sBAAA;gBAChBzH,WAAW,GAAGE,IAAI,CAACsH,OAAO;gBAC1B,CAAAC,sBAAA,GAAA9J,KAAK,CAAC4C,cAAc,cAAAkH,sBAAA,eAApBA,sBAAA,CAAAjH,IAAA,CAAA7C,KAAK,EAAkBuC,IAAI,CAACsH,OAAO,CAAC;gBACpCJ,CAAC,GAAG,OAAOM,qBAAqB,CAACxH,IAAI,CAACsH,OAAO,EAAED,KAAK,CAAC;cACvD,CAAC,MAAM;gBACL,MAAMA,KAAK;cACb;YACF,CAAC,SAAS;cACR,IAAIrH,IAAI,CAACyH,SAAS,EAAE;gBAClB,MAAMC,CAAC,GAAG,OAAO3H,QAAQ,CAACC,IAAI,CAACyH,SAAS,CAAC;gBACzC,IAAIC,CAAC,CAACC,IAAI,KAAK,QAAQ,EAAE;kBACvBT,CAAC,GAAGQ,CAAC;gBACP;cACF;YACF;YACA,OAAOR,CAAC;UACV;QACA,KAAK,qBAAqB;UAAE;YAC1B;YACA,IAAIlF,MAAoC;YACxC,KAAK,MAAM4F,UAAU,IAAI5H,IAAI,CAAC6H,YAAY,EAAE;cAC1C/H,WAAW,GAAG8H,UAAU;cACxB,IAAI,CAACA,UAAU,CAACE,IAAI,EAAE;gBACpB;gBACA,IAAI9H,IAAI,CAAC6D,IAAI,KAAK,KAAK,EAAE;kBACvB7B,MAAM,GAAG3F,gBAAgB,CAACN,KAAK,CAAC;gBAClC,CAAC,MAAM;kBACL,MAAM2K,GAAG,GAAG/D,cAAc,CAAEiF,UAAU,CAACG,EAAE,CAAgBnF,IAAI,CAAC;kBAC9DZ,MAAM,GAAGnH,2BAA2B,CAAC6L,GAAG,EAAE9I,SAAS,CAAC;gBACtD;cACF,CAAC,MAAM,IAAIgK,UAAU,CAACG,EAAE,CAACjK,IAAI,KAAK,YAAY,EAAE;gBAC9CgC,WAAW,GAAG8H,UAAU,CAACE,IAAI;gBAC7B,IAAI1K,KAAK,EAAE,KAAK;gBAChB,MAAM4K,SAAS,GAAGJ,UAAU,CAACG,EAAE,CAACnF,IAAI;gBACpC,MAAM8D,GAAG,GAAG/D,cAAc,CAACqF,SAAS,CAAC;gBACrC,IAAIzJ,KAAc;gBAClB,IAAI0G,6BAA6B,CAAC2C,UAAU,CAACE,IAAI,CAAC,EAAE;kBAClDvJ,KAAK,GAAG2G,eAAe,CAAC0C,UAAU,CAACE,IAAI,EAAEE,SAAS,CAAC;gBACrD,CAAC,MAAM;kBACL,MAAMC,GAAG,GAAG,OAAOlI,QAAQ,CAAC6H,UAAU,CAACE,IAAI,CAAC;kBAC5CvJ,KAAK,GAAG3D,QAAQ,CAACqN,GAAG,CAAC;gBACvB;gBACAjG,MAAM,GACJhC,IAAI,CAAC6D,IAAI,KAAK,KAAK,GACf7I,QAAQ,CAAC0L,GAAG,EAAEnI,KAAK,CAAC,GACpB1D,2BAA2B,CAAC6L,GAAG,EAAEnI,KAAK,CAAC;cAC/C,CAAC,MAAM;gBACLuB,WAAW,GAAG8H,UAAU,CAACE,IAAI;gBAC7B,IAAI1K,KAAK,EAAE,KAAK;gBAChB,MAAM6K,GAAG,GAAG,OAAOlI,QAAQ,CAAC6H,UAAU,CAACE,IAAI,CAAC;gBAC5C,MAAM9C,IAAI,GAAGpK,QAAQ,CAACqN,GAAG,CAAC;gBAC1BjG,MAAM,GAAG,OAAOkG,qBAAqB,CACnCN,UAAU,CAACG,EAAE,EACb/C,IAAI,EACJhF,IAAI,CAAC6D,IAAI,KAAK,KAAK,GACfjG,SAAS,GACT6H,iBAAiB,CAAC,CAAC,CAACrH,kBAC1B,CAAC;cACH;YACF;YACA,OAAO4D,MAAM;UACf;QACA,KAAK,gBAAgB;UACnB;UACA,OAAO8D,0BAA0B,CAAC,OAAOqC,mBAAmB,CAACnI,IAAI,CAAC,CAAC;MACvE;IACF;IACA;IACA,MAAM,IAAI8C,WAAW,CAAC,2BAA2B9C,IAAI,CAAClC,IAAI,IAAI,CAAC;EACjE;;EAEA;EACA,SAAS2H,iBAAiBA,CAAA,EAAqB;IAC7C,OAAOpH,qBAAqB,CAACA,qBAAqB,CAACV,MAAM,GAAG,CAAC,CAAC;EAChE;;EAEA;EACA,SAASgF,cAAcA,CACrBC,IAAY,EACZwF,GAAuB,EACN;IACjB,IAAI,CAACA,GAAG,EAAE;MACRA,GAAG,GAAG3C,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;IAC9C;IACA,OAAO/C,sBAAsB,CAAC+M,GAAG,EAAExF,IAAI,EAAE,IAAI,CAAC;EAChD;;EAEA;EACA;EACA,UAAU4E,qBAAqBA,CAC7BxH,IAAiB,EACjBqI,WAAoB,EACI;IACxB,IAAI,CAACrI,IAAI,CAACsI,KAAK,EAAE;MACf,OAAO,OAAOvI,QAAQ,CAACC,IAAI,CAACuF,IAAI,CAAC;IACnC;IACA,MAAMC,MAAM,GAAGC,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;IACrD,MAAMmK,QAAQ,GAAG,IAAI1M,sBAAsB,CAAC2J,MAAM,CAAC;IACnD,KAAK,MAAMgD,OAAO,IAAI5L,iBAAiB,CAACoD,IAAI,CAACsI,KAAK,CAAC,EAAE;MACnDC,QAAQ,CAACE,oBAAoB,CAACD,OAAO,EAAE,KAAK,CAAC;IAC/C;IACA/C,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGmK,QAAQ;IACjD,OAAOL,qBAAqB,CAAClI,IAAI,CAACsI,KAAK,EAAED,WAAW,EAAEE,QAAQ,CAAC;IAC/D,MAAMG,CAAC,GAAG,OAAO3I,QAAQ,CAACC,IAAI,CAACuF,IAAI,CAAC;IACpCE,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGoH,MAAM;IAC/C,OAAOkD,CAAC;EACV;;EAEA;EACA;EACA,SAAS5C,0BAA0BA,CACjC6C,UAA4B,EACV;IAClB,OAAOA,UAAU,CAAChB,IAAI,KAAK,OAAO,GAC9BgB,UAAU,CAACxG,KAAK,KAAKpG,KAAK,GACxBM,gBAAgB,CAACuB,SAAS,CAAC,GAC3BvB,gBAAgB,CAACsM,UAAU,CAACxG,KAAK,CAAC,GACpCwG,UAAU;EAChB;;EAEA;EACA;EACA,UAAUxB,mBAAmBA,CAC3BF,KAAmB,EACnB2B,KAAc,EACU;IACxB,IAAIC,CAAU;IAEd,MAAMC,gBAAgB,GAAG7B,KAAK,CAAC8B,SAAS,CAAEC,UAAU,IAAK,CAACA,UAAU,CAACxG,IAAI,CAAC;IAC1E,MAAMyG,cAAc,GAAGH,gBAAgB,IAAI,CAAC;IAC5C,MAAMI,CAAC,GAAGD,cAAc,GAAGhC,KAAK,CAACkC,KAAK,CAAC,CAAC,EAAEL,gBAAgB,CAAC,GAAG7B,KAAK;IACnE,IAAImC,KAAK,GAAG,KAAK;IACjB,KAAK,MAAMC,CAAC,IAAIH,CAAC,EAAE;MACjB,IAAI,CAACE,KAAK,EAAE;QACVA,KAAK,GAAG,OAAOE,oBAAoB,CAACD,CAAC,EAAET,KAAK,CAAC;MAC/C;MACA,IAAIQ,KAAK,EAAE;QACT,MAAMlC,CAAC,GAAG,OAAOnH,QAAQ,CAACsJ,CAAC,CAAC;QAC5B,IAAInC,CAAC,CAAC/E,KAAK,KAAKpG,KAAK,EAAE;UACrB8M,CAAC,GAAG3B,CAAC,CAAC/E,KAAK;QACb;QACA,IAAI+E,CAAC,CAACS,IAAI,KAAK,QAAQ,EAAE;UACvB,OAAOxM,WAAW,CAAC+L,CAAC,EAAE2B,CAAC,CAAC;QAC1B;MACF;IACF;IAEA,IAAI,CAACI,cAAc,EAAE;MACnB,OAAO5M,gBAAgB,CAACwM,CAAC,CAAC;IAC5B;IAEA,IAAIU,QAAQ,GAAG,KAAK;IACpB,MAAMb,CAAC,GAAGzB,KAAK,CAACkC,KAAK,CAACL,gBAAgB,GAAG,CAAC,CAAC;IAC3C,IAAI,CAACM,KAAK,EAAE;MACV,KAAK,MAAMC,CAAC,IAAIX,CAAC,EAAE;QACjB,IAAI,CAACa,QAAQ,EAAE;UACbA,QAAQ,GAAG,OAAOD,oBAAoB,CAACD,CAAC,EAAET,KAAK,CAAC;QAClD;QACA,IAAIW,QAAQ,EAAE;UACZ,MAAMrC,CAAC,GAAG,OAAOnH,QAAQ,CAACsJ,CAAC,CAAC;UAC5B,IAAInC,CAAC,CAAC/E,KAAK,KAAKpG,KAAK,EAAE;YACrB8M,CAAC,GAAG3B,CAAC,CAAC/E,KAAK;UACb;UACA,IAAI+E,CAAC,CAACS,IAAI,KAAK,QAAQ,EAAE;YACvB,OAAOxM,WAAW,CAAC+L,CAAC,EAAE2B,CAAC,CAAC;UAC1B;QACF;MACF;IACF;IAEA,IAAIU,QAAQ,EAAE;MACZ,OAAOlN,gBAAgB,CAACwM,CAAC,CAAC;IAC5B;IACA,MAAM3B,CAAC,GAAG,OAAOnH,QAAQ,CAACkH,KAAK,CAAC6B,gBAAgB,CAAC,CAAC;IAClD,IAAI5B,CAAC,CAAC/E,KAAK,KAAKpG,KAAK,EAAE;MACrB8M,CAAC,GAAG3B,CAAC,CAAC/E,KAAK;IACb;IACA,IAAI+E,CAAC,CAACS,IAAI,KAAK,QAAQ,EAAE;MACvB,OAAOxM,WAAW,CAAC+L,CAAC,EAAE2B,CAAC,CAAC;IAC1B;;IAEA;IACA,KAAK,MAAMQ,CAAC,IAAIX,CAAC,EAAE;MACjB,MAAMxB,CAAC,GAAG,OAAOnH,QAAQ,CAACsJ,CAAC,CAAC;MAC5B,IAAInC,CAAC,CAAC/E,KAAK,KAAKpG,KAAK,EAAE;QACrB8M,CAAC,GAAG3B,CAAC,CAAC/E,KAAK;MACb;MACA,IAAI+E,CAAC,CAACS,IAAI,KAAK,QAAQ,EAAE;QACvB,OAAOxM,WAAW,CAAC+L,CAAC,EAAE2B,CAAC,CAAC;MAC1B;IACF;IACA,OAAOxM,gBAAgB,CAACwM,CAAC,CAAC;EAC5B;;EAEA;EACA,UAAUS,oBAAoBA,CAC5BD,CAAa,EACbT,KAAc,EACoB;IAClC,MAAMY,cAAc,GAAG5O,QAAQ,CAAC,OAAOmF,QAAQ,CAACsJ,CAAC,CAAC7G,IAAK,CAAC,CAAC;IACzD,OAAOoG,KAAK,KAAKY,cAAc;EACjC;;EAEA;EACA;EACA,UAAUrB,mBAAmBA,CAACnI,IAAoB,EAA0B;IAC1E,IAAI6I,CAAU;IACd;IACA,OAAO,IAAI,EAAE;MACX,MAAMY,SAAS,GAAG7O,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACwC,IAAI,EAAE5E,SAAS,EAAE,IAAI,CAAC,CAAC;MACvE,IAAI,CAAC6L,SAAS,EAAE;QACd,OAAOpN,gBAAgB,CAACwM,CAAC,CAAC;MAC5B;MACA,MAAMF,UAAU,GAAG,OAAO5I,QAAQ,CAACC,IAAI,CAACuF,IAAI,CAAC;MAC7C,IAAI,CAACxK,aAAa,CAAC4N,UAAU,CAAC,EAAE;QAC9B,OAAOxN,WAAW,CAACwN,UAAU,EAAEE,CAAC,CAAC;MACnC;MACA,IAAIF,UAAU,CAACxG,KAAK,KAAKpG,KAAK,EAAE;QAC9B8M,CAAC,GAAGF,UAAU,CAACxG,KAAK;MACtB;IACF;EACF;;EAEA;EACA;EACA,UAAU4D,qBAAqBA,CAC7B/F,IAAsB,EACE;IACxB,IAAI6I,CAAU;IACd;IACA,OAAO,IAAI,EAAE;MACX,MAAMF,UAAU,GAAG,OAAO5I,QAAQ,CAACC,IAAI,CAACuF,IAAI,CAAC;MAC7C,IAAI,CAACxK,aAAa,CAAC4N,UAAU,CAAC,EAAE;QAC9B,OAAOxN,WAAW,CAACwN,UAAU,EAAEE,CAAC,CAAC;MACnC;MACA,IAAIF,UAAU,CAACxG,KAAK,KAAKpG,KAAK,EAAE;QAC9B8M,CAAC,GAAGF,UAAU,CAACxG,KAAK;MACtB;MACA,MAAMsH,SAAS,GAAG7O,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAACwC,IAAI,EAAE5E,SAAS,EAAE,IAAI,CAAC,CAAC;MACvE,IAAI,CAAC6L,SAAS,EAAE;QACd,OAAOpN,gBAAgB,CAACwM,CAAC,CAAC;MAC5B;IACF;EACF;;EAEA;EACA;EACA,UAAU7C,qBAAqBA,CAC7BhG,IAAqC,EACb;IACxB,MAAM0G,GAAG,GAAG1G,IAAI,CAACmB,IAAI;IACrB,MAAMuI,qBAAqB,GAAGhD,GAAG,CAAC5I,IAAI,KAAK,qBAAqB;IAChE,MAAM6L,OAAO,GAAGD,qBAAqB,GACjChD,GAAG,CAAC7C,IAAI,KAAK,KAAK,GAChB,YAAY,GACZ,gBAAgB,GAClB,YAAY;IAChB,MAAM+F,uBAAuB,GAC3BD,OAAO,KAAK,gBAAgB,GAAG/M,iBAAiB,CAAC8J,GAAG,CAAC,GAAG,EAAE;IAC5D,MAAMmD,aAAa,GACjB7J,IAAI,CAAClC,IAAI,KAAK,gBAAgB,GAAG,WAAW,GAAG,SAAS;IAC1D,MAAMgM,SAAS,GAAG,OAAOC,qBAAqB,CAC5CH,uBAAuB,EACvB5J,IAAI,CAACsB,KAAK,EACVuI,aACF,CAAC;IACD,IAAIC,SAAS,CAACnC,IAAI,KAAK,QAAQ,EAAE;MAC/B;MACA,OAAOmC,SAAS;IAClB;IACA,OAAO,OAAOE,qBAAqB,CACjCtD,GAAG,EACH1G,IAAI,CAACuF,IAAI,EACTuE,SAAS,CAAC3H,KAAK,EACf0H,aAAa,EACbF,OACF,CAAC;EACH;;EAEA;EACA,UAAUI,qBAAqBA,CAC7BH,uBAAiC,EACjCzF,IAAgB,EAChB0F,aAAsC,EACd;IACxB,MAAMI,cAAc,GAAGxE,iBAAiB,CAAC,CAAC;IAC1C,MAAMD,MAAM,GAAGyE,cAAc,CAAC7L,kBAAkB;IAChD,IAAIwL,uBAAuB,CAACjM,MAAM,GAAG,CAAC,EAAE;MACtC,MAAMuM,MAAM,GAAG,IAAIrO,sBAAsB,CAAC2J,MAAM,CAAC;MACjD,KAAK,MAAM5C,IAAI,IAAIgH,uBAAuB,EAAE;QAC1CM,MAAM,CAACzB,oBAAoB,CAAC7F,IAAI,EAAE,KAAK,CAAC;MAC1C;MACAqH,cAAc,CAAC7L,kBAAkB,GAAG8L,MAAM;IAC5C;IACA,MAAM5D,OAAO,GAAG,OAAOvG,QAAQ,CAACoE,IAAI,EAAEvG,SAAS,EAAE,IAAI,CAAC;IACtDqM,cAAc,CAAC7L,kBAAkB,GAAGoH,MAAM;IAC1C,MAAMiE,SAAS,GAAG7O,QAAQ,CAAC0L,OAAO,CAAC;IACnC,IAAIuD,aAAa,KAAK,WAAW,EAAE;MACjC,IAAIJ,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK7L,SAAS,EAAE;QACjD,OAAO,IAAIpC,gBAAgB,CAAC,OAAO,EAAEO,KAAK,CAAC;MAC7C;MACA,MAAMoO,QAAQ,GAAGC,yBAAyB,CAACX,SAAS,CAAC;MACrD,OAAOpN,gBAAgB,CAAC8N,QAAQ,CAAC;IACnC;IACA,MAAMA,QAAQ,GAAG1P,wBAAwB,CAACgP,SAA8B,CAAC;IACzE,OAAOpN,gBAAgB,CAAC8N,QAAQ,CAAC;EACnC;EAEA,UAAUH,qBAAqBA,CAC7BhK,IAAsC,EACtCqK,IAAe,EACfC,cAAiC,EACjCT,aAAsC,EACtCF,OAAuD,EAC/B;IACxB,MAAMjD,GAAG,GACPiD,OAAO,KAAK,YAAY,GACnB3J,IAAI,GACJA,IAAI,CAAyB6H,YAAY,CAAC,CAAC,CAAC,CAACE,EAAE;IACtD,MAAMvC,MAAM,GAAGC,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;IACrD,IAAIyK,CAAU;IACd;IACA;IACA;IACA;IACA;IACA,MAAM0B,aAAa,GACjB7D,GAAG,CAAC5I,IAAI,KAAK,eAAe,IAAI4I,GAAG,CAAC5I,IAAI,KAAK,cAAc;IAC7D;IACA,OAAO,IAAI,EAAE;MACXgC,WAAW,GAAG4G,GAAG;MACjB,MAAM;QAAE8D,IAAI;QAAEjM,KAAK,EAAEkM;MAAU,CAAC,GAAGH,cAAc,CAACI,IAAI,CAAC,CAAC;MACxD,IAAIF,IAAI,EAAE;QACR,IAAIpN,KAAK,EAAE,KAAK;QAChB,OAAOf,gBAAgB,CAACwM,CAAC,CAAC;MAC5B;MACA,IAAI8B,MAAmC;MACvC,IAAIC,YAAgD;MACpD,IAAIjB,OAAO,KAAK,gBAAgB,EAAE;QAChCiB,YAAY,GAAG,IAAI/O,sBAAsB,CAAC2J,MAAM,CAAC;QACjDlK,kCAAkC,CAChC0E,IAAI,EACJ4K,YACF,CAAC;QACDnF,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGwM,YAAY;QACrD,IAAIxN,KAAK,EAAE,KAAK;QAChB,IAAI,CAACmN,aAAa,EAAE;UAClB,MAAM,CAACM,OAAO,CAAC,GAAGjO,iBAAiB,CAAC8J,GAAG,CAAC;UACxCiE,MAAM,GAAGhI,cAAc,CAACkI,OAAO,CAAC;QAClC;MACF,CAAC,MAAM;QACL,IAAIzN,KAAK,EAAE,KAAK;QAChB,IAAI,CAACmN,aAAa,EAAE;UAClBI,MAAM,GAAG,CAAC,OAAO5K,QAAQ,CAAC2G,GAAG,CAAC,EAAEvE,KAAwB;QAC1D;MACF;MAEAoI,aAAa,GACTZ,OAAO,KAAK,YAAY,GACtB,OAAOvE,iCAAiC,CAACsB,GAAG,EAAE+D,SAAS,CAAC,GACxDd,OAAO,KAAK,YAAY,GACtB,OAAOzB,qBAAqB,CAACxB,GAAG,EAAE+D,SAAS,EAAE7M,SAAS,CAAC,GACvD,OAAOsK,qBAAqB,CAACxB,GAAG,EAAE+D,SAAS,EAAEG,YAAY,CAAC,GAC9DjB,OAAO,KAAK,gBAAgB,GAC1B9O,2BAA2B,CAAC8P,MAAM,EAAGF,SAAS,CAAC,GAC/CzP,QAAQ,CAAC2P,MAAM,EAAGF,SAAS,CAAC;MAElC,MAAMzI,MAAM,GAAG,OAAOjC,QAAQ,CAACsK,IAAI,CAAC;MACpC5E,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGoH,MAAM;MAC/C,IAAI,CAACzK,aAAa,CAACiH,MAAM,CAAC,EAAE;QAC1B,MAAM8I,MAAM,GAAG3P,WAAW,CAAC6G,MAAM,EAAE6G,CAAC,CAAC;QACrC,IACE,EACEgB,aAAa,KAAK,WAAW,IAAIS,cAAc,CAACS,MAAM,KAAKnN,SAAS,CACrE,EACD;UACA;UACA;UACA,MAAMoN,WAAW,GAAGV,cAAc,CAACS,MAAM,CAAC,CAAC;UAC3C,IACE,CAACC,WAAW,IACZ,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAChI,QAAQ,CAAC,OAAOgI,WAAW,CAAC,EACpD;YACA,MAAM,IAAInJ,SAAS,CAAC,kCAAkC,CAAC;UACzD;QACF;QACA,OAAOiJ,MAAM;MACf;MACA,IAAI9I,MAAM,CAACG,KAAK,KAAKpG,KAAK,EAAE;QAC1B8M,CAAC,GAAG7G,MAAM,CAACG,KAAK;MAClB;IACF;EACF;;EAEA;EACA,UAAUiI,yBAAyBA,CAAC7L,KAAU,EAAyB;IACrE,KAAK,MAAMD,GAAG,IAAIC,KAAK,EAAE;MACvB,MAAMD,GAAG;IACX;EACF;;EAEA;EACA;EACA,UAAU2H,iBAAiBA,CAACjG,IAAkB,EAA0B;IAAA,IAAAiL,UAAA;IACtE,IAAI,EAAAA,UAAA,GAAAjL,IAAI,CAAC8H,IAAI,cAAAmD,UAAA,uBAATA,UAAA,CAAWnN,IAAI,MAAK,qBAAqB,EAAE;MAC7C;MACA,IAAIkC,IAAI,CAAC8H,IAAI,CAACjE,IAAI,KAAK,KAAK,EAAE;QAC5B,OAAO9D,QAAQ,CAACC,IAAI,CAAC8H,IAAI,CAAC;QAC1B,OAAO,OAAOoD,iBAAiB,CAAClL,IAAI,CAACwC,IAAI,EAAExC,IAAI,CAACmL,MAAM,EAAEnL,IAAI,CAACuF,IAAI,EAAE,EAAE,CAAC;MACxE;MACA;MACA,MAAMC,MAAM,GAAGC,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;MACrD,MAAMgN,OAAO,GAAG,IAAIvP,sBAAsB,CAAC2J,MAAM,CAAC;MAClD,MAAM6F,OAAO,GAAGrL,IAAI,CAAC8H,IAAI,CAACjE,IAAI,KAAK,OAAO;MAC1C,MAAMyH,UAAU,GAAG1O,iBAAiB,CAACoD,IAAI,CAAC8H,IAAI,CAAC;MAC/C,KAAK,MAAMyD,EAAE,IAAID,UAAU,EAAE;QAC3B,IAAID,OAAO,EAAE;UACXD,OAAO,CAAC1M,sBAAsB,CAAC6M,EAAE,EAAE,IAAI,CAAC;QAC1C,CAAC,MAAM;UACLH,OAAO,CAAC3C,oBAAoB,CAAC8C,EAAE,EAAE,KAAK,CAAC;QACzC;MACF;MACA9F,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGgN,OAAO;MAChD,OAAOrL,QAAQ,CAACC,IAAI,CAAC8H,IAAI,CAAC;MAC1B,MAAM0D,gBAAgB,GAAGH,OAAO,GAAG,EAAE,GAAG7N,KAAK,CAACiO,IAAI,CAACH,UAAU,CAAC;MAC9D,MAAMI,UAAU,GAAG,OAAOR,iBAAiB,CACzClL,IAAI,CAACwC,IAAI,EACTxC,IAAI,CAACmL,MAAM,EACXnL,IAAI,CAACuF,IAAI,EACTiG,gBACF,CAAC;MACD/F,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGoH,MAAM;MAC/C,OAAOkG,UAAU;IACnB;IACA;IACA,IAAI1L,IAAI,CAAC8H,IAAI,EAAE;MACb,MAAMxB,OAAO,GAAG,OAAOvG,QAAQ,CAACC,IAAI,CAAC8H,IAAI,CAAC;MAC1ClN,QAAQ,CAAC0L,OAAO,CAAC;IACnB;IACA,OAAO,OAAO4E,iBAAiB,CAAClL,IAAI,CAACwC,IAAI,EAAExC,IAAI,CAACmL,MAAM,EAAEnL,IAAI,CAACuF,IAAI,EAAE,EAAE,CAAC;EACxE;;EAEA;EACA,UAAU2F,iBAAiBA,CACzB1I,IAAmC,EACnCmJ,SAAwC,EACxCtB,IAAe,EACfuB,oBAA8B,EACN;IACxBC,6BAA6B,CAACD,oBAAoB,CAAC;IACnD,IAAI/C,CAAU;IACd;IACA,OAAO,IAAI,EAAE;MACX,IAAIrG,IAAI,EAAE;QACR,MAAMsJ,OAAO,GAAG,OAAO/L,QAAQ,CAACyC,IAAI,EAAE5E,SAAS,EAAE,IAAI,CAAC;QACtD,MAAMmO,SAAS,GAAGnR,QAAQ,CAACkR,OAAO,CAAC;QACnC,IAAI,CAACC,SAAS,EAAE;UACd,OAAO1P,gBAAgB,CAACwM,CAAC,CAAC;QAC5B;MACF;MACA,MAAM7G,MAAM,GAAG,OAAOjC,QAAQ,CAACsK,IAAI,CAAC;MACpC,IAAI,CAACtP,aAAa,CAACiH,MAAM,CAAC,EAAE;QAC1B,OAAO7G,WAAW,CAAC6G,MAAM,EAAE6G,CAAC,CAAC;MAC/B;MACA,IAAI7G,MAAM,CAACG,KAAK,EAAE;QAChB0G,CAAC,GAAG7G,MAAM,CAACG,KAAK;MAClB;MACA0J,6BAA6B,CAACD,oBAAoB,CAAC;MACnD,IAAID,SAAS,EAAE;QACb,MAAMK,MAAM,GAAG,OAAOjM,QAAQ,CAAC4L,SAAS,EAAE/N,SAAS,EAAE,IAAI,CAAC;QAC1DhD,QAAQ,CAACoR,MAAM,CAAC;MAClB;IACF;EACF;;EAEA;EACA,SAASH,6BAA6BA,CACpCD,oBAA8B,EACrB;IACT,IAAIA,oBAAoB,CAACjO,MAAM,KAAK,CAAC,EAAE;MACrC;IACF;IACA,MAAMsO,gBAAgB,GAAGxG,iBAAiB,CAAC,CAAC,CAACrH,kBAAmB;IAChE,MAAM8N,KAAK,GAAGD,gBAAgB,CAACE,QAAQ;IACvC,MAAMC,gBAAgB,GAAG,IAAIvQ,sBAAsB,CAACqQ,KAAK,CAAC;IAC1D,KAAK,MAAMG,EAAE,IAAIT,oBAAoB,EAAE;MACrCQ,gBAAgB,CAAC3D,oBAAoB,CAAC4D,EAAE,EAAE,KAAK,CAAC;MAChD,MAAMC,SAAS,GAAGL,gBAAgB,CAACM,eAAe,CAACF,EAAE,EAAE,KAAK,CAAC;MAC7DD,gBAAgB,CAACzN,iBAAiB,CAAC0N,EAAE,EAAEC,SAAS,CAAC;IACnD;IACA7G,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB,GAAGgO,gBAAgB;EAC3D;;EAEA;EACA;EACA,UAAUhH,iCAAiCA,CACzCoH,OAA2D,EAC3DjO,KAAc,EACU;IACxB,IAAIiO,OAAO,CAAC1O,IAAI,KAAK,eAAe,EAAE;MACpC7C,sBAAsB,CAACsD,KAAK,CAAC;MAC7B,IAAIiO,OAAO,CAAC9I,UAAU,CAAC/F,MAAM,GAAG,CAAC,EAAE;QACjC,OAAO8O,yCAAyC,CAC7CD,OAAO,CAAyB9I,UAAU,EAC3CnF,KACF,CAAC;MACH;MACA,OAAOlC,gBAAgB,CAACN,KAAK,CAAC;IAChC;IACA,MAAMuO,cAAc,GAAG7P,wBAAwB,CAAC8D,KAA0B,CAAC;IAC3E,OAAO,OAAOmO,yCAAyC,CACrDF,OAAO,CAAC7L,QAAQ,EAChB2J,cACF,CAAC;EACH;;EAEA;EACA,UAAUmC,yCAAyCA,CACjD/I,UAA4C,EAC5CnF,KAAc,EACiB;IAC/B,MAAMoO,aAAa,GAAG,IAAI/I,GAAG,CAAc,CAAC;IAC5C,KAAK,MAAMH,IAAI,IAAIC,UAAU,EAAE;MAC7B,IAAID,IAAI,CAAC3F,IAAI,KAAK,UAAU,EAAE;QAC5B,MAAMgG,QAAQ,GACZ,CAACL,IAAI,CAACL,QAAQ,IAAIK,IAAI,CAACnF,GAAG,CAACR,IAAI,KAAK,YAAY,GAC5C2F,IAAI,CAACnF,GAAG,CAACsE,IAAI,GACX,OAAOmB,4BAA4B,CACnCN,IAAI,CAACnF,GACP,CAAa;QACnB,MAAMsO,WAAW,GACfnJ,IAAI,CAAClF,KAAK,CAACT,IAAI,KAAK,mBAAmB,GACnC2F,IAAI,CAAClF,KAAK,CAAC4C,IAAI,GACfsC,IAAI,CAAClF,KAAK;QAChB,IAAIqO,WAAW,CAAC9O,IAAI,KAAK,YAAY,EAAE;UACrC,MAAMiH,IAAI,GAAGpC,cAAc,CAACiK,WAAW,CAAChK,IAAI,CAAC;UAC7C,IAAIyD,CAAC,GAAG1L,IAAI,CAAC4D,KAAK,EAAEuF,QAAQ,CAAC;UAC7B,IAAIL,IAAI,CAAClF,KAAK,CAACT,IAAI,KAAK,mBAAmB,IAAIuI,CAAC,KAAKzI,SAAS,EAAE;YAC9D,IAAIqH,6BAA6B,CAACxB,IAAI,CAAClF,KAAK,CAAC+C,KAAK,CAAC,EAAE;cACnD+E,CAAC,GAAGnB,eAAe,CAACzB,IAAI,CAAClF,KAAK,CAAC+C,KAAK,EAAEsL,WAAW,CAAChK,IAAI,CAAC;YACzD,CAAC,MAAM;cACL,MAAMiK,YAAY,GAAG,OAAO9M,QAAQ,CAAC0D,IAAI,CAAClF,KAAK,CAAC+C,KAAK,CAAC;cACtD+E,CAAC,GAAGzL,QAAQ,CAACiS,YAAY,CAAC;YAC5B;UACF;UACA7R,QAAQ,CAAC+J,IAAI,EAAEsB,CAAC,CAAC;UACjBsG,aAAa,CAACG,GAAG,CAAChJ,QAAQ,CAAC;QAC7B,CAAC,MAAM;UACL,OAAOiJ,sCAAsC,CAC3CtJ,IAAI,CAAClF,KAAK,EACVA,KAAK,EACLuF,QACF,CAAC;UACD6I,aAAa,CAACG,GAAG,CAAChJ,QAAQ,CAAC;QAC7B;MACF,CAAC,MAAM;QACL,OAAOkJ,qCAAqC,CAC1CvJ,IAAI,EACJlF,KAAK,EACLoO,aACF,CAAC;MACH;IACF;EACF;;EAEA;EACA,UAAUI,sCAAsCA,CAC9C/M,IAAgB,EAChBzB,KAAc,EACd0O,YAAyB,EACD;IACxB,MAAMC,gBAAgB,GACpBlN,IAAI,CAAClC,IAAI,KAAK,mBAAmB,GAAGkC,IAAI,CAACmB,IAAI,GAAGnB,IAAI;IACtD,MAAMmN,eAAe,GACnBD,gBAAgB,CAACpP,IAAI,KAAK,cAAc,IACxCoP,gBAAgB,CAACpP,IAAI,KAAK,eAAe;IAC3C,IAAIiH,IAAiC;IACrC,IAAI,CAACoI,eAAe,EAAE;MACpBpI,IAAI,GAAG,CAAC,OAAOhF,QAAQ,CAACmN,gBAAgB,CAAC,EAAE/K,KAAwB;IACrE;IACA,MAAMkE,CAAC,GAAG1L,IAAI,CAAC4D,KAAK,EAAE0O,YAAY,CAAC;IACnC,IAAIG,QAAQ;IACZ,IAAIpN,IAAI,CAAClC,IAAI,KAAK,mBAAmB,IAAIuI,CAAC,KAAKzI,SAAS,EAAE;MACxD;MACA,MAAMiP,YAAY,GAAG,OAAO9M,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;MAChD8L,QAAQ,GAAGxS,QAAQ,CAACiS,YAAY,CAAC;IACnC,CAAC,MAAM;MACLO,QAAQ,GAAG/G,CAAC;IACd;IACA,IAAI8G,eAAe,EAAE;MACnB,OAAO,OAAO/H,iCAAiC,CAC7C8H,gBAAgB,EAChBE,QACF,CAAC;IACH;IACA,OAAOpS,QAAQ,CAAC+J,IAAI,EAAGqI,QAAQ,CAAC;EAClC;;EAEA;EACA,UAAUJ,qCAAqCA,CAC7CK,YAAyB,EACzB9O,KAAc,EACdoO,aAA+B,EACP;IACxB,MAAM5H,IAAI,GAAG,CAAC,OAAOhF,QAAQ,CAACsN,YAAY,CAACxM,QAAQ,CAAC,EACjDsB,KAAwB;IAC3B,MAAMmL,OAAO,GAAG/R,kBAAkB,CAAC,CAAC,CAAC,EAAEgD,KAAK,EAAEoO,aAAa,CAAC;IAC5D,OAAO3R,QAAQ,CAAC+J,IAAI,EAAEuI,OAAO,CAAC;EAChC;;EAEA;EACA,UAAUZ,yCAAyCA,CACjD/L,QAAuC,EACvC2J,cAAiC,EACT;IACxB,IAAIQ,MAAM,GAAGzO,gBAAgB,CAACN,KAAK,CAAC;IACpC,KAAK,MAAM2E,OAAO,IAAIC,QAAQ,EAAE;MAC9B,IAAI,CAACD,OAAO,EAAE;QACZ4J,cAAc,CAACI,IAAI,CAAC,CAAC;QACrBI,MAAM,GAAGzO,gBAAgB,CAACN,KAAK,CAAC;QAChC;MACF;MACA,MAAMmR,gBAAgB,GACpBxM,OAAO,CAAC5C,IAAI,KAAK,aAAa,GAC1B4C,OAAO,CAACG,QAAQ,GAChBH,OAAO,CAAC5C,IAAI,KAAK,mBAAmB,GAClC4C,OAAO,CAACS,IAAI,GACZT,OAAO;MACf,MAAMyM,eAAe,GACnBD,gBAAgB,CAACpP,IAAI,KAAK,cAAc,IACxCoP,gBAAgB,CAACpP,IAAI,KAAK,eAAe;MAC3C,IAAIiH,IAAiC;MACrC,IAAI,CAACoI,eAAe,EAAE;QACpBpI,IAAI,GAAG,CAAC,OAAOhF,QAAQ,CAACmN,gBAAgB,CAAC,EAAE/K,KAAwB;MACrE;MACA,IAAIkE,CAAU;MACd,IAAI3F,OAAO,CAAC5C,IAAI,KAAK,aAAa,EAAE;QAClC,MAAM;UAAE0M,IAAI;UAAEjM,KAAK,EAAEkM;QAAU,CAAC,GAAGH,cAAc,CAACI,IAAI,CAAC,CAAC;QACxD,MAAMnM,KAAK,GAAGiM,IAAI,GAAG5M,SAAS,GAAG6M,SAAS;QAC1C,IAAI/J,OAAO,CAAC5C,IAAI,KAAK,mBAAmB,IAAIS,KAAK,KAAKX,SAAS,EAAE;UAC/D,IACEqH,6BAA6B,CAACvE,OAAO,CAACY,KAAK,CAAC,IAC5C4L,gBAAgB,CAACpP,IAAI,KAAK,YAAY,EACtC;YACAuI,CAAC,GAAGnB,eAAe,CAACxE,OAAO,CAACY,KAAK,EAAE4L,gBAAgB,CAACtK,IAAI,CAAC;UAC3D,CAAC,MAAM;YACL,MAAMiK,YAAY,GAAG,OAAO9M,QAAQ,CAACW,OAAO,CAACY,KAAK,CAAC;YACnD+E,CAAC,GAAGzL,QAAQ,CAACiS,YAAY,CAAC;UAC5B;QACF,CAAC,MAAM;UACLxG,CAAC,GAAG9H,KAAK;QACX;MACF,CAAC,MAAM;QACL;QACA8H,CAAC,GAAG,IAAI9I,gBAAgB,CAAC,CAAC;QAC1B,IAAIgQ,CAAC,GAAG,CAAC;QACT;QACA,OAAO,IAAI,EAAE;UACX,MAAM;YAAE/C,IAAI;YAAEjM,KAAK,EAAEkM;UAAU,CAAC,GAAGH,cAAc,CAACI,IAAI,CAAC,CAAC;UACxD,IAAIF,IAAI,EAAE;YACR;UACF;UACCnE,CAAC,CAAekH,CAAC,CAAC,GAAG9C,SAAS;UAC/B8C,CAAC,EAAE;QACL;MACF;MACA,IAAIJ,eAAe,EAAE;QACnBrC,MAAM,GAAG,OAAO1F,iCAAiC,CAAC8H,gBAAgB,EAAE7G,CAAC,CAAC;MACxE,CAAC,MAAM;QACLyE,MAAM,GAAG9P,QAAQ,CAAC+J,IAAI,EAAGsB,CAAC,CAAC;MAC7B;IACF;IACA,OAAOyE,MAAM;EACf;;EAEA;EACA;EACA,UAAUzH,uCAAuCA,CAC/CF,SAAuC,EACvC3C,UAAsB,EACtBgN,MAAe,EAC2B;IAC1C,MAAMC,qBAAqB,GAAG,OAAO1N,QAAQ,CAACS,UAAU,CAAC;IACzD,MAAMkN,iBAAiB,GAAG9S,QAAQ,CAAC6S,qBAAqB,CAAC;IACzD,MAAME,WAAW,GAAGzS,aAAa,CAACwS,iBAAiB,CAAC;IACpD,OAAO,IAAIpR,eAAe,CAAC6G,SAAS,EAAEwK,WAAW,EAAEH,MAAM,CAAC;EAC5D;;EAEA;EACA,SAASjK,uCAAuCA,CAC9CJ,SAAuC,EACvCyK,UAAsB,EACtBJ,MAAe,EACE;IACjB1N,WAAW,GAAG8N,UAAU;IACxB,MAAMC,kBAAkB,GAAGD,UAAU,CAAChL,IAAI;IAC1C,OAAO,IAAItG,eAAe,CAAC6G,SAAS,EAAE0K,kBAAkB,EAAEL,MAAM,CAAC;EACnE;;EAEA;EACA;EACA,SAAS7H,6BAA6BA,CACpCmI,IAAgC,EAChC1F,GAAsB,EAChB;IACN,MAAMP,YAAY,GAAGhL,yBAAyB,CAACiR,IAAI,EAAE;MACnDC,GAAG,EAAE,KAAK;MACVC,QAAQ,EAAE;IACZ,CAAC,CAAC;IACF,KAAK,MAAMC,CAAC,IAAIpG,YAAY,EAAE;MAC5B,MAAMqG,qBAAqB,GACzBD,CAAC,CAACnQ,IAAI,KAAK,qBAAqB,IAAImQ,CAAC,CAACpK,IAAI,KAAK,OAAO;MACxD,KAAK,MAAM0H,EAAE,IAAI3O,iBAAiB,CAACqR,CAAC,CAAC,EAAE;QACrC,IAAIC,qBAAqB,EAAE;UACzB9F,GAAG,CAAC1J,sBAAsB,CAAC6M,EAAE,EAAE,IAAI,CAAC;QACtC,CAAC,MAAM;UACLnD,GAAG,CAACK,oBAAoB,CAAC8C,EAAE,EAAE,KAAK,CAAC;QACrC;MACF;MACA,IAAI0C,CAAC,CAACnQ,IAAI,KAAK,qBAAqB,EAAE;QACpC,MAAM,CAACqQ,EAAE,CAAC,GAAGvR,iBAAiB,CAACqR,CAAC,CAAC;QACjC,MAAMG,EAAE,GAAGC,yBAAyB,CAACJ,CAAC,EAAE7F,GAAG,CAAC;QAC5CA,GAAG,CAACzJ,iBAAiB,CAACwP,EAAE,EAAEC,EAAE,CAAC;MAC/B;IACF;EACF;;EAEA;EACA;EACA,UAAU7L,YAAYA,CACpBH,IAAc,EACdH,GAAoB,EACpBqM,IAAmD,EACnDpM,MAAgC,EACR;IACxB,IAAIJ,SAAS;IACb,IAAIG,GAAG,YAAY3F,eAAe,EAAE;MAClC,IAAIxB,mBAAmB,CAACmH,GAAG,CAAC,EAAE;QAC5BH,SAAS,GAAGG,GAAG,CAACF,IAAI;MACtB;IACF;IACA,MAAMwM,OAAO,GAAG,OAAOC,sBAAsB,CAACF,IAAI,CAAC;IACnD,IAAI,OAAOlM,IAAI,KAAK,UAAU,EAAE;MAC9B,MAAMX,QAAQ,GAAGxE,UAAU,CAACyE,SAAS,CAACQ,MAAM,CAACP,KAAK,EAAGO,MAAM,CAACN,GAAI,CAAC;MACjE,MAAM,IAAIC,SAAS,CAAC,GAAGJ,QAAQ,oBAAoB,CAAC;IACtD;IAEA,IAAIrE,KAAK,IAAIC,sBAAsB,EAAE;MACnC,MAAMoR,YAAY,GAAIrM,IAAI,CAAoB3G,YAAY,CAAC;MAC3D,IAAIgT,YAAY,EAAE;QAChB,MAAMzM,MAAM,GAAG,OAAQyM,YAAY,CAAcC,KAAK,CACpD5M,SAAS,EACTyM,OACF,CAAC;QACDxQ,UAAU,CAACiE,MAAM,CAAC;QAClB,OAAO3F,gBAAgB,CAAC2F,MAAM,CAAC;MACjC;IACF;IAEA,MAAMA,MAAM,GAAGI,IAAI,CAACsM,KAAK,CAAC5M,SAAS,EAAEyM,OAAO,CAAC;IAC7CxQ,UAAU,CAACiE,MAAM,CAAC;IAClB,OAAO3F,gBAAgB,CAAC2F,MAAM,CAAC;EACjC;;EAEA;EACA,UAAUwB,WAAWA,CACnBmL,aAAuC,EACvCL,IAAgC,EACR;IACxB,MAAMrM,GAAG,GAAG,OAAOlC,QAAQ,CAAC4O,aAAa,CAAC;IAC1C,MAAMC,WAAW,GAAGhU,QAAQ,CAACqH,GAAG,CAAwC;IACxE,MAAMsM,OAAO,GAAG,OAAOC,sBAAsB,CAACF,IAAI,CAAC;IACnD,IACE,OAAOM,WAAW,KAAK,UAAU,IAChCA,WAAW,CAA+BxS,aAAa,CAAC,KAAK,KAAK,EACnE;MACA,MAAMyS,eAAe,GAAG5R,UAAU,CAACyE,SAAS,CAC1CiN,aAAa,CAAChN,KAAK,EACnBgN,aAAa,CAAC/M,GAChB,CAAC;MACD,MAAM,IAAIC,SAAS,CAAC,GAAGgN,eAAe,uBAAuB,CAAC;IAChE;IACA,IACE,CAACxR,sBAAsB,IACvB,CAACV,oBAAoB,CAACiS,WAAW,CAAC,IAClCA,WAAW,KAAKrR,gBAAgB,EAChC;MACA,MAAMsR,eAAe,GAAG5R,UAAU,CAACyE,SAAS,CAC1CiN,aAAa,CAAChN,KAAK,EACnBgN,aAAa,CAAC/M,GAChB,CAAC;MACD,MAAM,IAAIC,SAAS,CAAC,GAAGgN,eAAe,gCAAgC,CAAC;IACzE;IAEA,OAAOxS,gBAAgB,CAAC,IAAIuS,WAAW,CAAC,GAAGL,OAAO,CAAC,CAAC;EACtD;;EAEA;EACA,UAAUC,sBAAsBA,CAC9BF,IAAmD,EACf;IACpC,MAAM7N,KAAgB,GAAG,EAAE;IAC3B,IAAIjD,KAAK,CAACsR,OAAO,CAACR,IAAI,CAAC,EAAE;MACvB,KAAK,MAAMS,GAAG,IAAIT,IAAI,EAAE;QACtB,IAAIS,GAAG,CAACjR,IAAI,KAAK,eAAe,EAAE;UAChC,MAAM8C,YAAY,GAAGhG,QAAQ,CAC3B,OAAOmF,QAAQ,CAACgP,GAAG,CAAClO,QAAQ,CAC9B,CAAc;UACdJ,KAAK,CAACK,IAAI,CAAC,GAAGF,YAAY,CAAC;QAC7B,CAAC,MAAM;UACLH,KAAK,CAACK,IAAI,CAAClG,QAAQ,CAAC,OAAOmF,QAAQ,CAACgP,GAAG,CAAC,CAAC,CAAC;QAC5C;MACF;IACF,CAAC,MAAM;MACLtO,KAAK,CAACK,IAAI,CAAChC,iBAAiB,CAACwP,IAAI,CAAC,CAAC;MACnC,KAAK,MAAMnK,IAAI,IAAImK,IAAI,CAAClK,WAAW,EAAE;QACnC3D,KAAK,CAACK,IAAI,CAAClG,QAAQ,CAAC,OAAOmF,QAAQ,CAACoE,IAAI,CAAC,CAAC,CAAC;MAC7C;IACF;IACA,OAAO1D,KAAK;EACd;;EAEA;EACA,UAAUuO,YAAYA,CACpBhO,OAAuB,EACvBiO,YAAqB,EACrBX,IAAuB,EACW;IAAA,IAAAY,iBAAA;IAClC,CAAAA,iBAAA,GAAAzR,KAAK,CAAC0R,UAAU,cAAAD,iBAAA,eAAhBA,iBAAA,CAAA5O,IAAA,CAAA7C,KAAK,EAAcuD,OAAO,CAACzE,UAAU,CAAC,CAAC;IACvC,MAAM6S,aAAa,GAAGC,sBAAsB,CAACrO,OAAO,CAAC;IACrDsO,oBAAoB,CAACtO,OAAO,EAAEoO,aAAa,EAAEH,YAAY,CAAC;IAC1D,MAAMjN,MAAM,GAAG,OAAOuN,wBAAwB,CAACvO,OAAO,EAAEsN,IAAI,CAAC;IAC7D,IAAIlR,KAAK,EAAE;MACT0C,WAAW,GAAG;QACZ,GAAGkB,OAAO,CAACzE,UAAU,CAAC;QACtB,CAACZ,cAAc,GAAG;MACpB,CAEC;MACD,MAAM;QACJmC,IAAI,EAAE,QAAQ;QACdS,KAAK,EAAEyD,MAAM,CAAC2F,IAAI,KAAK,QAAQ,GAAG3F,MAAM,CAACG,KAAK,GAAGvE;MACnD,CAAC;IACH;IACAS,qBAAqB,CAACmR,GAAG,CAAC,CAAC;IAC3B,IAAIxN,MAAM,CAAC2F,IAAI,KAAK,QAAQ,EAAE;MAC5B,OAAO3F,MAAM,CAACG,KAAK;IACrB;IACA,OAAOvE,SAAS;EAClB;;EAEA;EACA,SAASyR,sBAAsBA,CAAC3H,CAAiB,EAAoB;IACnE,MAAM0H,aAAa,GAAG,IAAInT,gBAAgB,CAAC,CAAC;IAC5CmT,aAAa,CAACK,QAAQ,GAAG/H,CAAC;IAC1B,MAAMgI,QAAQ,GAAG,IAAIvT,mBAAmB,CAACuL,CAAC,CAAC;IAC3C0H,aAAa,CAACjR,mBAAmB,GAAGuR,QAAQ;IAC5CN,aAAa,CAAChR,kBAAkB,GAAGsR,QAAQ;IAC3CrR,qBAAqB,CAACyC,IAAI,CAACsO,aAAa,CAAC;IACzC,OAAOA,aAAa;EACtB;EAEA,SAASE,oBAAoBA,CAC3B5H,CAAiB,EACjB0H,aAA+B,EAC/BH,YAAqB,EACrB;IACA,IAAIvH,CAAC,CAACjL,QAAQ,CAAC,KAAKD,IAAI,CAACmT,OAAO,EAAE;MAChC;IACF;IACA,MAAMD,QAAQ,GAAGN,aAAa,CAAChR,kBAAkB;IAChDsR,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAA0BE,aAAa,CAACX,YAAY,CAAC;EAChE;;EAEA;EACA,UAAUM,wBAAwBA,CAChC7H,CAAiB,EACjB4G,IAAuB,EACC;IACxB,OAAO,OAAOuB,oBAAoB,CAACnI,CAAC,CAAC5L,cAAc,CAAC,EAAE4L,CAAC,EAAE4G,IAAI,CAAC;EAChE;;EAEA;EACA,UAAUuB,oBAAoBA,CAC5BtK,IAA8B,EAC9BmC,CAAiB,EACjB4G,IAAuB,EACC;IACxB,OAAOwB,gCAAgC,CAACpI,CAAC,EAAE4G,IAAI,CAAC;IAChD,IAAI9Q,KAAK,CAACsR,OAAO,CAACvJ,IAAI,CAAC,EAAE;MACvB,OAAO,OAAOM,qBAAqB,CAACN,IAAI,CAAC;IAC3C;IACA,OAAO,IAAI/J,gBAAgB,CAAC,QAAQ,EAAEZ,QAAQ,CAAC,OAAOmF,QAAQ,CAACwF,IAAI,CAAC,CAAC,CAAC;EACxE;;EAEA;EACA,UAAUM,qBAAqBA,CAC7BkK,UAAuB,EACC;IACxB,IAAI/N,MAAM,GAAG3F,gBAAgB,CAACN,KAAK,CAAC;IACpC,KAAK,MAAMsO,IAAI,IAAI0F,UAAU,EAAE;MAC7B,MAAMC,CAAC,GAAG,OAAOjQ,QAAQ,CAACsK,IAAI,CAAC;MAC/B,IAAI2F,CAAC,CAACrI,IAAI,KAAK,QAAQ,EAAE;QACvB,OAAOqI,CAAC;MACV;MACAhO,MAAM,GAAG7G,WAAW,CAAC6G,MAAM,EAAEgO,CAAC,CAAC7N,KAAK,CAAC;IACvC;IACA,OAAOH,MAAM;EACf;EAEA,SAASwE,kBAAkBA,CAAA,EAAwB;IACjD,IAAI4B,GAAyC,GAC3C3C,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;IACxC,OAAOgK,GAAG,EAAE;MACV,IAAIA,GAAG,CAAC6H,cAAc,CAAC,CAAC,EAAE;QACxB,OAAO7H,GAAG;MACZ;MACAA,GAAG,GAAGA,GAAG,CAAC+D,QAAQ;IACpB;IACA,MAAM,IAAI+D,KAAK,CAAC,oCAAoC,CAAC;EACvD;;EAEA;EACA,SAASjL,6BAA6BA,CACpCjF,IAAgB,EACY;IAC5B;IACA,OACGA,IAAI,CAAClC,IAAI,KAAK,oBAAoB,IAAI,CAACkC,IAAI,CAAC+H,EAAE,IAC/C/H,IAAI,CAAClC,IAAI,KAAK,yBAAyB;EAE3C;;EAEA;EACA,SAASoH,eAAeA,CAAClF,IAAwB,EAAE4C,IAAY,EAAE;IAC/D;IACA,QAAQ5C,IAAI,CAAClC,IAAI;MACf,KAAK,oBAAoB;QACvB,OAAOoI,qCAAqC,CAAClG,IAAI,EAAE4C,IAAI,CAAC;MAC1D,KAAK,yBAAyB;QAC5B,OAAO3B,kCAAkC,CAACjB,IAAI,EAAE4C,IAAI,CAAC;MACvD;MACA;QACE,MAAM,IAAIsN,KAAK,CACb,6CAA8ClQ,IAAI,CAAwBlC,IAAI,EAChF,CAAC;IACL;EACF;;EAEA;EACA,UAAUgS,gCAAgCA,CACxC1N,IAAoB,EACpBkM,IAAuB,EACQ;IAC/B,MAAMc,aAAa,GAAG3J,iBAAiB,CAAC,CAAC;IACzC,MAAMqI,IAAI,GAAG1L,IAAI,CAACtG,cAAc,CAAC;IACjC,MAAMqU,OAAO,GAAG/N,IAAI,CAAClG,gBAAgB,CAAkC;IACvE,MAAMkU,cAAc,GAAGxT,iBAAiB,CAACuT,OAAO,CAAC;IACjD,MAAME,uBAAuB,GAAGvT,kBAAkB,CAACqT,OAAO,CAAC;IAC3D,MAAMG,eAAe,GAAGzT,yBAAyB,CAACiR,IAAI,EAAE;MACtDC,GAAG,EAAE,IAAI;MACTC,QAAQ,EAAE;IACZ,CAAC,CAAC;IACF,MAAMuC,QAAQ,GAAG3T,iBAAiB,CAAC0T,eAAe,CAAC;;IAEnD;IACA;IACA,MAAME,aAAuB,GAAG,EAAE;IAClC,MAAMC,qBAA4C,GAAG,EAAE;IACvD,KAAK,IAAIC,CAAC,GAAGJ,eAAe,CAAC3S,MAAM,GAAG,CAAC,EAAE+S,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACpD,MAAMzC,CAAC,GAAGqC,eAAe,CAACI,CAAC,CAAC;MAC5B,IAAIzC,CAAC,CAACnQ,IAAI,KAAK,qBAAqB,EAAE;QACpCiD,wBAAwB,CAACkN,CAAC,CAAC;QAC3B,MAAM,CAACE,EAAE,CAAC,GAAGvR,iBAAiB,CAACqR,CAAC,CAAC;QACjC,IAAI,CAACuC,aAAa,CAACxN,QAAQ,CAACmL,EAAE,CAAC,EAAE;UAC/BqC,aAAa,CAACG,OAAO,CAACxC,EAAE,CAAC;UACzBsC,qBAAqB,CAACE,OAAO,CAAC1C,CAAC,CAAC;QAClC;MACF,CAAC,MAAM,IAAI9Q,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEyT,KAAK,EAAE;QACvB,MAAM,IAAI9N,WAAW,CACnB,kEACF,CAAC;MACH;IACF;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM+N,qBAAqB,GACzB,CAAC,CAACxT,sBAAsB,IAAI+E,IAAI,CAAC3F,QAAQ,CAAC,KAAKD,IAAI,CAACmT,OAAO;IAE7D,MAAMvH,GAAG,GAAGgH,aAAa,CAAChR,kBAAmB;IAC7C,KAAK,MAAM0S,SAAS,IAAIV,cAAc,EAAE;MACtC;MACAhI,GAAG,CAACK,oBAAoB,CAACqI,SAAS,EAAE,KAAK,CAAC;IAC5C;IAEA,IAAIC,iBAAiB,GAAGX,cAAc;IACtC,IAAIS,qBAAqB,EAAE;MACzB,MAAMG,EAAE,GAAGC,6BAA6B,CAAC3C,IAAI,CAAC;MAC9ClG,GAAG,CAAC1J,sBAAsB,CAAC,WAAW,EAAE,KAAK,CAAC;MAC9C0J,GAAG,CAACzJ,iBAAiB,CAAC,WAAW,EAAEqS,EAAE,CAAC;MACtCD,iBAAiB,GAAGX,cAAc,CAACc,MAAM,CAAC,WAAW,CAAC;IACxD;IAEA,MAAM5G,cAAc,GAAG7P,wBAAwB,CAAC6T,IAAI,CAAC;IACrD,OAAO6C,6BAA6B,CAAChB,OAAO,EAAE7F,cAAc,EAAElC,GAAG,CAAC;IAElE,IAAIgJ,MAAyB;IAC7B,IAAI,CAACf,uBAAuB,EAAE;MAC5B;MACA;MACA;MACA,MAAMgB,oBAAoB,GAAG,CAAC,GAAGN,iBAAiB,CAAC;MACnD,KAAK,MAAMxD,CAAC,IAAIgD,QAAQ,EAAE;QACxB,IAAI,CAACc,oBAAoB,CAACrO,QAAQ,CAACuK,CAAC,CAAC,EAAE;UACrC8D,oBAAoB,CAACvQ,IAAI,CAACyM,CAAC,CAAC;UAC5BnF,GAAG,CAACK,oBAAoB,CAAC8E,CAAC,EAAE,KAAK,CAAC;UAClCnF,GAAG,CAACzJ,iBAAiB,CAAC4O,CAAC,EAAE3P,SAAS,CAAC;QACrC;MACF;MACAwT,MAAM,GAAGhJ,GAAG;IACd,CAAC,MAAM;MACL;MACA;MACA;MACAgJ,MAAM,GAAG,IAAIvV,sBAAsB,CAACuM,GAAG,CAAC;MACxCgH,aAAa,CAACjR,mBAAmB,GAAGiT,MAAM;MAC1C;MACA,MAAMC,oBAA8B,GAAG,EAAE;MACzC,KAAK,MAAM9D,CAAC,IAAIgD,QAAQ,EAAE;QACxB,IAAI,CAACc,oBAAoB,CAACrO,QAAQ,CAACuK,CAAC,CAAC,EAAE;UACrC8D,oBAAoB,CAACvQ,IAAI,CAACyM,CAAC,CAAC;UAC5B6D,MAAM,CAAC3I,oBAAoB,CAAC8E,CAAC,EAAE,KAAK,CAAC;UACrC,IAAI+D,YAAqB;UACzB,IAAIP,iBAAiB,CAAC/N,QAAQ,CAACuK,CAAC,CAAC,IAAI,CAACiD,aAAa,CAACxN,QAAQ,CAACuK,CAAC,CAAC,EAAE;YAC/D+D,YAAY,GAAGlJ,GAAG,CAACmE,eAAe,CAACgB,CAAC,EAAE,KAAK,CAAC;UAC9C;UACA6D,MAAM,CAACzS,iBAAiB,CAAC4O,CAAC,EAAE+D,YAAY,CAAC;UACzC;UACA;QACF;MACF;IACF;IACA,MAAMC,MAAM,GAAGH,MAAM;IACrBhC,aAAa,CAAChR,kBAAkB,GAAGmT,MAAM;IAEzC,MAAMC,eAAe,GAAG3U,yBAAyB,CAACiR,IAAI,EAAE;MACtDC,GAAG,EAAE,KAAK;MACVC,QAAQ,EAAE;IACZ,CAAC,CAAC;IACF,KAAK,MAAMC,CAAC,IAAIuD,eAAe,EAAE;MAC/B,KAAK,MAAMjG,EAAE,IAAI3O,iBAAiB,CAACqR,CAAC,CAAC,EAAE;QACrC;QACA,IAAKA,CAAC,CAAyBpK,IAAI,KAAK,OAAO,EAAE;UAC/C0N,MAAM,CAAC7S,sBAAsB,CAAC6M,EAAE,EAAE,IAAI,CAAC;QACzC,CAAC,MAAM;UACLgG,MAAM,CAAC9I,oBAAoB,CAAC8C,EAAE,EAAE,KAAK,CAAC;QACxC;MACF;IACF;IAEA,KAAK,MAAMkG,CAAC,IAAIhB,qBAAqB,EAAE;MACrC,MAAM,CAACtC,EAAE,CAAC,GAAGvR,iBAAiB,CAAC6U,CAAC,CAAC;MACjC,MAAMrD,EAAE,GAAGC,yBAAyB,CAACoD,CAAC,EAAEF,MAAM,CAAC;MAC/CH,MAAM,CAACM,iBAAiB,CAACvD,EAAE,EAAEC,EAAE,EAAE,KAAK,CAAC;IACzC;EACF;EAEA,SAAS6C,6BAA6BA,CAAC3C,IAAuB,EAAE;IAC9D,MAAMC,OAAO,GAAG,CAAC,GAAGD,IAAI,CAAC;IACzB,MAAMqD,cAAuC,GAAG,CAAC,CAAC;IAClDnT,MAAM,CAACiB,cAAc,CAACkS,cAAc,EAAE,QAAQ,EAAE;MAC9CpT,KAAK,EAAEgQ,OAAO,CAAC5Q,MAAM;MACrB+B,QAAQ,EAAE,IAAI;MACdE,YAAY,EAAE;IAChB,CAAC,CAAC;IACF,KAAK,IAAI0E,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGiK,OAAO,CAAC5Q,MAAM,EAAE2G,KAAK,EAAE,EAAE;MACnDqN,cAAc,CAACnN,MAAM,CAACF,KAAK,CAAC,CAAC,GAAGiK,OAAO,CAACjK,KAAK,CAAC;IAChD;IACA9F,MAAM,CAACiB,cAAc,CAACkS,cAAc,EAAEC,MAAM,CAACzH,QAAQ,EAAE;MACrD5L,KAAK,EAAEf,KAAK,CAACqU,SAAS,CAACC,MAAM;MAC7BpS,QAAQ,EAAE,IAAI;MACdE,YAAY,EAAE;IAChB,CAAC,CAAC;IACF,MAAMmS,cAAc,GAAGA,CAAA,KAAM;MAC3B,MAAM,IAAIlQ,SAAS,CACjB,wIACF,CAAC;IACH,CAAC;IACDrD,MAAM,CAACiB,cAAc,CAACkS,cAAc,EAAE,QAAQ,EAAE;MAC9C1S,GAAG,EAAE8S,cAAc;MACnBlS,GAAG,EAAEkS;IACP,CAAC,CAAC;IACF,OAAOJ,cAAc;EACvB;;EAEA;EACA,SAAStD,yBAAyBA,CAChCjM,IAAyB,EACzB4P,KAAwB,EACR;IAChB,MAAMtK,CAAC,GAAGuK,sBAAsB,CAAC7P,IAAI,EAAE4P,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAE1D,IAAI5P,IAAI,CAAC2F,EAAE,EAAE;MACX7D,eAAe,CAACwD,CAAC,EAAEtF,IAAI,CAAC2F,EAAE,CAACnF,IAAI,CAAC;IAClC;IAEA,OAAO8E,CAAC;EACV;;EAEA;EACA,SAASxB,qCAAqCA,CAC5CgM,kBAAsC,EACtCtP,IAAa,EACG;IAChB,MAAMoP,KAAK,GAAGvM,iBAAiB,CAAC,CAAC,CAACrH,kBAAmB;IACrD,IAAI8T,kBAAkB,CAACnK,EAAE,EAAE;MACzB,MAAMnF,IAAI,GAAGsP,kBAAkB,CAACnK,EAAE,CAACnF,IAAI;MACvC,MAAMuP,OAAO,GAAG,IAAItW,sBAAsB,CAACmW,KAAK,CAAC;MACjDG,OAAO,CAACzT,sBAAsB,CAACkE,IAAI,EAAE,KAAK,CAAC;MAC3C,MAAM5B,OAAO,GAAGiR,sBAAsB,CACpCC,kBAAkB,EAClBC,OAAO,EACP,IAAI,EACJ,KACF,CAAC;MACDjO,eAAe,CAAClD,OAAO,EAAE4B,IAAI,CAAC;MAC9BuP,OAAO,CAACxT,iBAAiB,CAACiE,IAAI,EAAE5B,OAAO,CAAC;MACxC,OAAOA,OAAO;IAChB,CAAC,MAAM;MACL,MAAMA,OAAO,GAAGiR,sBAAsB,CACpCC,kBAAkB,EAClBF,KAAK,EACL,IAAI,EACJ,KACF,CAAC;MACD9N,eAAe,CAAClD,OAAO,EAAE4B,IAAI,IAAI,EAAE,CAAC;MACpC,OAAO5B,OAAO;IAChB;EACF;;EAEA;EACA,SAASC,kCAAkCA,CACzCmR,aAAsC,EACtCxP,IAAa,EACG;IAChB,MAAMoP,KAAK,GAAGvM,iBAAiB,CAAC,CAAC,CAACrH,kBAAmB;IACrD,MAAM4C,OAAO,GAAGiR,sBAAsB,CAACG,aAAa,EAAEJ,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IACzE9N,eAAe,CAAClD,OAAO,EAAE4B,IAAI,IAAI,EAAE,CAAC;IACpC,OAAO5B,OAAO;EAChB;EAEA,SAASkD,eAAeA,CAACwD,CAAiB,EAAE9E,IAAY,EAAE;IACxDpE,MAAM,CAACiB,cAAc,CAACiI,CAAC,EAAE,MAAM,EAAE;MAC/BnJ,KAAK,EAAEqE,IAAI;MACXhD,YAAY,EAAE;IAChB,CAAC,CAAC;EACJ;;EAEA;EACA,SAASqS,sBAAsBA,CAC7BI,UAG2B,EAC3BL,KAAwB,EACxBM,aAAsB,EACtBC,WAAoB,EACJ;IAChB,MAAM7K,CAAC,GAAG,SAAAA,CAAA,EAAyB;MACjC;MACA,OAAO8K,MAAM,CAACxD,YAAY,CAACtH,CAAC,EAAE,IAAI,EAAEhK,SAAS,CAAC,CAAC;IACjD,CAAmB;IACnBc,MAAM,CAACiU,gBAAgB,CAAC/K,CAAC,EAAE;MACzB,CAACnL,UAAU,GAAG;QACZgC,KAAK,EAAE8T;MACT,CAAC;MACD,CAACnW,gBAAgB,GAAG;QAClBqC,KAAK,EAAE8T,UAAU,CAACK;MACpB,CAAC;MACD,CAAC5W,cAAc,GAAG;QAChByC,KAAK,EACH8T,UAAU,CAAC9M,IAAI,CAACzH,IAAI,KAAK,gBAAgB,GACrCuU,UAAU,CAAC9M,IAAI,CAACA,IAAI,GACpB8M,UAAU,CAAC9M;MACnB,CAAC;MACD,CAACvJ,WAAW,GAAG;QACbuC,KAAK,EAAEyT;MACT,CAAC;MACD,CAAC5V,aAAa,GAAG;QACfmC,KAAK,EAAE+T;MACT,CAAC;MACD,CAAC7V,QAAQ,GAAG;QACV8B,KAAK,EAAEgU,WAAW,GAAG/V,IAAI,CAACmT,OAAO,GAAGnT,IAAI,CAACmW;MAC3C;IACF,CAAC,CAAC;IACF,IAAIvV,KAAK,IAAIC,sBAAsB,EAAE;MACnCmB,MAAM,CAACiB,cAAc,CAACiI,CAAC,EAAEjM,YAAY,EAAE;QACrC8C,KAAK,EAAE,SAAAA,CAAA,EAAY;UACjB;UACA,OAAOyQ,YAAY,CAACtH,CAAC,EAAE,IAAI,EAAEhK,SAAS,CAAC;QACzC;MACF,CAAC,CAAC;IACJ;IACA,OAAOgK,CAAC;EACV;;EAEA;EACA;EACA,UAAUQ,qBAAqBA,CAC7BlI,IAAgB,EAChBzB,KAAc,EACdqU,WAA+B,EACwB;IACvD,QAAQ5S,IAAI,CAAClC,IAAI;MACf,KAAK,YAAY;QACf,OAAO+U,mBAAmB,CAAC7S,IAAI,CAAC4C,IAAI,EAAErE,KAAK,EAAEqU,WAAW,CAAC;MAC3D,KAAK,eAAe;QAClB3X,sBAAsB,CAACsD,KAAK,CAAC;QAC7B,OAAO,OAAOuU,6BAA6B,CACxC9S,IAAI,CAAyB0D,UAAU,EACxCnF,KAAK,EACLqU,WACF,CAAC;MACH,KAAK,cAAc;QAAE;UACnB,MAAMtI,cAAc,GAAG7P,wBAAwB,CAC7C8D,KACF,CAAC;UACD,OAAO,OAAO4S,6BAA6B,CACzCnR,IAAI,CAACW,QAAQ,EACb2J,cAAc,EACdsI,WACF,CAAC;QACH;IACF;EACF;;EAEA;EACA,UAAUE,6BAA6BA,CACrCpP,UAA4C,EAC5CnF,KAAc,EACdqU,WAA+B,EACP;IACxB,MAAMjG,aAAa,GAAG,IAAI/I,GAAG,CAAc,CAAC;IAC5C,KAAK,MAAMH,IAAI,IAAIC,UAAU,EAAE;MAC7B,IAAID,IAAI,CAAC3F,IAAI,KAAK,aAAa,EAAE;QAC/B,OAAOiV,yBAAyB,CAC9BtP,IAAI,EACJlF,KAAK,EACLqU,WAAW,EACXjG,aACF,CAAC;MACH;MACA,IAAI,CAAClJ,IAAI,CAACL,QAAQ,IAAIK,IAAI,CAACnF,GAAG,CAACR,IAAI,KAAK,YAAY,EAAE;QACpD,OAAOkV,0BAA0B,CAC/BvP,IAAI,CAAClF,KAAK,EACVA,KAAK,EACLqU,WAAW,EACXnP,IAAI,CAACnF,GAAG,CAACsE,IACX,CAAC;QACD+J,aAAa,CAACG,GAAG,CAACrJ,IAAI,CAACnF,GAAG,CAACsE,IAAI,CAAC;MAClC,CAAC,MAAM;QACL,MAAMqQ,CAAC,GAAG,OAAOlP,4BAA4B,CAACN,IAAI,CAACnF,GAAiB,CAAC;QACrE,OAAO0U,0BAA0B,CAC/BvP,IAAI,CAAClF,KAAK,EACVA,KAAK,EACLqU,WAAW,EACXK,CACF,CAAC;QACDtG,aAAa,CAACG,GAAG,CAACmG,CAAC,CAAC;MACtB;IACF;IACA,OAAO5W,gBAAgB,CAACN,KAAK,CAAC;EAChC;;EAEA;EACA,UAAUgI,4BAA4BA,CACpC/D,IAAgB,EACsB;IACtC,MAAM8D,QAAQ,GAAGlJ,QAAQ,CAAC,OAAOmF,QAAQ,CAACC,IAAI,CAAC,CAAC;IAChD,OAAO9E,aAAa,CAAC4I,QAAQ,CAAC;EAChC;;EAEA;EACA,SAASiP,yBAAyBA,CAChC1F,YAAyB,EACzB9O,KAAc,EACdqU,WAA0C,EAC1CjG,aAA+B,EACb;IAClB,MAAMjG,GAAG,GAAG/D,cAAc,CACvB0K,YAAY,CAACxM,QAAQ,CAAgB+B,IAAI,EAC1CgQ,WACF,CAAC;IACD,MAAMtF,OAAO,GAAG/R,kBAAkB,CAAC,CAAC,CAAC,EAAEgD,KAAK,EAAEoO,aAAa,CAAC;IAC5D,IAAI,CAACiG,WAAW,EAAE;MAChB,OAAO5X,QAAQ,CAAC0L,GAAG,EAAE4G,OAAO,CAAC;IAC/B;IACA,OAAOzS,2BAA2B,CAAC6L,GAAG,EAAE4G,OAAO,CAAC;EAClD;;EAEA;EACA,UAAU6D,6BAA6BA,CACrCxQ,QAAuC,EACvC2J,cAAiC,EACjCsI,WAA+B,EACwB;IACvD,IAAIjS,QAAQ,CAAChD,MAAM,KAAK,CAAC,EAAE;MACzB,OAAOtB,gBAAgB,CAACN,KAAK,CAAC;IAChC;IACA,IAAIiG,MAAM;IACV,KAAK,MAAMhC,IAAI,IAAIW,QAAQ,EAAE;MAC3B,IAAI,CAACX,IAAI,EAAE;QACT;QACAsK,cAAc,CAACI,IAAI,CAAC,CAAC;QACrB1I,MAAM,GAAG3F,gBAAgB,CAACN,KAAK,CAAC;MAClC,CAAC,MAAM,IAAIiE,IAAI,CAAClC,IAAI,KAAK,aAAa,EAAE;QACtC;QACA,IAAIkC,IAAI,CAACa,QAAQ,CAAC/C,IAAI,KAAK,YAAY,EAAE;UACvC,MAAM4I,GAAG,GAAG/D,cAAc,CAAC3C,IAAI,CAACa,QAAQ,CAAC+B,IAAI,EAAEgQ,WAAW,CAAC;UAC3D,MAAM1J,CAAY,GAAG,IAAI3L,gBAAgB,CAAC,CAAC;UAC3C,IAAIgQ,CAAC,GAAG,CAAC;UACT;UACA,OAAO,IAAI,EAAE;YACX,MAAM;cAAE/C,IAAI;cAAEjM;YAAM,CAAC,GAAG+L,cAAc,CAACI,IAAI,CAAC,CAAC;YAC7C,IAAIF,IAAI,EAAE;cACRxI,MAAM,GAAG4Q,WAAW,GAChB/X,2BAA2B,CAAC6L,GAAG,EAAEwC,CAAC,CAAC,GACnClO,QAAQ,CAAC0L,GAAG,EAAEwC,CAAC,CAAC;cACpB;YACF;YACAA,CAAC,CAACqE,CAAC,CAAC,GAAGhP,KAAK;YACZgP,CAAC,EAAE;UACL;QACF,CAAC,MAAM;UACL,MAAMrE,CAAY,GAAG,IAAI3L,gBAAgB,CAAC,CAAC;UAC3C,IAAIgQ,CAAC,GAAG,CAAC;UACT;UACA,OAAO,IAAI,EAAE;YACX,MAAM;cAAE/C,IAAI;cAAEjM;YAAM,CAAC,GAAG+L,cAAc,CAACI,IAAI,CAAC,CAAC;YAC7C,IAAIF,IAAI,EAAE;cACRxI,MAAM,GAAG,OAAOkG,qBAAqB,CACnClI,IAAI,CAACa,QAAQ,EACbqI,CAAC,EACD0J,WACF,CAAC;cACD;YACF;YACA1J,CAAC,CAACqE,CAAC,CAAC,GAAGhP,KAAK;YACZgP,CAAC,EAAE;UACL;QACF;MACF,CAAC,MAAM;QACL;QACA,MAAM2F,cAAc,GAClBlT,IAAI,CAAClC,IAAI,KAAK,mBAAmB,GAAGkC,IAAI,CAACmB,IAAI,GAAGnB,IAAI;QACtD,QAAQkT,cAAc,CAACpV,IAAI;UACzB,KAAK,eAAe;UACpB,KAAK,cAAc;YAAE;cACnB,IAAIuI,CAAU;cACd,MAAM;gBAAEmE,IAAI;gBAAEjM;cAAM,CAAC,GAAG+L,cAAc,CAACI,IAAI,CAAC,CAAC;cAC7C,IAAI,CAACF,IAAI,EAAE;gBACTnE,CAAC,GAAG9H,KAAK;cACX;cACA,IAAIyB,IAAI,CAAClC,IAAI,KAAK,mBAAmB,IAAIuI,CAAC,KAAKzI,SAAS,EAAE;gBACxD,MAAMiP,YAAY,GAAG,OAAO9M,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;gBAChD+E,CAAC,GAAGzL,QAAQ,CAACiS,YAAY,CAAC;cAC5B;cACA7K,MAAM,GAAG,OAAOkG,qBAAqB,CACnCgL,cAAc,EACd7M,CAAC,EACDuM,WACF,CAAC;cACD;YACF;UACA,KAAK,YAAY;YAAE;cACjB,MAAM5K,SAAS,GAAGkL,cAAc,CAACtQ,IAAI;cACrC,MAAM8D,GAAG,GAAG/D,cAAc,CAACqF,SAAS,EAAE4K,WAAW,CAAC;cAClD,IAAIvM,CAAU;cACd,MAAM;gBAAEmE,IAAI;gBAAEjM;cAAM,CAAC,GAAG+L,cAAc,CAACI,IAAI,CAAC,CAAC;cAC7C,IAAI,CAACF,IAAI,EAAE;gBACTnE,CAAC,GAAG9H,KAAK;cACX;cACA,IAAIyB,IAAI,CAAClC,IAAI,KAAK,mBAAmB,IAAIuI,CAAC,KAAKzI,SAAS,EAAE;gBACxD,IAAIqH,6BAA6B,CAACjF,IAAI,CAACsB,KAAK,CAAC,EAAE;kBAC7C+E,CAAC,GAAGnB,eAAe,CAAClF,IAAI,CAACsB,KAAK,EAAE0G,SAAS,CAAC;gBAC5C,CAAC,MAAM;kBACL,MAAM6E,YAAY,GAAG,OAAO9M,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;kBAChD+E,CAAC,GAAGzL,QAAQ,CAACiS,YAAY,CAAC;gBAC5B;cACF;cACA7K,MAAM,GAAG4Q,WAAW,GAChB/X,2BAA2B,CAAC6L,GAAG,EAAEL,CAAC,CAAC,GACnCrL,QAAQ,CAAC0L,GAAG,EAAEL,CAAC,CAAC;cACpB;YACF;QACF;MACF;IACF;IACA,OAAOrE,MAAM;EACf;;EAEA;EACA,UAAUgR,0BAA0BA,CAClChT,IAAgB,EAChBzB,KAAc,EACdqU,WAA0C,EAC1C3F,YAAyB,EAC8B;IACvD,MAAMkG,YAAY,GAChBnT,IAAI,CAAClC,IAAI,KAAK,YAAY,IACzBkC,IAAI,CAAClC,IAAI,KAAK,mBAAmB,IAAIkC,IAAI,CAACmB,IAAI,CAACrD,IAAI,KAAK,YAAa;IACxE,IAAIqV,YAAY,EAAE;MAChB,MAAMnL,SAAS,GACbhI,IAAI,CAAClC,IAAI,KAAK,YAAY,GAAGkC,IAAI,CAAC4C,IAAI,GAAI5C,IAAI,CAACmB,IAAI,CAAgByB,IAAI;MACzE,MAAM8D,GAAG,GAAG/D,cAAc,CAACqF,SAAS,EAAE4K,WAAW,CAAC;MAClD,IAAIvM,CAAC,GAAG1L,IAAI,CAAC4D,KAAK,EAAE0O,YAAY,CAAC;MACjC,IAAIjN,IAAI,CAAClC,IAAI,KAAK,mBAAmB,IAAIuI,CAAC,KAAKzI,SAAS,EAAE;QACxD,IAAIqH,6BAA6B,CAACjF,IAAI,CAACsB,KAAK,CAAC,EAAE;UAC7C+E,CAAC,GAAGnB,eAAe,CAAClF,IAAI,CAACsB,KAAK,EAAE0G,SAAS,CAAC;QAC5C,CAAC,MAAM;UACL,MAAM6E,YAAY,GAAG,OAAO9M,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;UAChD+E,CAAC,GAAGzL,QAAQ,CAACiS,YAAY,CAAC;QAC5B;MACF;MACA,IAAI,CAAC+F,WAAW,EAAE;QAChB,OAAO5X,QAAQ,CAAC0L,GAAG,EAAEL,CAAC,CAAC;MACzB;MACA,OAAOxL,2BAA2B,CAAC6L,GAAG,EAAEL,CAAC,CAAC;IAC5C;IAEA,IAAIA,CAAC,GAAG1L,IAAI,CAAC4D,KAAK,EAAE0O,YAAY,CAAC;IACjC,IAAIjN,IAAI,CAAClC,IAAI,KAAK,mBAAmB,IAAIuI,CAAC,KAAKzI,SAAS,EAAE;MACxD,MAAMiP,YAAY,GAAG,OAAO9M,QAAQ,CAACC,IAAI,CAACsB,KAAK,CAAC;MAChD+E,CAAC,GAAGzL,QAAQ,CAACiS,YAAY,CAAC;IAC5B;IACA,OAAO,OAAO3E,qBAAqB,CACjClI,IAAI,CAAClC,IAAI,KAAK,mBAAmB,GAAGkC,IAAI,CAACmB,IAAI,GAAGnB,IAAI,EACpDqG,CAAC,EACDuM,WACF,CAAC;EACH;;EAEA;EACA,SAASC,mBAAmBA,CAC1BjQ,IAAY,EACZrE,KAAc,EACdqU,WAA+B,EACb;IAClB;IACAA,WAAW,CAAEjU,iBAAiB,CAACiE,IAAI,EAAErE,KAAK,CAAC;IAC3C,OAAOlC,gBAAgB,CAACN,KAAK,CAAC;EAChC;EAEA,SAASgF,wBAAwBA,CAC/BqB,IAAwE,EAClE;IACN,IAAIA,IAAI,CAACgR,KAAK,IAAIhR,IAAI,CAACiR,SAAS,EAAE;MAChC,MAAM,IAAIvQ,WAAW,CACnB,GAAGV,IAAI,CAACgR,KAAK,GAAG,OAAO,GAAG,WAAW,0BACvC,CAAC;IACH;IACA,IAAIvV,cAAc,IAAI,CAAEuE,IAAI,CAA6B5B,UAAU,EAAE;MACnE,MAAM,IAAIsC,WAAW,CACnB,qEACF,CAAC;IACH;EACF;EAEA,IAAIjF,cAAc,EAAE;IAClB,OAAOjD,QAAQ,CAAC4X,MAAM,CAACzS,QAAQ,CAAC/C,OAAO,CAAC,CAAC,CAAC;EAC5C;EAEA,CAAAE,sBAAA,GAAAO,KAAK,CAAC4C,cAAc,cAAAnD,sBAAA,eAApBA,sBAAA,CAAAoD,IAAA,CAAA7C,KAAK,EAAkBT,OAAO,CAAC;EAC/B+D,wBAAwB,CAAC/D,OAAO,CAAC;EACjC,MAAM,CAACmR,EAAE,CAAC,GAAGvR,iBAAiB,CAACI,OAAO,CAAC;EACvC;EACAiB,OAAO,CAACS,sBAAsB,CAACyP,EAAE,EAAE,IAAI,CAAC;EACxC,MAAMC,EAAE,GAAGC,yBAAyB,CAACrR,OAAO,EAAEiB,OAAO,CAAC;EACtDA,OAAO,CAACU,iBAAiB,CAACwP,EAAE,EAAEC,EAAE,CAAC;EAEjC,IAAIhR,KAAK,EAAE;IACToB,MAAM,CAACiU,gBAAgB,CAACrE,EAAE,EAAE;MAC1B,CAACxS,aAAa,GAAG;QACf2C,KAAK,EAAE,SAAAA,CAAA,EAAY;UACjB,OAAOkH,iBAAiB,CAAC,CAAC,CAACrH,kBAAkB;QAC/C;MACF,CAAC;MACD,CAAC1C,YAAY,GAAG;QACd6C,KAAK,EAAE,SAAAA,CAAA,EAAY;UACjB,OAAOuB,WAAW;QACpB;MACF;IACF,CAAC,CAAC;EACJ;EAEA,OAAOsO,EAAE;AACX;AAEA,SAASoE,MAAMA,CAACrI,QAA0C,EAAW;EACnE;EACA,OAAO,IAAI,EAAE;IACX,MAAM;MAAEK,IAAI;MAAEjM;IAAM,CAAC,GAAG4L,QAAQ,CAACO,IAAI,CAAC,CAAC;IACvC,IAAIF,IAAI,EAAE;MACR,OAAOjM,KAAK;IACd;EACF;AACF","ignoreList":[]}
|