@slexkit/mcp 0.3.3 → 0.5.0

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/index.js.map CHANGED
@@ -1,11 +1,29 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../../../dist/runtime.js"],
3
+ "sources": ["../src/index.ts", "../../../node_modules/.bun/acorn@8.19.0/node_modules/acorn/dist/acorn.mjs", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/unicode.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/error-codes.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/tokenizer/preprocessor.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/token.js", "../../../node_modules/.bun/entities@6.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js", "../../../node_modules/.bun/entities@6.0.1/node_modules/entities/dist/esm/decode-codepoint.js", "../../../node_modules/.bun/entities@6.0.1/node_modules/entities/dist/esm/decode.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/html.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/tokenizer/index.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/parser/open-element-stack.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/parser/formatting-element-list.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/tree-adapters/default.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/doctype.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/common/foreign-content.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/parser/index.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/serializer/index.js", "../../../node_modules/.bun/parse5@8.0.0/node_modules/parse5/dist/index.js", "../../../src/html/inspect.ts"],
4
4
  "sourcesContent": [
5
- "#!/usr/bin/env node\nimport { createInterface } from \"node:readline\";\nimport { readFile } from \"node:fs/promises\";\n\nimport { parseSlexSource, validateSlexSource } from \"slexkit/runtime\";\n\ntype JsonRpcRequest = {\n jsonrpc?: \"2.0\";\n id?: string | number | null;\n method: string;\n params?: Record<string, unknown>;\n};\n\ntype ToolDefinition = {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n handler: (args: Record<string, unknown>) => Promise<unknown> | unknown;\n};\n\ntype Manifest = {\n version: string;\n pages: Array<{\n id: string;\n group: string;\n title: string;\n summary: string;\n href: string;\n rawHref: string;\n sourcePath: string;\n body: string;\n }>;\n expressionContext: unknown;\n stdlib: unknown;\n capabilities: unknown;\n components: Array<{\n type: string;\n title: string;\n category: string;\n status: string;\n state: string;\n since: string;\n summary: string;\n docsHref: string;\n rawHref: string;\n props: Record<string, unknown>;\n children: unknown;\n examples: Array<{ id: string; title: string; description?: string; source: unknown }>;\n }>;\n};\n\nconst dataBase = new URL(\"./data/\", import.meta.url);\n\nasync function readDataFile(name: string): Promise<string> {\n return readFile(new URL(name, dataBase), \"utf-8\");\n}\n\nconst manifest = JSON.parse(await readDataFile(\"slexkit-ai-manifest.json\")) as Manifest;\n\nfunction stringArg(args: Record<string, unknown>, key: string): string {\n const value = args[key];\n return typeof value === \"string\" ? value : \"\";\n}\n\nfunction optionalStringArg(args: Record<string, unknown>, key: string): string | undefined {\n const value = args[key];\n return typeof value === \"string\" && value ? value : undefined;\n}\n\nfunction booleanArg(args: Record<string, unknown>, key: string): boolean {\n return args[key] === true;\n}\n\nfunction jsonSchema(properties: Record<string, unknown>, required: string[] = []): Record<string, unknown> {\n return {\n type: \"object\",\n properties,\n required,\n additionalProperties: false,\n };\n}\n\nfunction pageMatches(page: Manifest[\"pages\"][number], query: string): boolean {\n const needle = query.toLowerCase();\n return [\n page.id,\n page.group,\n page.title,\n page.summary,\n page.href,\n page.rawHref,\n page.sourcePath,\n page.body,\n ].some((value) => value.toLowerCase().includes(needle));\n}\n\nfunction findPage(args: Record<string, unknown>): Manifest[\"pages\"][number] | undefined {\n const slug = optionalStringArg(args, \"slug\");\n const url = optionalStringArg(args, \"url\");\n if (url) {\n const normalized = url.replace(/^https?:\\/\\/[^/]+/, \"\");\n return manifest.pages.find((page) => page.rawHref === normalized || page.href === normalized || page.rawHref === url || page.href === url);\n }\n if (slug) {\n return manifest.pages.find((page) => page.id === slug || page.id.endsWith(`/${slug}`) || page.rawHref.endsWith(`/${slug}.md`));\n }\n return undefined;\n}\n\nfunction searchPages(args: Record<string, unknown>) {\n const group = optionalStringArg(args, \"group\");\n const query = optionalStringArg(args, \"query\");\n return manifest.pages\n .filter((page) => !group || page.group.toLowerCase() === group.toLowerCase())\n .filter((page) => !query || pageMatches(page, query))\n .map(({ body: _body, ...page }) => page);\n}\n\nfunction sourceFromTemplate(template: string): string {\n if (template === \"calculator\") {\n return `{\n slex: \"0.1\",\n namespace: \"calculator\",\n g: { a: 10, b: 5, samples: [10, 5, 20] },\n layout: {\n \"card:calc\": {\n title: \"Calculator\",\n \"input:a\": { label: \"A\", \"$value\": \"String(g.a)\", onchange: \"g.a = Number($event || 0)\" },\n \"input:b\": { label: \"B\", \"$value\": \"String(g.b)\", onchange: \"g.b = Number($event || 0)\" },\n \"stat:sum\": { label: \"Sum\", \"$value\": \"std.math.round(g.a + g.b, 2)\" },\n \"stat:mean\": { label: \"Mean\", \"$value\": \"std.format.fixed(std.stats.mean(g.samples), 1)\" }\n }\n }\n}`;\n }\n\n if (template === \"stdlib-calculator\") {\n return `{\n slex: \"0.1\",\n namespace: \"stdlib_calculator\",\n g: { done: 7, total: 12, payloadBytes: 1536000, latency: [120, 95, 143, 110] },\n layout: {\n \"card:std\": {\n title: \"Stdlib calculator\",\n \"stat:progress\": { label: \"Progress\", \"$value\": \"std.format.percent(std.math.safeDivide(g.done, g.total), 1)\" },\n \"stat:average\": { label: \"Avg latency\", \"$value\": \"std.format.fixed(std.stats.mean(g.latency), 1)\", unit: \"ms\" },\n \"stat:payload\": { label: \"Payload\", \"$value\": \"std.units.bytes(g.payloadBytes)\" }\n }\n }\n}`;\n }\n\n if (template === \"secure-network-card\") {\n return `{\n slex: \"0.1\",\n namespace: \"secure_network_card\",\n g: {\n status: \"idle\",\n async load() {\n this.status = \"loading\";\n try {\n var result = await api.get(\"https://api.example.com/status\", { credentials: \"omit\" });\n this.status = \"HTTP \" + result.status;\n } catch (error) {\n this.status = api.isPolicyError(error) ? \"blocked by policy\" : api.errorMessage(error);\n }\n }\n },\n layout: {\n \"card:network\": {\n title: \"Secure network card\",\n \"button:load\": { label: \"Load\", onclick: \"g.load()\" },\n \"text:status\": { \"$text\": \"g.status\" }\n }\n }\n}`;\n }\n\n if (template === \"toolhost-form\") {\n return `{\n slex: \"0.1\",\n namespace: \"approval_form\",\n g: { approved: false, reason: \"\" },\n layout: {\n \"card:approval\": {\n title: \"Review request\",\n \"checkbox:approved\": { label: \"Approve\", \"$checked\": \"g.approved\", onchange: \"g.approved = Boolean($event)\" },\n \"input:reason\": { label: \"Reason\", \"$value\": \"g.reason\", onchange: \"g.reason = String($event || '')\" },\n \"submit:actions\": { submitLabel: \"Submit\", ignoreLabel: \"Ignore\", returnKeys: [\"approved\", \"reason\"] }\n }\n }\n}`;\n }\n\n if (template === \"host-integration\") {\n return `import { createSlexKitMarkdownRuntimeHost } from \"slexkit\";\nimport \"slexkit/style.css\";\n\nconst runtime = createSlexKitMarkdownRuntimeHost({\n mode: \"secure\",\n secureFrame: { runtimeUrl: \"/runtime.js\" }\n});\n\nruntime.mountBlock({\n artifactId: \"message-1\",\n blockId: \"message-1:block-1\",\n source,\n container\n});`;\n }\n\n return `{\n slex: \"0.1\",\n namespace: \"status\",\n g: { done: 3, total: 4 },\n layout: {\n \"card:summary\": {\n title: \"Status\",\n \"text:count\": { \"$text\": \"g.done + '/' + g.total + ' complete'\" },\n \"progress:bar\": { \"$value\": \"g.done / g.total * 100\" }\n }\n }\n}`;\n}\n\nconst tools: ToolDefinition[] = [\n {\n name: \"slexkitDocs\",\n description: \"Search or fetch SlexKit Markdown docs. Raw docs are .md files with explicit slex fences; no .mdx routes are used.\",\n inputSchema: jsonSchema({\n query: { type: \"string\", description: \"Search text. Searches titles, summaries, URLs, source paths, and body text.\" },\n group: { type: \"string\", description: \"Optional group filter: Guides, Components, Runtime, ToolHost, Security, Packages, Icons.\" },\n slug: { type: \"string\", description: \"Optional page id or slug to fetch, such as components/card or card.\" },\n url: { type: \"string\", description: \"Optional href or raw .md URL to fetch.\" },\n includeCapabilities: { type: \"boolean\", description: \"When true, include expression context, stdlib, and api capability summaries.\" },\n }),\n handler(args) {\n const capabilities = booleanArg(args, \"includeCapabilities\")\n ? {\n expressionContext: manifest.expressionContext,\n stdlib: manifest.stdlib,\n capabilities: manifest.capabilities,\n }\n : undefined;\n const page = findPage(args);\n if (page) return { version: manifest.version, page, capabilities };\n return { version: manifest.version, pages: searchPages(args), capabilities };\n },\n },\n {\n name: \"slexkitExamples\",\n description: \"Browse SlexKit component examples, ToolHost examples, and host integration snippets.\",\n inputSchema: jsonSchema({\n type: { type: \"string\", description: \"Optional component type, such as card, input, stat, or submit.\" },\n template: { type: \"string\", enum: [\"status\", \"calculator\", \"stdlib-calculator\", \"secure-network-card\", \"toolhost-form\", \"host-integration\"], description: \"Optional generated example template.\" },\n }),\n handler(args) {\n const template = optionalStringArg(args, \"template\");\n if (template) {\n const source = sourceFromTemplate(template);\n const parsed = template === \"host-integration\" ? { ok: true } : parseSlexSource(source);\n return { template, source, valid: parsed.ok };\n }\n\n const type = optionalStringArg(args, \"type\");\n const components = manifest.components.filter((component) => !type || component.type === type);\n if (type && components.length === 0) {\n return { error: \"component_not_found\", type, available: manifest.components.map((component) => component.type) };\n }\n return {\n components: components.map((component) => ({\n type: component.type,\n title: component.title,\n summary: component.summary,\n rawHref: component.rawHref,\n examples: component.examples.map((example) => ({\n id: example.id,\n title: example.title,\n description: example.description,\n source: JSON.stringify(example.source, null, 2),\n })),\n })),\n };\n },\n },\n {\n name: \"slexkitValidate\",\n description: \"Parse Slex source and return diagnostics plus component usage.\",\n inputSchema: jsonSchema({ source: { type: \"string\", description: \"Slex object literal source.\" } }, [\"source\"]),\n handler(args) {\n const source = stringArg(args, \"source\");\n const validation = validateSlexSource(source, { mode: \"secure\" });\n if (!validation.ok) return validation;\n const { value: _value, ...result } = validation;\n return result;\n },\n },\n];\n\nconst toolByName = new Map(tools.map((tool) => [tool.name, tool]));\n\nfunction send(message: unknown): void {\n process.stdout.write(`${JSON.stringify(message)}\\n`);\n}\n\nfunction respond(id: JsonRpcRequest[\"id\"], result: unknown): void {\n send({ jsonrpc: \"2.0\", id, result });\n}\n\nfunction respondError(id: JsonRpcRequest[\"id\"], code: number, message: string, data?: unknown): void {\n send({ jsonrpc: \"2.0\", id, error: { code, message, data } });\n}\n\nasync function handleRequest(request: JsonRpcRequest): Promise<void> {\n if (request.id === undefined && request.method.startsWith(\"notifications/\")) return;\n\n if (request.method === \"initialize\") {\n respond(request.id, {\n protocolVersion: \"2025-06-18\",\n capabilities: { tools: {} },\n serverInfo: { name: \"@slexkit/mcp\", version: manifest.version },\n });\n return;\n }\n\n if (request.method === \"tools/list\") {\n respond(request.id, {\n tools: tools.map(({ name, description, inputSchema }) => ({ name, description, inputSchema })),\n });\n return;\n }\n\n if (request.method === \"tools/call\") {\n const params = request.params ?? {};\n const name = typeof params.name === \"string\" ? params.name : \"\";\n const args = params.arguments && typeof params.arguments === \"object\" ? params.arguments as Record<string, unknown> : {};\n const tool = toolByName.get(name);\n if (!tool) {\n respondError(request.id, -32602, `Unknown tool: ${name}`, { available: [...toolByName.keys()] });\n return;\n }\n const result = await tool.handler(args);\n respond(request.id, {\n content: [{ type: \"text\", text: typeof result === \"string\" ? result : JSON.stringify(result, null, 2) }],\n structuredContent: result,\n });\n return;\n }\n\n respondError(request.id, -32601, `Method not found: ${request.method}`);\n}\n\nconst rl = createInterface({ input: process.stdin, crlfDelay: Infinity });\nrl.on(\"line\", (line) => {\n const trimmed = line.trim();\n if (!trimmed) return;\n void (async () => {\n try {\n await handleRequest(JSON.parse(trimmed) as JsonRpcRequest);\n } catch (error) {\n respondError(null, -32700, error instanceof Error ? error.message : String(error));\n }\n })();\n});\n",
6
- "// src/engine/reactive.ts\nvar ITERATE_KEY = Symbol(\"iterate\");\nvar REVISION_KEY = Symbol(\"revision\");\nvar activeEffect = null;\nvar activeScope = null;\nvar batchDepth = 0;\nvar pendingEffects = new Set;\nvar targetDeps = new WeakMap;\nvar proxyCache = new WeakMap;\nvar rawTargets = new WeakMap;\nvar rootTargets = new WeakMap;\n\nclass ReactiveScope {\n cleanups = [];\n effects = new Set;\n disposed = false;\n dispose() {\n if (this.disposed)\n return;\n this.disposed = true;\n for (const effect of Array.from(this.effects))\n effect.stop();\n this.effects.clear();\n for (let i = this.cleanups.length - 1;i >= 0; i -= 1) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n }\n}\n\nclass ReactiveEffect {\n fn;\n scope;\n deps = [];\n cleanups = [];\n stopped = false;\n running = false;\n constructor(fn, scope) {\n this.fn = fn;\n this.scope = scope;\n if (scope)\n scope.effects.add(this);\n }\n run() {\n if (this.stopped || this.running)\n return;\n this.running = true;\n this.cleanupDeps();\n this.runCleanups();\n const previousEffect = activeEffect;\n const previousScope = activeScope;\n activeEffect = this;\n if (this.scope)\n activeScope = this.scope;\n try {\n this.fn();\n } finally {\n activeEffect = previousEffect;\n activeScope = previousScope;\n this.running = false;\n }\n }\n stop() {\n if (this.stopped)\n return;\n this.stopped = true;\n this.cleanupDeps();\n this.runCleanups();\n this.scope?.effects.delete(this);\n }\n cleanupDeps() {\n for (const dep of this.deps)\n dep.delete(this);\n this.deps.length = 0;\n }\n runCleanups() {\n for (let i = this.cleanups.length - 1;i >= 0; i -= 1) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n }\n}\nfunction getDep(target, key) {\n let deps = targetDeps.get(target);\n if (!deps) {\n deps = new Map;\n targetDeps.set(target, deps);\n }\n let dep = deps.get(key);\n if (!dep) {\n dep = new Set;\n deps.set(key, dep);\n }\n return dep;\n}\nfunction track(target, key) {\n if (!activeEffect)\n return;\n const dep = getDep(target, key);\n if (dep.has(activeEffect))\n return;\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n}\nfunction trigger(target, key) {\n const deps = targetDeps.get(target);\n if (!deps)\n return;\n const effects = new Set;\n const add = (dep) => {\n if (!dep)\n return;\n for (const effect of dep)\n effects.add(effect);\n };\n add(deps.get(key));\n if (key !== REVISION_KEY)\n add(deps.get(ITERATE_KEY));\n for (const effect of effects)\n schedule(effect);\n}\nfunction schedule(effect) {\n if (effect.stopped)\n return;\n if (batchDepth > 0) {\n pendingEffects.add(effect);\n return;\n }\n effect.run();\n}\nfunction flush() {\n while (pendingEffects.size > 0) {\n const effects = Array.from(pendingEffects);\n pendingEffects.clear();\n for (const effect of effects)\n effect.run();\n }\n}\nfunction notifyRoot(target) {\n const root = rootTargets.get(target) ?? target;\n trigger(root, REVISION_KEY);\n}\nfunction toReactive(value, root) {\n const cached = proxyCache.get(value);\n if (cached)\n return cached;\n const proxy = new Proxy(value, {\n get(target, key, receiver) {\n if (key === \"__slexkitRaw\")\n return target;\n if (key === \"__slexkitRoot\")\n return root;\n track(target, key);\n const result = Reflect.get(target, key, receiver);\n if (result && typeof result === \"object\") {\n return toReactive(result, root);\n }\n return result;\n },\n set(target, key, next, receiver) {\n const previous = Reflect.get(target, key, receiver);\n const hadKey = Object.prototype.hasOwnProperty.call(target, key);\n const ok = Reflect.set(target, key, next, receiver);\n if (ok && (!Object.is(previous, next) || !hadKey)) {\n trigger(target, key);\n if (!hadKey)\n trigger(target, ITERATE_KEY);\n notifyRoot(target);\n }\n return ok;\n },\n deleteProperty(target, key) {\n const hadKey = Object.prototype.hasOwnProperty.call(target, key);\n const ok = Reflect.deleteProperty(target, key);\n if (ok && hadKey) {\n trigger(target, key);\n trigger(target, ITERATE_KEY);\n notifyRoot(target);\n }\n return ok;\n },\n ownKeys(target) {\n track(target, ITERATE_KEY);\n return Reflect.ownKeys(target);\n }\n });\n proxyCache.set(value, proxy);\n rawTargets.set(proxy, value);\n rootTargets.set(value, root);\n rootTargets.set(proxy, root);\n return proxy;\n}\nfunction createReactiveState(value) {\n return toReactive(value, value);\n}\nfunction asReactiveValue(value, owner) {\n if (!value || typeof value !== \"object\")\n return value;\n if (rawTargets.has(value) || rootTargets.has(value))\n return value;\n if (!owner || typeof owner !== \"object\")\n return value;\n const root = rootTargets.get(owner) ?? rawTargets.get(owner);\n if (!root)\n return value;\n return toReactive(value, root);\n}\nfunction trackReactiveValue(value) {\n if (!value || typeof value !== \"object\")\n return;\n const root = rootTargets.get(value) ?? rawTargets.get(value);\n if (root)\n track(root, REVISION_KEY);\n}\nfunction createRoot(fn) {\n const scope = new ReactiveScope;\n const previousScope = activeScope;\n const previousEffect = activeEffect;\n activeScope = scope;\n activeEffect = null;\n try {\n return fn(() => scope.dispose());\n } finally {\n activeEffect = previousEffect;\n activeScope = previousScope;\n }\n}\nfunction createEffect(fn) {\n const effect = new ReactiveEffect(fn, activeScope);\n effect.run();\n return () => effect.stop();\n}\nfunction createMemo(fn) {\n const source = {};\n let value;\n createEffect(() => {\n value = fn();\n trigger(source, \"value\");\n });\n return () => {\n track(source, \"value\");\n return value;\n };\n}\nfunction createSignal(initial) {\n const source = {};\n let value = initial;\n return [\n () => {\n track(source, \"value\");\n return value;\n },\n (next) => {\n if (Object.is(value, next))\n return;\n value = next;\n trigger(source, \"value\");\n }\n ];\n}\nfunction onCleanup(cleanup) {\n if (activeEffect) {\n activeEffect.cleanups.push(cleanup);\n return;\n }\n if (activeScope) {\n activeScope.cleanups.push(cleanup);\n }\n}\nfunction batch(fn) {\n batchDepth += 1;\n try {\n return fn();\n } finally {\n batchDepth -= 1;\n if (batchDepth === 0)\n flush();\n }\n}\n\n// src/engine/store.ts\nvar _stores = new Map;\nfunction getStore(ns) {\n if (!_stores.has(ns)) {\n _stores.set(ns, {\n g: createReactiveState({}),\n components: createReactiveState({}),\n componentTypes: createReactiveState({}),\n layouts: [],\n roots: new Map,\n cleanups: new Map\n });\n }\n return _stores.get(ns);\n}\nfunction peekStore(ns) {\n return _stores.get(ns);\n}\nfunction deleteStore(ns) {\n return _stores.delete(ns);\n}\n\n// src/engine/merge.ts\nfunction deepMerge(target, source) {\n for (const key in source) {\n if (!Object.prototype.hasOwnProperty.call(source, key))\n continue;\n const srcVal = source[key];\n if (typeof srcVal === \"function\") {\n target[key] = srcVal;\n } else if (srcVal !== null && typeof srcVal === \"object\" && !Array.isArray(srcVal)) {\n if (!(key in target) || typeof target[key] !== \"object\") {\n target[key] = {};\n }\n deepMerge(target[key], srcVal);\n } else {\n target[key] = srcVal;\n }\n }\n return target;\n}\n\n// src/engine/registry.ts\nvar _registry = new Map;\nfunction register(type, renderFn, options = {}) {\n _registry.set(type, {\n renderFn,\n options: {\n state: options.state ?? \"none\"\n }\n });\n}\nfunction getRenderer(type) {\n return _registry.get(type)?.renderFn;\n}\nfunction getComponentStateMode(type) {\n return _registry.get(type)?.options.state ?? \"none\";\n}\n\n// src/engine/eval.ts\nvar lastValues = new Map;\nvar SKIP_EAGER_TRACK = Symbol.for(\"slexkit.skipEagerTrack\");\nvar EAGER_TRACK_TARGET = Symbol.for(\"slexkit.eagerTrackTarget\");\nfunction clearEvalCache(ns) {\n const prefix = `${ns}:`;\n for (const key of Array.from(lastValues.keys())) {\n if (key.startsWith(prefix))\n lastValues.delete(key);\n }\n}\nfunction evalRead(expr, context, ns, path) {\n try {\n for (const value of Object.values(context)) {\n if (value && (typeof value === \"object\" || typeof value === \"function\") && value[SKIP_EAGER_TRACK]) {\n continue;\n }\n const target = value && (typeof value === \"object\" || typeof value === \"function\") ? value[EAGER_TRACK_TARGET] ?? value : value;\n trackReactiveValue(target);\n }\n const revision = context.$revision;\n if (typeof revision === \"function\")\n revision();\n const keys = Object.keys(context);\n const vals = Object.values(context);\n const fn = new Function(...keys, `\"use strict\"; return (${expr});`);\n const result = fn(...vals);\n if (path !== undefined)\n lastValues.set(`${ns ?? \"?\"}:${path}:${expr}`, result);\n return result;\n } catch (e) {\n const cacheKey = path !== undefined ? `${ns ?? \"?\"}:${path}:${expr}` : expr;\n const last = lastValues.get(cacheKey);\n console.warn(`[SlexKit][${ns || \"?\"}] $eval error at ${path || \"?\"}:`, expr, e.message);\n if (last !== undefined)\n return last;\n return;\n }\n}\nfunction execWrite(stmt, context, ns, path) {\n try {\n const keys = Object.keys(context);\n const vals = Object.values(context);\n const fn = new Function(...keys, `\"use strict\"; { ${stmt} }`);\n batch(() => fn(...vals));\n } catch (e) {\n console.warn(`[SlexKit][${ns || \"?\"}] @exec error at ${path || \"?\"}:`, stmt, e.message);\n }\n}\n\n// src/engine/component-scope.ts\nvar componentDisposers = new WeakMap;\nvar flushDom;\nfunction configureComponentScope(options) {\n flushDom = options.flush;\n}\nfunction createComponentAccessor(read) {\n const subscribers = new Set;\n let current = read();\n let stopEffect;\n const start = () => {\n if (stopEffect)\n return;\n stopEffect = createEffect(() => {\n current = read();\n for (const subscriber of Array.from(subscribers))\n subscriber(current);\n flushDom?.();\n });\n };\n const accessor = () => current;\n accessor.subscribe = (run) => {\n const wasIdle = subscribers.size === 0;\n subscribers.add(run);\n if (wasIdle)\n start();\n else\n run(current);\n return () => {\n subscribers.delete(run);\n if (subscribers.size === 0) {\n stopEffect?.();\n stopEffect = undefined;\n }\n };\n };\n return accessor;\n}\nfunction renderComponent(render) {\n return render() ?? null;\n}\nfunction attachComponentDisposer(el, dispose) {\n componentDisposers.set(el, dispose);\n}\nfunction disposeComponent(el) {\n const dispose = componentDisposers.get(el);\n if (!dispose)\n return;\n componentDisposers.delete(el);\n dispose();\n}\n\n// src/engine/engineering.ts\nvar NUMBER_RE = /^[+-]?(?:(?:\\d+(?:\\.\\d*)?)|(?:\\.\\d+))(?:[eE][+-]?\\d+)?/;\nvar PREFIX_FACTORS = {\n p: 0.000000000001,\n n: 0.000000001,\n u: 0.000001,\n \"µ\": 0.000001,\n m: 0.001,\n k: 1000,\n K: 1000,\n M: 1e6,\n meg: 1e6,\n G: 1e9,\n T: 1000000000000\n};\nvar PREFIXES = [\"meg\", \"p\", \"n\", \"u\", \"µ\", \"m\", \"k\", \"K\", \"M\", \"G\", \"T\"];\nfunction invalid(raw, error) {\n return {\n raw,\n number: null,\n valid: false,\n prefix: \"\",\n unit: \"\",\n normalized: \"\",\n error\n };\n}\nfunction parseSuffix(suffix) {\n const compact = suffix.trim();\n if (!compact)\n return { prefix: \"\", unit: \"\" };\n for (const prefix of PREFIXES) {\n if (prefix === \"meg\") {\n if (compact.toLowerCase().startsWith(\"meg\")) {\n return { prefix: \"meg\", unit: compact.slice(3).trim() };\n }\n continue;\n }\n if (compact.startsWith(prefix)) {\n return { prefix, unit: compact.slice(prefix.length).trim() };\n }\n }\n return { prefix: \"\", unit: compact };\n}\nfunction parseEngineeringNumber(input) {\n const raw = input == null ? \"\" : String(input);\n const source = raw.trim();\n if (!source) {\n return {\n raw,\n number: null,\n valid: false,\n prefix: \"\",\n unit: \"\",\n normalized: \"\",\n error: \"empty\"\n };\n }\n const numberMatch = source.match(NUMBER_RE);\n if (!numberMatch)\n return invalid(raw, \"invalid_number\");\n const numberText = numberMatch[0];\n const rest = source.slice(numberText.length).trim();\n const base = Number(numberText);\n if (!Number.isFinite(base))\n return invalid(raw, \"invalid_number\");\n const { prefix, unit } = parseSuffix(rest);\n const multiplier = prefix ? PREFIX_FACTORS[prefix] : 1;\n if (!Number.isFinite(multiplier))\n return invalid(raw, \"invalid_prefix\");\n const number = base * multiplier;\n if (!Number.isFinite(number))\n return invalid(raw, \"out_of_range\");\n return {\n raw,\n number,\n valid: true,\n prefix,\n unit,\n normalized: `${number}${unit ? ` ${unit}` : \"\"}`\n };\n}\nfunction isEngineeringNumberResult(value) {\n return !!value && typeof value === \"object\" && \"raw\" in value && \"number\" in value && \"valid\" in value && \"prefix\" in value && \"unit\" in value && \"normalized\" in value;\n}\n\n// src/engine/stdlib.ts\nfunction toNumber(value) {\n return Number(value);\n}\nfunction finiteNumber(value, fallback = 0) {\n const parsed = toNumber(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\nfunction digits(value, fallback) {\n const parsed = Math.trunc(finiteNumber(value, fallback));\n return Math.max(0, Math.min(20, parsed));\n}\nfunction finiteValues(values) {\n if (!Array.isArray(values))\n return [];\n return values.map(toNumber).filter(Number.isFinite);\n}\nfunction formatFixed(value, digitCount = 2) {\n const parsed = toNumber(value);\n return Number.isFinite(parsed) ? parsed.toFixed(digitCount) : \"NaN\";\n}\nfunction locale(value) {\n return typeof value === \"string\" && value.trim() ? value : \"en-US\";\n}\nfunction currencyCode(value) {\n return typeof value === \"string\" && /^[A-Za-z]{3}$/.test(value) ? value.toUpperCase() : \"USD\";\n}\nfunction formatNumber(value, digitCount, localeName, notation, style, currency, minimumFractionDigits = 0) {\n const parsed = toNumber(value);\n if (!Number.isFinite(parsed))\n return \"NaN\";\n return new Intl.NumberFormat(localeName, {\n maximumFractionDigits: digitCount,\n minimumFractionDigits,\n notation,\n style,\n currency\n }).format(parsed);\n}\nfunction freezeDeep(value) {\n for (const child of Object.values(value)) {\n if (child && typeof child === \"object\")\n freezeDeep(child);\n }\n return Object.freeze(value);\n}\nvar slexkitStd = freezeDeep({\n math: {\n clamp(value, min, max) {\n const lower = finiteNumber(min);\n const upper = finiteNumber(max);\n const parsed = finiteNumber(value);\n return Math.min(Math.max(parsed, Math.min(lower, upper)), Math.max(lower, upper));\n },\n round(value, digitValue = 0) {\n const factor = 10 ** digits(digitValue, 0);\n return Math.round(finiteNumber(value) * factor) / factor;\n },\n safeDivide(numerator, denominator, fallback = 0) {\n const divisor = toNumber(denominator);\n if (!Number.isFinite(divisor) || divisor === 0)\n return finiteNumber(fallback);\n const quotient = toNumber(numerator) / divisor;\n return Number.isFinite(quotient) ? quotient : finiteNumber(fallback);\n },\n percent(part, total, digitValue = 1) {\n const ratio = slexkitStd.math.safeDivide(part, total, NaN) * 100;\n return slexkitStd.math.round(ratio, digitValue);\n },\n lerp(start, end, t) {\n const a = finiteNumber(start);\n return a + (finiteNumber(end) - a) * finiteNumber(t);\n }\n },\n stats: {\n sum(values) {\n return finiteValues(values).reduce((total, value) => total + value, 0);\n },\n mean(values) {\n const numbers = finiteValues(values);\n return numbers.length ? slexkitStd.stats.sum(numbers) / numbers.length : NaN;\n },\n min(values) {\n const numbers = finiteValues(values);\n return numbers.length ? Math.min(...numbers) : NaN;\n },\n max(values) {\n const numbers = finiteValues(values);\n return numbers.length ? Math.max(...numbers) : NaN;\n },\n median(values) {\n const numbers = finiteValues(values).sort((a, b) => a - b);\n if (!numbers.length)\n return NaN;\n const middle = Math.floor(numbers.length / 2);\n return numbers.length % 2 ? numbers[middle] : (numbers[middle - 1] + numbers[middle]) / 2;\n }\n },\n format: {\n fixed(value, digitValue = 2) {\n return formatFixed(value, digits(digitValue, 2));\n },\n number(value, digitValue = 0, localeName = \"en-US\") {\n return formatNumber(value, digits(digitValue, 0), locale(localeName));\n },\n compact(value, digitValue = 1, localeName = \"en-US\") {\n return formatNumber(value, digits(digitValue, 1), locale(localeName), \"compact\");\n },\n percent(ratio, digitValue = 1) {\n return `${formatFixed(finiteNumber(ratio) * 100, digits(digitValue, 1))}%`;\n },\n currency(value, currency = \"USD\", localeName = \"en-US\") {\n return formatNumber(value, 2, locale(localeName), undefined, \"currency\", currencyCode(currency), 2);\n }\n },\n units: {\n withUnit(value, unit, digitValue = 2) {\n const suffix = typeof unit === \"string\" ? unit : String(unit ?? \"\");\n return `${formatFixed(value, digits(digitValue, 2))}${suffix ? ` ${suffix}` : \"\"}`;\n },\n bytes(value, digitValue = 1) {\n const units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n let amount = Math.abs(finiteNumber(value));\n let index = 0;\n while (amount >= 1024 && index < units.length - 1) {\n amount /= 1024;\n index += 1;\n }\n const sign = finiteNumber(value) < 0 ? -1 : 1;\n return `${formatFixed(amount * sign, digits(digitValue, 1))} ${units[index]}`;\n },\n duration(ms, digitValue = 1) {\n const value = finiteNumber(ms);\n const abs = Math.abs(value);\n if (abs < 1000)\n return `${formatFixed(value, 0)} ms`;\n if (abs < 60000)\n return `${formatFixed(value / 1000, digits(digitValue, 1))} s`;\n if (abs < 3600000)\n return `${formatFixed(value / 60000, digits(digitValue, 1))} min`;\n return `${formatFixed(value / 3600000, digits(digitValue, 1))} h`;\n },\n si(value, unit = \"\", digitValue = 2) {\n const units = [\"\", \"k\", \"M\", \"G\", \"T\", \"P\"];\n let amount = Math.abs(finiteNumber(value));\n let index = 0;\n while (amount >= 1000 && index < units.length - 1) {\n amount /= 1000;\n index += 1;\n }\n const sign = finiteNumber(value) < 0 ? -1 : 1;\n const suffix = typeof unit === \"string\" ? unit : String(unit ?? \"\");\n return `${formatFixed(amount * sign, digits(digitValue, 2))} ${units[index]}${suffix}`.trim();\n }\n }\n});\n\n// src/engine/component-state.ts\nvar IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\nvar componentStateProxies = new WeakMap;\nfunction isReadableValue(value) {\n return !!value && (typeof value === \"object\" || typeof value === \"function\") && typeof value.subscribe === \"function\";\n}\nfunction rawRecord(value) {\n return value.__slexkitRaw ?? value;\n}\nfunction componentPropName(key) {\n return key.startsWith(\"$\") ? key.slice(1) : key;\n}\nfunction isEventProp(key, value) {\n return key.startsWith(\"on\") && typeof value === \"function\";\n}\nfunction isWritableComponent(type) {\n const mode = getComponentStateMode(type);\n return mode === \"value\" || mode === \"checked\" || mode === \"enabled\";\n}\nfunction isReadableComponent(type) {\n return getComponentStateMode(type) === \"readable\";\n}\nfunction isStatefulComponent(type) {\n return getComponentStateMode(type) !== \"none\";\n}\nfunction isInputStateProp(type, propName) {\n const mode = getComponentStateMode(type);\n if (mode === \"value\")\n return propName === \"value\";\n if (mode === \"checked\")\n return propName === \"value\" || propName === \"checked\";\n if (mode === \"enabled\")\n return propName === \"enabled\";\n return false;\n}\nfunction assignEngineeringState(state, value) {\n const result = isEngineeringNumberResult(value) ? value : parseEngineeringNumber(value);\n state.value = result.raw;\n state.number = result.number;\n state.valid = result.valid;\n state.prefix = result.prefix;\n state.unit = result.unit;\n state.normalized = result.normalized;\n if (result.error)\n state.error = result.error;\n else\n delete state.error;\n}\nfunction clearEngineeringState(state) {\n delete state.number;\n delete state.valid;\n delete state.prefix;\n delete state.unit;\n delete state.normalized;\n delete state.error;\n}\nfunction assignInputType(state, inputType) {\n const previousType = state.type;\n state.type = inputType;\n if (inputType === \"engineering\" && \"value\" in state) {\n assignEngineeringState(state, state.value);\n } else if (previousType === \"engineering\" && inputType !== \"engineering\") {\n clearEngineeringState(state);\n }\n}\nfunction assignComponentProp(state, type, propName, value, force) {\n if (!force && propName in state)\n return;\n if (type === \"input\" && propName === \"value\" && state.type === \"engineering\") {\n assignEngineeringState(state, value);\n return;\n }\n if (getComponentStateMode(type) === \"checked\" && (propName === \"checked\" || propName === \"value\")) {\n const checked = !!value;\n state.checked = checked;\n state.value = checked;\n return;\n }\n if (getComponentStateMode(type) === \"enabled\" && propName === \"enabled\") {\n state.enabled = !!value;\n return;\n }\n state[propName] = value;\n}\nfunction publicComponentState(name, state, componentTypes) {\n let cached = componentStateProxies.get(state);\n if (!cached) {\n cached = new Proxy(state, {\n get(target, key, receiver) {\n if (key === SKIP_EAGER_TRACK)\n return true;\n return Reflect.get(target, key, receiver);\n },\n set(target, key, value, receiver) {\n const currentType = componentTypes[name] ?? \"\";\n if (isWritableComponent(currentType)) {\n if (typeof key === \"string\") {\n assignComponentProp(target, currentType, key, value, true);\n return true;\n }\n return Reflect.set(target, key, value, receiver);\n }\n console.warn(`[SlexKit] Component state '${name}' is read-only. Use dynamic $ props to update output components.`);\n return true;\n },\n deleteProperty(target, key) {\n if (isWritableComponent(componentTypes[name] ?? \"\")) {\n return Reflect.deleteProperty(target, key);\n }\n console.warn(`[SlexKit] Component state '${name}' is read-only. Use dynamic $ props to update output components.`);\n return true;\n }\n });\n componentStateProxies.set(state, cached);\n }\n return cached;\n}\nfunction createGProxy(g, components, componentTypes) {\n return new Proxy(g, {\n get(target, key, receiver) {\n if (key === EAGER_TRACK_TARGET)\n return target;\n if (typeof key === \"string\" && !(key in target) && key in components) {\n return publicComponentState(key, components[key], componentTypes);\n }\n return Reflect.get(target, key, receiver);\n },\n set(target, key, value, receiver) {\n return Reflect.set(target, key, value, receiver);\n },\n has(target, key) {\n return key in target || key in components;\n }\n });\n}\nfunction ensureComponentState(name, type, components, componentTypes) {\n if (!components[name])\n components[name] = {};\n const previousType = componentTypes[name] ?? \"\";\n if (!(isWritableComponent(previousType) && isReadableComponent(type))) {\n componentTypes[name] = type;\n }\n return components[name];\n}\nfunction syncReadableComponentProp(type, state, propName, value) {\n if (isWritableComponent(type)) {\n const unsubscribe2 = value.subscribe((next) => {\n assignComponentProp(state, type, propName, next, true);\n });\n onCleanup(unsubscribe2);\n return;\n }\n let unsubscribe;\n let cancelled = false;\n queueMicrotask(() => {\n if (cancelled)\n return;\n unsubscribe = value.subscribe((next) => {\n assignComponentProp(state, type, propName, next, true);\n });\n });\n onCleanup(() => {\n cancelled = true;\n unsubscribe?.();\n });\n}\nfunction syncComponentProps(type, name, props, components, componentTypes) {\n if (!name || !isStatefulComponent(type))\n return;\n const previousType = componentTypes[name] ?? \"\";\n if (isWritableComponent(previousType) && isReadableComponent(type))\n return;\n const state = ensureComponentState(name, type, components, componentTypes);\n if (type === \"input\" && typeof props.type === \"string\") {\n assignInputType(state, props.type);\n }\n for (const [key, value] of Object.entries(props)) {\n if (isEventProp(key, value))\n continue;\n const propName = componentPropName(key);\n const inputStateProp = isInputStateProp(type, propName);\n if (isReadableValue(value)) {\n syncReadableComponentProp(type, state, propName, value);\n } else {\n assignComponentProp(state, type, propName, value, !inputStateProp);\n }\n }\n return state;\n}\nfunction bindInputStateProps(type, state, props) {\n if (!state)\n return;\n const mode = getComponentStateMode(type);\n if (mode === \"value\") {\n props.value = createComponentAccessor(() => state.value);\n } else if (mode === \"checked\") {\n const checked = createComponentAccessor(() => !!(state.checked ?? state.value));\n props.checked = checked;\n props.value = checked;\n } else if (mode === \"enabled\") {\n props.enabled = createComponentAccessor(() => !!state.enabled);\n }\n}\nfunction applyComponentEventState(type, name, data, components, componentTypes) {\n if (!name || !isWritableComponent(type))\n return;\n const state = ensureComponentState(name, type, components, componentTypes);\n const mode = getComponentStateMode(type);\n if (mode === \"checked\") {\n const checked = !!data;\n state.checked = checked;\n state.value = checked;\n } else if (mode === \"enabled\") {\n state.enabled = !!data;\n } else if (type === \"input\" && state.type === \"engineering\") {\n assignEngineeringState(state, data);\n } else {\n state.value = data;\n }\n}\nfunction seedStaticComponentState(type, state, props) {\n if (type === \"input\" && typeof props.type === \"string\") {\n assignInputType(state, props.type);\n }\n for (const [key, value] of Object.entries(props)) {\n if (key.startsWith(\"$\") || isEventProp(key, value))\n continue;\n const propName = componentPropName(key);\n if (isInputStateProp(type, propName)) {\n assignComponentProp(state, type, propName, value, false);\n }\n }\n}\nfunction warnDuplicateState(ns, name, currentType, currentPath, previous) {\n console.warn(`[SlexKit][${ns}] Component state '${name}' is declared more than once at ${previous.path} and ${currentPath}; state is shared by namespace and component name.`);\n if (previous.type !== currentType) {\n console.warn(`[SlexKit][${ns}] Component state '${name}' is used by multiple component types (${previous.type}, ${currentType}); use distinct names when components should not share state.`);\n }\n}\nfunction dynamicStateBinding(type, props) {\n const mode = getComponentStateMode(type);\n const value = mode === \"checked\" ? props.$checked ?? props.$value : mode === \"enabled\" ? props.$enabled : props.$value;\n return typeof value === \"string\" ? value.trim() : undefined;\n}\nfunction isMirroredValueControlPair(previousType, currentType) {\n return previousType === \"input\" && currentType === \"slider\" || previousType === \"slider\" && currentType === \"input\";\n}\nfunction shouldWarnDuplicateState(currentType, currentBinding, previous) {\n if (isReadableComponent(previous.type) && isReadableComponent(currentType)) {\n return false;\n }\n if (currentBinding && previous.stateBinding === currentBinding && isMirroredValueControlPair(previous.type, currentType)) {\n return false;\n }\n return true;\n}\nfunction warnForState(ns, name, path) {\n console.warn(`[SlexKit][${ns}] Component state '${name}' is used with $for at ${path}; repeated items share one namespace-level instance state.`);\n}\nfunction prepareComponentStatesInner(layout, components, componentTypes, ns, seen, parentPath = \"\") {\n if (!layout || typeof layout !== \"object\")\n return;\n for (const [key, val] of Object.entries(layout)) {\n if (!key.includes(\":\") || typeof val !== \"object\" || val === null)\n continue;\n const [type, name] = key.split(\":\");\n const props = val;\n const path = parentPath ? `${parentPath}.${key}` : key;\n if (name && isStatefulComponent(type)) {\n const stateBinding = dynamicStateBinding(type, props);\n const previous = seen.get(name);\n if (previous) {\n if (shouldWarnDuplicateState(type, stateBinding, previous)) {\n warnDuplicateState(ns, name, type, path, previous);\n }\n } else {\n seen.set(name, { type, path, stateBinding });\n }\n if (props.$for && isWritableComponent(type))\n warnForState(ns, name, path);\n const state = ensureComponentState(name, type, components, componentTypes);\n seedStaticComponentState(type, state, props);\n }\n prepareComponentStatesInner(props, components, componentTypes, ns, seen, path);\n }\n}\nfunction prepareComponentStates(layout, components, componentTypes, ns) {\n prepareComponentStatesInner(layout, components, componentTypes, ns, new Map);\n}\nfunction buildComponentEvalContext(g, components, componentTypes, api, forCtx) {\n const ctx = {\n g: createGProxy(g, components, componentTypes),\n std: slexkitStd\n };\n const gKeys = new Set(Object.keys(rawRecord(g)));\n for (const name of Object.keys(rawRecord(components))) {\n if (name === \"std\" || name === \"g\" || name === \"api\")\n continue;\n if (IDENTIFIER.test(name) && !gKeys.has(name)) {\n ctx[name] = publicComponentState(name, components[name], componentTypes);\n }\n }\n if (api)\n ctx.api = api;\n if (forCtx) {\n for (const k of Object.keys(forCtx)) {\n if (k === \"std\")\n continue;\n Object.defineProperty(ctx, k, {\n get: () => {\n const current = forCtx[k];\n return k === \"$index\" && typeof current === \"function\" ? current() : current;\n },\n enumerable: true\n });\n }\n }\n return ctx;\n}\n\n// src/engine/renderer.ts\nvar FALLBACK_CSS = \"background:var(--muted);border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);padding:0.5rem;text-align:center;font-size:0.75rem;color:var(--muted-foreground)\";\nvar defaultRenderOptions = {\n dir: \"ltr\",\n labels: {}\n};\nfunction hasComponentKey(obj) {\n return Object.keys(obj).some((k) => k.includes(\":\"));\n}\nfunction separatePropsAndChildren(obj, props, children) {\n for (const [k, v] of Object.entries(obj)) {\n if (k === \"$if\" || k === \"$for\" || k === \"$key\")\n continue;\n if (k.includes(\":\") || typeof v === \"object\" && v !== null && Object.keys(v).length > 0 && hasComponentKey(v)) {\n children[k] = v;\n } else {\n props[k] = v;\n }\n }\n}\nfunction callHook(g, name, type) {\n const key = name ? `${type}_${name}` : `${type}_`;\n const fn = g[key];\n if (typeof fn === \"function\") {\n fn.call(g);\n }\n}\nfunction applyEnterAnimation(el, props) {\n const enterFn = props.$enter;\n if (typeof enterFn !== \"function\")\n return;\n const animClass = enterFn();\n if (animClass && typeof animClass === \"string\") {\n el.classList.add(animClass);\n el.addEventListener(\"animationend\", () => el.classList.remove(animClass), { once: true });\n }\n}\nfunction applyLeaveAnimation(el, props, callback) {\n const leaveFn = props.$leave;\n if (typeof leaveFn !== \"function\") {\n callback();\n return;\n }\n const animClass = leaveFn();\n if (animClass && typeof animClass === \"string\") {\n el.classList.add(animClass);\n el.addEventListener(\"animationend\", () => {\n callback();\n }, { once: true });\n } else {\n callback();\n }\n}\nfunction renderWithFallback(renderer, props, name, ctx, fullKey, ns) {\n try {\n return renderComponent(() => renderer(props, name, ctx));\n } catch (e) {\n console.warn(`[SlexKit][${ns}] Render error at ${fullKey}:`, e.message);\n const fb = (ctx.document || document).createElement(\"div\");\n fb.className = \"slex-render-error\";\n fb.title = fullKey;\n fb.setAttribute(\"style\", FALLBACK_CSS);\n return fb;\n }\n}\nfunction resolveDynamicProps(props, g, components, componentTypes, api, forCtx, ns, fullKey) {\n const evalCtx = buildComponentEvalContext(g, components, componentTypes, api, forCtx);\n for (const [k, v] of Object.entries(props)) {\n if (k.startsWith(\"$\") && !k.startsWith(\"$if\") && !k.startsWith(\"$for\") && !k.startsWith(\"$key\") && typeof v === \"string\") {\n const path = `${fullKey}:${k}`;\n const memo = createMemo(() => evalRead(v, evalCtx, ns, path));\n props[k] = createComponentAccessor(memo);\n } else if (k.startsWith(\"on\") && typeof v === \"string\") {\n const stmt = v;\n const path = `${fullKey}:${k}`;\n props[k] = ($event) => execWrite(stmt, { ...evalCtx, $event: $event ?? null }, ns, path);\n }\n }\n}\nfunction resolveKeyValue(item, itemIndex, $keyProp) {\n if ($keyProp) {\n if ($keyProp === \"$value\") {\n return item;\n }\n if ($keyProp === \"id\" || $keyProp !== \"id\" && item && typeof item === \"object\") {\n return item?.[$keyProp];\n }\n }\n if (item && typeof item === \"object\" && \"id\" in item) {\n return item.id;\n }\n const primitiveTypes = [\"string\", \"number\", \"boolean\"];\n if (primitiveTypes.includes(typeof item)) {\n console.warn(\"[SlexKit] $for with primitive array items but no $key specified. Use '$key: $value' for primitive arrays. Falling back to index.\");\n return itemIndex;\n }\n console.warn(\"[SlexKit] $for array item has no 'id' property and no $key specified. Falling back to index.\");\n return itemIndex;\n}\nfunction trackForCollection(value) {\n if (!Array.isArray(value))\n return value;\n Reflect.get(value, \"length\");\n for (const item of value) {\n if (item && typeof item === \"object\") {\n for (const key of Object.keys(item)) {\n Reflect.get(item, key);\n }\n }\n }\n return value;\n}\nfunction renderIfNode(fullKey, props, container, g, components, componentTypes, api, forCtx, ns, options) {\n const [type, name] = fullKey.split(\":\");\n const renderer = getRenderer(type);\n if (!renderer)\n return;\n const evalCtx = buildComponentEvalContext(g, components, componentTypes, api, forCtx);\n const show = createMemo(() => evalRead(props.$if, evalCtx, ns, `${fullKey}:$if`));\n let current = null;\n const leavingInstances = new Set;\n let mounting = false;\n let emit;\n const disposeInstance = (instance) => {\n if (instance.disposed)\n return;\n instance.disposed = true;\n leavingInstances.delete(instance);\n if (current === instance)\n current = null;\n disposeComponent(instance.el);\n instance.dispose();\n callHook(g, name, \"onUnmount\");\n instance.el.remove();\n };\n createEffect(() => {\n if (show()) {\n if (!current && !mounting) {\n mounting = true;\n let innerProps;\n let innerChildren;\n let currentEl;\n const dispose = createRoot((_dispose) => {\n innerProps = {};\n innerChildren = {};\n separatePropsAndChildren(props, innerProps, innerChildren);\n resolveDynamicProps(innerProps, g, components, componentTypes, api, forCtx, ns, fullKey);\n const componentState = syncComponentProps(type, name, innerProps, components, componentTypes);\n bindInputStateProps(type, componentState, innerProps);\n emit = (event, data) => {\n if (event === \"change\")\n applyComponentEventState(type, name, data, components, componentTypes);\n const h = innerProps[`on${event}`];\n if (typeof h === \"function\")\n h(data);\n };\n currentEl = renderWithFallback(renderer, innerProps, name, {\n g,\n std: slexkitStd,\n api,\n dir: options.dir,\n labels: options.labels,\n document: container.ownerDocument || document,\n forCtx,\n children: innerChildren,\n id: name || null,\n emit,\n renderTree: (layout, _container, childForCtx) => renderTree(layout, _container, g, components, componentTypes, childForCtx ?? forCtx, ns, api, options, false)\n }, fullKey, ns);\n return _dispose;\n });\n mounting = false;\n if (currentEl) {\n container.appendChild(currentEl);\n applyEnterAnimation(currentEl, innerProps);\n callHook(g, name, \"onMount\");\n current = {\n el: currentEl,\n props: innerProps,\n dispose,\n disposed: false\n };\n } else {\n dispose();\n }\n }\n } else {\n if (current) {\n const instance = current;\n current = null;\n leavingInstances.add(instance);\n applyLeaveAnimation(instance.el, instance.props, () => {\n disposeInstance(instance);\n });\n }\n }\n });\n onCleanup(() => {\n if (current)\n disposeInstance(current);\n for (const instance of Array.from(leavingInstances))\n disposeInstance(instance);\n });\n}\nfunction renderAndMountSlot(item, index, keyVal, indexSignal, revisionSignal, renderer, type, name, props, container, g, components, componentTypes, api, forCtx, ns, fullKey, options) {\n indexSignal[1](index);\n const reactiveItem = asReactiveValue(item, g);\n const innerForCtx = {\n ...forCtx,\n $item: reactiveItem,\n $index: indexSignal[0],\n $key: keyVal,\n $revision: revisionSignal[0]\n };\n if (name) {\n innerForCtx[name] = reactiveItem;\n }\n let innerProps;\n let innerChildren;\n let el;\n let fEmit;\n const dispose = createRoot((_dispose) => {\n innerProps = {};\n innerChildren = {};\n separatePropsAndChildren(props, innerProps, innerChildren);\n resolveDynamicProps(innerProps, g, components, componentTypes, api, innerForCtx, ns, fullKey);\n const componentState = syncComponentProps(type, name, innerProps, components, componentTypes);\n bindInputStateProps(type, componentState, innerProps);\n fEmit = (event, data) => {\n if (event === \"change\")\n applyComponentEventState(type, name, data, components, componentTypes);\n const h = innerProps[`on${event}`];\n if (typeof h === \"function\")\n h(data);\n };\n el = renderWithFallback(renderer, innerProps, name, {\n g,\n std: slexkitStd,\n api,\n dir: options.dir,\n labels: options.labels,\n document: container.ownerDocument || document,\n forCtx: innerForCtx,\n children: innerChildren,\n id: name || null,\n emit: fEmit,\n renderTree: (layout, _container, childForCtx) => renderTree(layout, _container, g, components, componentTypes, childForCtx ?? innerForCtx, ns, api, options, false)\n }, `${fullKey}[${index}]`, ns);\n return _dispose;\n });\n return {\n key: keyVal,\n el,\n forCtx: innerForCtx,\n index,\n item: reactiveItem,\n props: innerProps,\n children: innerChildren,\n indexSignal,\n revision: 0,\n revisionSignal,\n dispose\n };\n}\nfunction renderForNode(fullKey, props, container, g, components, componentTypes, api, forCtx, ns, options) {\n const [type, name] = fullKey.split(\":\");\n const renderer = getRenderer(type);\n if (!renderer)\n return;\n const doc = container.ownerDocument || document;\n const startAnchor = doc.createComment(`slexkit-for:${fullKey}:start`);\n const endAnchor = doc.createComment(`slexkit-for:${fullKey}:end`);\n container.append(startAnchor, endAnchor);\n const evalCtx = buildComponentEvalContext(g, components, componentTypes, api, forCtx);\n const items = createMemo(() => trackForCollection(evalRead(props.$for, evalCtx, ns, `${fullKey}:$for`)));\n const $keyProp = props.$key;\n const slotMap = new Map;\n const leavingSlots = new Set;\n const disposedSlots = new WeakSet;\n const disposeSlot = (slot) => {\n if (disposedSlots.has(slot))\n return;\n disposedSlots.add(slot);\n leavingSlots.delete(slot);\n callHook(g, name, \"onUnmount\");\n if (slot.el) {\n disposeComponent(slot.el);\n slot.el.remove();\n }\n if (slot.dispose)\n slot.dispose();\n };\n createEffect(() => {\n const arr = items();\n if (!Array.isArray(arr)) {\n if (slotMap.size > 0) {\n for (const [, slot] of slotMap) {\n disposeSlot(slot);\n }\n slotMap.clear();\n }\n return;\n }\n const newKeys = arr.map((item, i) => resolveKeyValue(item, i, $keyProp));\n const newKeySet = new Set(newKeys);\n const deletedSlots = [];\n for (const [oldKey, slot] of slotMap) {\n if (!newKeySet.has(oldKey)) {\n deletedSlots.push(slot);\n slotMap.delete(oldKey);\n }\n }\n for (const slot of deletedSlots) {\n leavingSlots.add(slot);\n if (!slot.el) {\n disposeSlot(slot);\n continue;\n }\n applyLeaveAnimation(slot.el, slot.props, () => {\n disposeSlot(slot);\n });\n }\n let cursor = startAnchor;\n arr.forEach((item, index) => {\n item = asReactiveValue(item, g);\n const keyVal = newKeys[index];\n let slot = slotMap.get(keyVal);\n if (slot) {\n const indexChanged = slot.index !== index;\n const itemChanged = slot.item !== item;\n slot.forCtx.$item = item;\n slot.forCtx.$key = keyVal;\n if (name)\n slot.forCtx[name] = item;\n slot.index = index;\n slot.item = item;\n if (slot.revisionSignal) {\n slot.revision = (slot.revision ?? 0) + 1;\n slot.revisionSignal[1](slot.revision);\n }\n if (indexChanged || itemChanged) {\n if (indexChanged && slot.indexSignal) {\n slot.indexSignal[1](index);\n }\n callHook(g, name, \"onUpdate\");\n }\n } else {\n const indexSignal = createSignal(index);\n const revisionSignal = createSignal(0);\n slot = renderAndMountSlot(item, index, keyVal, indexSignal, revisionSignal, renderer, type, name, props, container, g, components, componentTypes, api, forCtx, ns, fullKey, options);\n if (!slot.el) {\n disposeSlot(slot);\n return;\n }\n applyEnterAnimation(slot.el, slot.props);\n callHook(g, name, \"onMount\");\n slotMap.set(keyVal, slot);\n }\n const nextChild = cursor.nextSibling;\n if (slot.el && nextChild !== slot.el) {\n container.insertBefore(slot.el, nextChild ?? endAnchor);\n }\n if (slot.el) {\n cursor = slot.el;\n }\n });\n });\n onCleanup(() => {\n for (const slot of Array.from(slotMap.values()))\n disposeSlot(slot);\n slotMap.clear();\n for (const slot of Array.from(leavingSlots))\n disposeSlot(slot);\n startAnchor.remove();\n endAnchor.remove();\n });\n}\nfunction renderNormalNode(fullKey, props, container, g, components, componentTypes, api, forCtx, ns, options) {\n const [type, name] = fullKey.split(\":\");\n const renderer = getRenderer(type);\n if (!renderer)\n return;\n const nodeProps = {};\n const nodeChildren = {};\n separatePropsAndChildren(props, nodeProps, nodeChildren);\n resolveDynamicProps(nodeProps, g, components, componentTypes, api, forCtx, ns, fullKey);\n const componentState = syncComponentProps(type, name, nodeProps, components, componentTypes);\n bindInputStateProps(type, componentState, nodeProps);\n const nEmit = (event, data) => {\n if (event === \"change\")\n applyComponentEventState(type, name, data, components, componentTypes);\n const h = nodeProps[`on${event}`];\n if (typeof h === \"function\")\n h(data);\n };\n const el = renderWithFallback(renderer, nodeProps, name, {\n g,\n std: slexkitStd,\n api,\n dir: options.dir,\n labels: options.labels,\n document: container.ownerDocument || document,\n forCtx,\n children: nodeChildren,\n id: name || null,\n emit: nEmit,\n renderTree: (layout, _container, childForCtx) => renderTree(layout, _container, g, components, componentTypes, childForCtx ?? forCtx, ns, api, options, false)\n }, fullKey, ns);\n if (el) {\n container.appendChild(el);\n applyEnterAnimation(el, nodeProps);\n callHook(g, name, \"onMount\");\n onCleanup(() => callHook(g, name, \"onUnmount\"));\n onCleanup(() => disposeComponent(el));\n }\n}\nfunction renderNode(fullKey, props, container, g, components, componentTypes, api, forCtx, ns, options) {\n if (!fullKey || !fullKey.includes(\":\"))\n return;\n if (props.$if) {\n renderIfNode(fullKey, props, container, g, components, componentTypes, api, forCtx, ns, options);\n } else if (props.$for) {\n renderForNode(fullKey, props, container, g, components, componentTypes, api, forCtx, ns, options);\n } else {\n renderNormalNode(fullKey, props, container, g, components, componentTypes, api, forCtx, ns, options);\n }\n}\nfunction renderTree(layout, container, g, components, componentTypes, forCtx, ns = \"?\", api, options = defaultRenderOptions, prepare = true) {\n if (!layout || typeof layout !== \"object\")\n return;\n if (prepare)\n prepareComponentStates(layout, components, componentTypes, ns);\n for (const [key, val] of Object.entries(layout)) {\n if (!key.includes(\":\"))\n continue;\n if (typeof val === \"object\" && val !== null) {\n renderNode(key, val, container, g, components, componentTypes, api, forCtx, ns, options);\n }\n }\n}\n\n// src/engine/diagnostics.ts\nclass SlexKitSyntaxError extends SyntaxError {\n diagnostic;\n constructor(diagnostic) {\n super(formatSlexKitDiagnostic(diagnostic));\n this.name = \"SlexKitSyntaxError\";\n this.diagnostic = diagnostic;\n }\n}\nfunction excerpt(source, line, column) {\n const lines = source.split(`\n`);\n const start = Math.max(1, line - 2);\n const end = Math.min(lines.length, line + 2);\n const width = String(end).length;\n const rows = [];\n for (let current = start;current <= end; current += 1) {\n const marker = current === line ? \">\" : \" \";\n rows.push(`${marker} ${String(current).padStart(width, \" \")} | ${lines[current - 1] ?? \"\"}`);\n if (current === line) {\n rows.push(` ${\" \".repeat(width)} | ${\" \".repeat(Math.max(0, column - 1))}^`);\n }\n }\n return rows.join(`\n`);\n}\nfunction lineColumnAt(source, index) {\n const prefix = source.slice(0, Math.max(0, index));\n const lines = prefix.split(`\n`);\n return {\n line: lines.length,\n column: lines[lines.length - 1].length + 1\n };\n}\nfunction stackLine(error) {\n if (!(error instanceof Error) || !error.stack)\n return null;\n const match = error.stack.match(/<parse>\\s+\\(:(\\d+)\\)/);\n if (!match)\n return null;\n const parsed = Number(match[1]);\n return Number.isFinite(parsed) ? Math.max(1, parsed - 2) : null;\n}\nfunction scanSource(source) {\n const chars = [];\n let quote = \"\";\n let escaped = false;\n let line = 1;\n let column = 0;\n for (let index = 0;index < source.length; index += 1) {\n const char = source[index];\n const next = source[index + 1];\n column += 1;\n if (char === `\n`) {\n line += 1;\n column = 0;\n if (quote === \"//\")\n quote = \"\";\n continue;\n }\n if (quote) {\n if (quote === \"/*\" && char === \"*\" && next === \"/\") {\n quote = \"\";\n index += 1;\n column += 1;\n } else if (quote !== \"/*\" && quote !== \"//\" && !escaped && char === quote) {\n quote = \"\";\n }\n escaped = !escaped && quote !== \"/*\" && quote !== \"//\" && char === \"\\\\\";\n if (char !== \"\\\\\")\n escaped = false;\n continue;\n }\n if (char === \"/\" && next === \"/\") {\n quote = \"//\";\n index += 1;\n column += 1;\n continue;\n }\n if (char === \"/\" && next === \"*\") {\n quote = \"/*\";\n index += 1;\n column += 1;\n continue;\n }\n if (char === '\"' || char === \"'\" || char === \"`\") {\n quote = char;\n escaped = false;\n continue;\n }\n chars.push({ char, index, line, column });\n }\n return chars;\n}\nfunction tokenDiagnostic(source, message) {\n const chars = scanSource(source);\n const unexpectedString = message.match(/Unexpected string(?: literal)?(?: \"([^\"]+)\")?/);\n if (unexpectedString) {\n const literal = unexpectedString[1];\n if (literal) {\n const quoted = [`\"${literal}\"`, `'${literal}'`, `\\`${literal}\\``];\n const index = quoted.map((candidate) => source.indexOf(candidate)).filter((candidate) => candidate >= 0).sort((a, b) => a - b)[0];\n if (index !== undefined)\n return lineColumnAt(source, index);\n }\n const suspiciousString = source.match(/[}\\])\"']\\s*(['\"`])/);\n if (suspiciousString?.index !== undefined) {\n const quoteIndex = source.indexOf(suspiciousString[1], suspiciousString.index + 1);\n if (quoteIndex >= 0)\n return lineColumnAt(source, quoteIndex);\n }\n }\n if (message.includes(\"Unexpected token ':'\")) {\n const doubleColon = chars.find((item, index) => item.char === \":\" && chars[index - 1]?.char === \":\");\n if (doubleColon)\n return doubleColon;\n const suspiciousColon = chars.find((item, index) => {\n if (item.char !== \":\")\n return false;\n const prev = chars[index - 1]?.char;\n return prev === '\"' || prev === \"'\" || prev === \"}\" || prev === \"]\" || prev === \")\";\n });\n if (suspiciousColon)\n return suspiciousColon;\n }\n return null;\n}\nfunction delimiterDiagnostic(source) {\n const stack = [];\n const pairs = { \"}\": \"{\", \"]\": \"[\", \")\": \"(\" };\n for (const item of scanSource(source)) {\n if (item.char === \"{\" || item.char === \"[\" || item.char === \"(\") {\n stack.push(item);\n continue;\n }\n if (item.char === \"}\" || item.char === \"]\" || item.char === \")\") {\n const expected = pairs[item.char];\n const opener2 = stack.pop();\n if (!opener2 || opener2.char !== expected) {\n return {\n line: item.line,\n column: item.column,\n detail: `Unexpected closing delimiter ${item.char}.`\n };\n }\n }\n }\n const opener = stack.at(-1);\n if (!opener)\n return null;\n const end = lineColumnAt(source, source.length);\n return {\n line: end.line,\n column: end.column,\n detail: `Expected closing delimiter for ${opener.char} opened at line ${opener.line}, column ${opener.column}.`\n };\n}\nfunction locateSyntaxError(source, error) {\n const rawMessage = error instanceof Error ? error.message : String(error);\n const delimiter = delimiterDiagnostic(source);\n const token = tokenDiagnostic(source, rawMessage);\n const stack = stackLine(error);\n const position = token ?? (delimiter && rawMessage.includes(\"Expected\") ? delimiter : null) ?? (stack ? { line: stack, column: 1 } : null) ?? delimiter ?? { line: 1, column: 1 };\n const detail = token ? \"The parser failed at this token.\" : delimiter?.detail;\n return {\n message: rawMessage,\n line: position.line,\n column: position.column,\n detail,\n excerpt: excerpt(source, position.line, position.column)\n };\n}\nfunction readStringLiteral(source, start) {\n const quote = source[start];\n if (quote !== '\"' && quote !== \"'\" && quote !== \"`\")\n return null;\n let escaped = false;\n for (let index = start + 1;index < source.length; index += 1) {\n const char = source[index];\n if (!escaped && char === quote) {\n return { end: index + 1, value: source.slice(start, index + 1) };\n }\n escaped = !escaped && char === \"\\\\\";\n if (char !== \"\\\\\")\n escaped = false;\n }\n return null;\n}\nfunction skipWhitespace(source, index) {\n let cursor = index;\n while (cursor < source.length && /\\s/.test(source[cursor]))\n cursor += 1;\n return cursor;\n}\nfunction findExpressionEnd(source, start) {\n const stack = [];\n let quote = \"\";\n let escaped = false;\n for (let index = start;index < source.length; index += 1) {\n const char = source[index];\n const next = source[index + 1];\n if (quote) {\n if (quote === \"//\" && char === `\n`) {\n quote = \"\";\n } else if (quote === \"/*\" && char === \"*\" && next === \"/\") {\n quote = \"\";\n index += 1;\n } else if (quote !== \"//\" && quote !== \"/*\" && !escaped && char === quote) {\n quote = \"\";\n }\n escaped = !escaped && quote !== \"//\" && quote !== \"/*\" && char === \"\\\\\";\n if (char !== \"\\\\\")\n escaped = false;\n continue;\n }\n if (char === \"/\" && next === \"/\") {\n quote = \"//\";\n index += 1;\n continue;\n }\n if (char === \"/\" && next === \"*\") {\n quote = \"/*\";\n index += 1;\n continue;\n }\n if (char === '\"' || char === \"'\" || char === \"`\") {\n quote = char;\n escaped = false;\n continue;\n }\n if (char === \"{\" || char === \"[\" || char === \"(\") {\n stack.push(char);\n continue;\n }\n if (char === \"}\" || char === \"]\" || char === \")\") {\n if (stack.length === 0)\n return index;\n stack.pop();\n continue;\n }\n if (char === \",\" && stack.length === 0)\n return index;\n }\n return source.length;\n}\nfunction isSingleStringLiteral(source) {\n const start = skipWhitespace(source, 0);\n const literal = readStringLiteral(source, start);\n return Boolean(literal && skipWhitespace(source, literal.end) === source.length);\n}\nfunction transformDynamicPropExpressions(source) {\n const edits = [];\n const keyPattern = /(^|[,{]\\s*)(\\$[A-Za-z_$][\\w$]*)\\s*:/g;\n let match;\n while (match = keyPattern.exec(source)) {\n const colon = source.indexOf(\":\", match.index + match[1].length);\n const valueStart = skipWhitespace(source, colon + 1);\n const valueEnd = findExpressionEnd(source, valueStart);\n const rawValue = source.slice(valueStart, valueEnd);\n if (!rawValue.trim() || isSingleStringLiteral(rawValue))\n continue;\n edits.push({\n start: valueStart,\n end: valueEnd,\n value: JSON.stringify(rawValue.trim())\n });\n }\n if (edits.length === 0)\n return source;\n let transformed = source;\n for (let index = edits.length - 1;index >= 0; index -= 1) {\n const edit = edits[index];\n transformed = `${transformed.slice(0, edit.start)}${edit.value}${transformed.slice(edit.end)}`;\n }\n return transformed;\n}\nfunction formatSlexKitDiagnostic(diagnostic) {\n const detail = diagnostic.detail ? `\n${diagnostic.detail}` : \"\";\n return `${diagnostic.message} at line ${diagnostic.line}, column ${diagnostic.column}.${detail}\n${diagnostic.excerpt}`;\n}\nfunction diagnoseSlexKitSource(source, error) {\n return locateSyntaxError(source, error);\n}\nfunction parseSlexSource(source) {\n try {\n const parseSource = transformDynamicPropExpressions(source);\n return {\n ok: true,\n value: new Function(`\"use strict\";\nreturn (\n${parseSource}\n);`)()\n };\n } catch (error) {\n const diagnostic = diagnoseSlexKitSource(source, error);\n return {\n ok: false,\n diagnostic,\n error: new SlexKitSyntaxError(diagnostic)\n };\n }\n}\nvar parseSlexKitDsl = parseSlexSource;\n\n// src/version.ts\nvar SLEXKIT_VERSION = \"0.3.3\";\nvar SLEX_PROTOCOL_VERSION = \"0.1\";\nvar SLEXKIT_COMPONENTS_VERSION = SLEXKIT_VERSION;\nfunction getSlexKitInfo() {\n return {\n version: SLEXKIT_VERSION,\n protocolVersion: SLEX_PROTOCOL_VERSION,\n componentsVersion: SLEXKIT_COMPONENTS_VERSION\n };\n}\n\n// src/engine/secure-runtime.ts\nclass SlexKitRuntimeError extends Error {\n kind;\n code;\n elapsedMs;\n constructor(kind, code, message, elapsedMs) {\n super(message);\n this.name = \"SlexKitRuntimeError\";\n this.kind = kind;\n this.code = code;\n this.elapsedMs = elapsedMs;\n }\n}\nfunction runtimeNow(adapter) {\n if (adapter?.now)\n return adapter.now();\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n return Date.now();\n}\nfunction currentOrigin() {\n if (typeof location !== \"undefined\" && location.origin)\n return location.origin;\n if (typeof window !== \"undefined\" && window.location?.origin)\n return window.location.origin;\n return \"http://localhost\";\n}\nfunction resolveUrl(url) {\n try {\n return new URL(url);\n } catch {}\n try {\n return new URL(url, currentOrigin());\n } catch {\n throw new SlexKitRuntimeError(\"policy\", \"invalid_url\", \"Invalid request URL.\");\n }\n}\nfunction originAllowed(origin, patterns) {\n let parsedOrigin;\n try {\n parsedOrigin = new URL(origin);\n } catch {\n return false;\n }\n for (const pattern of patterns) {\n const normalized = pattern.trim();\n if (normalized === \"*\" || normalized === origin)\n return true;\n if (normalized.endsWith(\"://*\")) {\n const protocol = normalized.slice(0, -4);\n if (parsedOrigin.protocol === `${protocol}:`)\n return true;\n }\n const wildcard = normalized.match(/^([a-z][a-z0-9+.-]*):\\/\\/\\*\\.(.+)$/i);\n if (wildcard && parsedOrigin.protocol === `${wildcard[1]}:`) {\n const suffix = wildcard[2].toLowerCase();\n const host = parsedOrigin.hostname.toLowerCase();\n if (host.endsWith(`.${suffix}`))\n return true;\n }\n }\n return false;\n}\nfunction needsJsonBody(method, body) {\n if (method !== \"POST\" || body === undefined)\n return false;\n return !(typeof body === \"string\" || body instanceof ArrayBuffer || ArrayBuffer.isView(body));\n}\nfunction bodySize(body) {\n if (body === undefined || body === null)\n return 0;\n if (typeof body === \"string\")\n return body.length;\n if (body instanceof ArrayBuffer)\n return body.byteLength;\n if (ArrayBuffer.isView(body))\n return body.byteLength;\n return JSON.stringify(body).length;\n}\nvar DEFAULT_ALLOWED_HEADERS = [\"accept\", \"content-type\"];\nvar BLOCKED_HEADERS = [\n \"authorization\",\n \"cookie\",\n \"proxy-authorization\",\n \"sec-fetch-dest\",\n \"sec-fetch-mode\",\n \"sec-fetch-site\",\n \"sec-fetch-user\",\n \"set-cookie\"\n];\nfunction normalizeHeaderName(name) {\n return name.trim().toLowerCase();\n}\nfunction assertHeaders(headers, allowHeaders) {\n if (!headers)\n return;\n const allowed = new Set((allowHeaders ?? DEFAULT_ALLOWED_HEADERS).map(normalizeHeaderName));\n for (const [name, value] of Object.entries(headers)) {\n const normalized = normalizeHeaderName(name);\n if (!normalized || typeof value !== \"string\") {\n throw new SlexKitRuntimeError(\"policy\", \"header_blocked\", \"Request header is not allowed.\");\n }\n if (BLOCKED_HEADERS.includes(normalized) || !allowed.has(normalized)) {\n throw new SlexKitRuntimeError(\"policy\", \"header_blocked\", `Request header ${name} is not allowed.`);\n }\n }\n}\nfunction responseSize(result) {\n if (typeof result.text === \"string\")\n return result.text.length;\n if (result.data !== undefined) {\n try {\n return JSON.stringify(result.data).length;\n } catch {\n return 0;\n }\n }\n return 0;\n}\nfunction contentTypeAllowed(contentType, patterns) {\n const normalized = contentType.split(\";\")[0].trim().toLowerCase();\n if (!normalized)\n return false;\n return patterns.some((pattern) => {\n const allowed = pattern.trim().toLowerCase();\n if (allowed === \"*\" || allowed === normalized)\n return true;\n if (allowed.endsWith(\"/*\")) {\n return normalized.startsWith(`${allowed.slice(0, -1)}`);\n }\n return false;\n });\n}\nfunction responseHeader(headers, name) {\n const target = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === target)\n return value;\n }\n return;\n}\nfunction assertNetworkResult(result, policy) {\n if (!policy)\n return;\n if (policy.maxResponseBytes !== undefined && responseSize(result) > policy.maxResponseBytes) {\n throw new SlexKitRuntimeError(\"policy\", \"response_too_large\", \"Response body exceeds the runtime policy limit.\", result.elapsedMs);\n }\n if (policy.allowContentTypes?.length) {\n const contentType = responseHeader(result.headers, \"content-type\");\n if (!contentType || !contentTypeAllowed(contentType, policy.allowContentTypes)) {\n throw new SlexKitRuntimeError(\"policy\", \"content_type_blocked\", `Response content-type ${contentType || \"unknown\"} is not allowed.`, result.elapsedMs);\n }\n }\n}\nfunction canvasPolicy(policy) {\n const canvas = policy.canvas;\n if (!canvas?.enabled) {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_disabled\", \"Canvas access is disabled.\");\n }\n return canvas;\n}\nfunction assertCanvasDimensions(policy, width, height) {\n if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_size_invalid\", \"Canvas size must be positive finite numbers.\");\n }\n const pixels = Math.ceil(width) * Math.ceil(height);\n if (policy.maxPixels !== undefined && pixels > policy.maxPixels) {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_too_large\", \"Canvas size exceeds the runtime policy limit.\");\n }\n}\nfunction assertCanvasContext(policy, contextId) {\n if (policy.allowedContexts?.length && !policy.allowedContexts.includes(contextId)) {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_context_blocked\", `Canvas context ${contextId} is not allowed.`);\n }\n}\nfunction emitNetworkLog(adapter, event) {\n try {\n adapter?.onNetworkLog?.(event);\n } catch {}\n}\nfunction emitRuntimeError(adapter, event) {\n try {\n adapter?.onRuntimeError?.(event);\n } catch {}\n}\nfunction timerHost(adapter) {\n const globalTimer = globalThis;\n return {\n setTimeout: adapter?.setTimeout ?? ((fn, ms) => Number(globalTimer.setTimeout(fn, ms))),\n clearTimeout: adapter?.clearTimeout ?? ((id) => globalTimer.clearTimeout(id)),\n setInterval: adapter?.setInterval ?? ((fn, ms) => Number(globalTimer.setInterval(fn, ms))),\n clearInterval: adapter?.clearInterval ?? ((id) => globalTimer.clearInterval(id))\n };\n}\nfunction rafHost(adapter) {\n const globalRaf = globalThis;\n return {\n requestAnimationFrame: adapter?.requestAnimationFrame ?? ((fn) => {\n if (typeof globalRaf.requestAnimationFrame === \"function\") {\n return Number(globalRaf.requestAnimationFrame(fn));\n }\n return Number(globalThis.setTimeout(() => fn(runtimeNow(adapter)), 16));\n }),\n cancelAnimationFrame: adapter?.cancelAnimationFrame ?? ((id) => {\n if (typeof globalRaf.cancelAnimationFrame === \"function\") {\n globalRaf.cancelAnimationFrame(id);\n } else {\n globalThis.clearTimeout(id);\n }\n })\n };\n}\nasync function readResponseText(response, maxResponseBytes) {\n if (maxResponseBytes === undefined || !response.body?.getReader) {\n const text2 = await response.text();\n if (maxResponseBytes !== undefined && text2.length > maxResponseBytes) {\n throw new SlexKitRuntimeError(\"policy\", \"response_too_large\", \"Response body exceeds the runtime policy limit.\");\n }\n return text2;\n }\n const reader = response.body.getReader();\n const decoder = new TextDecoder;\n let size = 0;\n let text = \"\";\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n size += value.byteLength;\n if (size > maxResponseBytes) {\n await reader.cancel();\n throw new SlexKitRuntimeError(\"policy\", \"response_too_large\", \"Response body exceeds the runtime policy limit.\");\n }\n text += decoder.decode(value, { stream: true });\n }\n text += decoder.decode();\n return text;\n}\nasync function defaultFetch(request, adapter, options = {}) {\n if (adapter?.fetch)\n return adapter.fetch(request);\n if (typeof fetch !== \"function\") {\n throw new SlexKitRuntimeError(\"network\", \"fetch_unavailable\", \"Host fetch is unavailable.\");\n }\n const start = runtimeNow(adapter);\n const controller = typeof AbortController !== \"undefined\" ? new AbortController : undefined;\n const releaseController = controller ? options.onController?.(controller) : undefined;\n const timeout = controller ? globalThis.setTimeout(() => controller.abort(), request.timeoutMs) : undefined;\n try {\n const init = {\n method: request.method,\n headers: request.headers,\n credentials: request.credentials,\n signal: controller?.signal\n };\n if (request.method === \"POST\" && request.body !== undefined) {\n if (typeof request.body === \"string\" || request.body instanceof ArrayBuffer || ArrayBuffer.isView(request.body)) {\n init.body = request.body;\n } else {\n init.body = JSON.stringify(request.body);\n init.headers = request.headers;\n }\n }\n const response = await fetch(request.url, init);\n const text = await readResponseText(response, options.maxResponseBytes);\n let data = undefined;\n try {\n data = text ? JSON.parse(text) : undefined;\n } catch {\n data = undefined;\n }\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n headers,\n text,\n data,\n elapsedMs: runtimeNow(adapter) - start\n };\n } catch (error) {\n const elapsedMs = runtimeNow(adapter) - start;\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new SlexKitRuntimeError(\"timeout\", \"timeout\", \"Request timed out.\", elapsedMs);\n }\n throw new SlexKitRuntimeError(\"network\", \"network_error\", errorMessage(error), elapsedMs);\n } finally {\n if (timeout !== undefined)\n globalThis.clearTimeout(timeout);\n releaseController?.();\n }\n}\nfunction errorMessage(error) {\n if (error instanceof Error)\n return error.message;\n if (error && typeof error === \"object\" && \"message\" in error) {\n return String(error.message);\n }\n return String(error ?? \"Unknown error.\");\n}\nfunction serializeRuntimeError(error) {\n if (error instanceof SlexKitRuntimeError) {\n return {\n name: error.name,\n message: error.message,\n kind: error.kind,\n code: error.code,\n elapsedMs: error.elapsedMs\n };\n }\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message\n };\n }\n return {\n name: \"Error\",\n message: errorMessage(error)\n };\n}\nfunction deserializeRuntimeError(error) {\n if (error.name === \"SlexKitRuntimeError\" && error.kind && error.code) {\n return new SlexKitRuntimeError(error.kind, error.code, error.message, error.elapsedMs);\n }\n const next = new Error(error.message);\n next.name = error.name || \"Error\";\n return next;\n}\nfunction createSecureRuntime(policy, hostAdapter) {\n const disposers = new Set;\n const timeoutIds = new Set;\n const intervalIds = new Set;\n const rafIds = new Set;\n const abortControllers = new Set;\n const ownedCanvases = new Set;\n const countedCanvases = new Set;\n let disposed = false;\n let nextSyntheticId = 1;\n const syntheticTimers = new Map;\n const timers = timerHost(hostAdapter);\n const raf = rafHost(hostAdapter);\n function assertNotDisposed() {\n if (disposed) {\n throw new SlexKitRuntimeError(\"policy\", \"runtime_disposed\", \"Runtime has been disposed.\");\n }\n }\n function assertNetwork(method, url, options = {}) {\n const network = policy.network;\n if (!network?.enabled) {\n throw new SlexKitRuntimeError(\"policy\", \"network_disabled\", \"Network access is disabled.\");\n }\n if (!network.methods.includes(method)) {\n throw new SlexKitRuntimeError(\"policy\", \"method_blocked\", `Network method ${method} is not allowed.`);\n }\n const parsed = resolveUrl(url);\n if (!originAllowed(parsed.origin, network.allowOrigins)) {\n throw new SlexKitRuntimeError(\"policy\", \"origin_blocked\", `Network origin ${parsed.origin} is not allowed.`);\n }\n if (method === \"POST\" && bodySize(options.body) > network.maxBodyBytes) {\n throw new SlexKitRuntimeError(\"policy\", \"body_too_large\", \"Request body exceeds the runtime policy limit.\");\n }\n const headers = needsJsonBody(method, options.body) ? { \"content-type\": \"application/json\", ...options.headers } : options.headers;\n assertHeaders(headers, network.allowHeaders);\n const timeoutMs = Math.min(options.timeoutMs ?? network.timeoutMs, network.timeoutMs);\n const credentials = options.credentials ?? network.credentials;\n if (credentials !== network.credentials) {\n throw new SlexKitRuntimeError(\"policy\", \"credentials_blocked\", \"Request credentials mode is not allowed.\");\n }\n return {\n method,\n url: parsed.href,\n headers,\n body: options.body,\n credentials,\n timeoutMs\n };\n }\n function assertTimer(ms) {\n const timer = policy.timer;\n if (!timer?.enabled) {\n throw new SlexKitRuntimeError(\"policy\", \"timer_disabled\", \"Timer access is disabled.\");\n }\n if (!Number.isFinite(ms) || ms < timer.minIntervalMs) {\n throw new SlexKitRuntimeError(\"policy\", \"timer_interval_blocked\", \"Timer interval is below policy limit.\");\n }\n if (timeoutIds.size + intervalIds.size >= timer.maxTimers) {\n throw new SlexKitRuntimeError(\"policy\", \"timer_limit\", \"Timer limit exceeded.\");\n }\n }\n function normalizeTimerId(raw) {\n if (Number.isFinite(raw) && raw > 0)\n return raw;\n const synthetic = nextSyntheticId++;\n syntheticTimers.set(synthetic, raw);\n return synthetic;\n }\n function assertCanvas(width, height) {\n assertNotDisposed();\n const canvas = canvasPolicy(policy);\n assertCanvasDimensions(canvas, width, height);\n if (canvas.maxCanvases !== undefined && countedCanvases.size >= canvas.maxCanvases) {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_limit\", \"Canvas limit exceeded.\");\n }\n return canvas;\n }\n function countCanvas(canvas, policy2) {\n if (countedCanvases.has(canvas))\n return;\n if (policy2.maxCanvases !== undefined && countedCanvases.size >= policy2.maxCanvases) {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_limit\", \"Canvas limit exceeded.\");\n }\n countedCanvases.add(canvas);\n }\n function reportCallbackError(phase, error) {\n emitRuntimeError(hostAdapter, {\n phase,\n error: serializeRuntimeError(error)\n });\n }\n const api = {\n now: () => runtimeNow(hostAdapter),\n get: (url, options = {}) => api.fetch(url, { ...options, method: \"GET\" }),\n post: (url, body, options = {}) => api.fetch(url, { ...options, method: \"POST\", body }),\n fetch: async (url, options = {}) => {\n assertNotDisposed();\n const method = options.method ?? \"GET\";\n const request = assertNetwork(method, url, options);\n const started = runtimeNow(hostAdapter);\n emitNetworkLog(hostAdapter, { phase: \"request\", request });\n try {\n const result = await defaultFetch(request, hostAdapter, {\n maxResponseBytes: policy.network?.maxResponseBytes,\n onController(controller) {\n abortControllers.add(controller);\n return () => abortControllers.delete(controller);\n }\n });\n assertNetworkResult(result, policy.network);\n emitNetworkLog(hostAdapter, {\n phase: \"response\",\n request,\n result,\n elapsedMs: runtimeNow(hostAdapter) - started\n });\n return result;\n } catch (error) {\n const serialized = serializeRuntimeError(error);\n emitNetworkLog(hostAdapter, {\n phase: \"error\",\n request,\n error: serialized,\n elapsedMs: runtimeNow(hostAdapter) - started\n });\n throw error;\n }\n },\n setTimeout: (fn, ms) => {\n assertNotDisposed();\n assertTimer(ms);\n let id = 0;\n const raw = timers.setTimeout(() => {\n timeoutIds.delete(id);\n syntheticTimers.delete(id);\n try {\n fn();\n } catch (error) {\n reportCallbackError(\"timer\", error);\n throw error;\n }\n }, ms);\n id = normalizeTimerId(raw);\n timeoutIds.add(id);\n return id;\n },\n clearTimeout: (id) => {\n const raw = syntheticTimers.get(id) ?? id;\n timers.clearTimeout(raw);\n timeoutIds.delete(id);\n syntheticTimers.delete(id);\n },\n setInterval: (fn, ms) => {\n assertNotDisposed();\n assertTimer(ms);\n const id = normalizeTimerId(timers.setInterval(() => {\n try {\n fn();\n } catch (error) {\n reportCallbackError(\"interval\", error);\n throw error;\n }\n }, ms));\n intervalIds.add(id);\n return id;\n },\n clearInterval: (id) => {\n const raw = syntheticTimers.get(id) ?? id;\n timers.clearInterval(raw);\n intervalIds.delete(id);\n syntheticTimers.delete(id);\n },\n raf: (fn) => {\n assertNotDisposed();\n if (!policy.animation?.enabled) {\n throw new SlexKitRuntimeError(\"policy\", \"animation_disabled\", \"Animation access is disabled.\");\n }\n const id = raf.requestAnimationFrame((time) => {\n rafIds.delete(id);\n try {\n fn(time);\n } catch (error) {\n reportCallbackError(\"raf\", error);\n throw error;\n }\n });\n rafIds.add(id);\n return id;\n },\n cancelRaf: (id) => {\n raf.cancelAnimationFrame(id);\n rafIds.delete(id);\n },\n createCanvas: (width, height) => {\n assertCanvas(width, height);\n if (typeof document === \"undefined\" || typeof document.createElement !== \"function\") {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_unavailable\", \"Canvas is unavailable in this runtime.\");\n }\n const canvas = document.createElement(\"canvas\");\n canvas.width = Math.ceil(width);\n canvas.height = Math.ceil(height);\n ownedCanvases.add(canvas);\n countedCanvases.add(canvas);\n return canvas;\n },\n getCanvasContext: (canvas, contextId = \"2d\", options) => {\n assertNotDisposed();\n const canvasAccess = canvasPolicy(policy);\n assertCanvasDimensions(canvasAccess, canvas.width, canvas.height);\n assertCanvasContext(canvasAccess, contextId);\n countCanvas(canvas, canvasAccess);\n const context = canvas.getContext(contextId, options);\n if (!context) {\n throw new SlexKitRuntimeError(\"policy\", \"canvas_context_unavailable\", `Canvas context ${contextId} is unavailable.`);\n }\n return context;\n },\n onDispose: (fn) => {\n disposers.add(fn);\n },\n isTimeoutError: (error) => error instanceof SlexKitRuntimeError && error.kind === \"timeout\",\n isNetworkError: (error) => error instanceof SlexKitRuntimeError && error.kind === \"network\",\n isPolicyError: (error) => error instanceof SlexKitRuntimeError && error.kind === \"policy\",\n errorMessage\n };\n return {\n api,\n dispose: () => {\n if (disposed)\n return;\n disposed = true;\n for (const id of Array.from(timeoutIds))\n api.clearTimeout(id);\n for (const id of Array.from(intervalIds))\n api.clearInterval(id);\n for (const id of Array.from(rafIds))\n api.cancelRaf(id);\n for (const controller of Array.from(abortControllers))\n controller.abort();\n abortControllers.clear();\n for (const canvas of Array.from(ownedCanvases)) {\n if (canvas.isConnected)\n canvas.remove();\n }\n ownedCanvases.clear();\n countedCanvases.clear();\n for (const disposer of Array.from(disposers)) {\n try {\n disposer();\n } catch (error) {\n reportCallbackError(\"dispose\", error);\n }\n }\n disposers.clear();\n }\n };\n}\n// src/components/spec-helpers.ts\nvar SINCE = \"0.1.0\";\nfunction docs(type) {\n return {\n href: `/docs/components/${type}`,\n anchors: {\n api: `${type}-api-reference`,\n examples: `${type}-canonical-example`\n }\n };\n}\nfunction isSlexExpression(value) {\n return typeof value.namespace === \"string\" && typeof value.layout === \"object\" && value.layout !== null;\n}\nfunction example(type, propsOrSource, title = \"Basic usage\") {\n return {\n id: \"basic\",\n title,\n source: isSlexExpression(propsOrSource) ? {\n slex: propsOrSource.slex ?? SLEX_PROTOCOL_VERSION,\n ...propsOrSource\n } : {\n slex: SLEX_PROTOCOL_VERSION,\n namespace: `spec_${type.replaceAll(\"-\", \"_\")}_basic`,\n layout: {\n [`${type}:demo`]: propsOrSource\n }\n }\n };\n}\nvar semanticTones = [\"info\", \"success\", \"warning\", \"danger\", \"muted\"];\nvar inputState = [\"input\", \"slider\", \"select\", \"tabs\", \"radio-group\"];\nvar checkedState = [\"checkbox\"];\nvar enabledState = [\"switch\"];\nvar readableState = [\"stat\", \"text\", \"progress\", \"badge\", \"callout\", \"code-block\", \"divider\", \"link\", \"table\", \"section\"];\nfunction stateFor(type) {\n if (inputState.includes(type))\n return \"value\";\n if (checkedState.includes(type))\n return \"checked\";\n if (enabledState.includes(type))\n return \"enabled\";\n if (readableState.includes(type))\n return \"readable\";\n return \"none\";\n}\nfunction component(spec) {\n return {\n status: \"ready\",\n since: SINCE,\n docs: docs(spec.type),\n state: spec.state ?? stateFor(spec.type),\n ...spec\n };\n}\nvar childContent = {\n allowed: true,\n description: \"Nested component fields are rendered as child content in field order.\"\n};\nvar noChildren = {\n allowed: false,\n description: \"This component does not render nested child components.\"\n};\n\n// src/components/entries/accordion.spec.ts\nvar accordionSpec = component({\n type: \"accordion\",\n category: \"Disclosure\",\n title: \"Accordion\",\n summary: \"Expandable grouped panels.\",\n description: \"Use accordion to reveal one or more sections from a compact list of panels.\",\n props: {\n value: { type: \"string | string[]\", dynamic: true, description: \"Current expanded item value; use an array when multiple is true.\" },\n multiple: { type: \"boolean\", default: false, description: \"Allow multiple items to be expanded at the same time.\" },\n items: { type: \"array\", description: \"Panel definitions with value, label, content, and optional icon.\" },\n \"items[].icon\": { type: \"string\", description: \"Icon name shown before an item trigger label.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when expanded items change.\" }\n },\n children: noChildren,\n examples: [example(\"accordion\", {\n namespace: \"doc_accordion_typical\",\n layout: {\n \"accordion:faq\": {\n multiple: true,\n value: [\n \"install\"\n ],\n items: [\n {\n value: \"install\",\n label: \"Install\",\n icon: \"download-simple\",\n content: \"Prepare dependencies.\"\n },\n {\n value: \"review\",\n label: \"Review\",\n icon: \"check-circle\",\n content: \"Check the result.\"\n },\n {\n value: \"ship\",\n label: \"Ship\",\n icon: \"rocket-launch\",\n content: \"Publish the change.\"\n }\n ]\n }\n }\n })]\n});\n\n// src/components/entries/badge.spec.ts\nvar badgeSpec = component({\n type: \"badge\",\n category: \"Content\",\n title: \"Badge\",\n summary: \"Compact label for status or classification.\",\n description: \"Use badge to annotate nearby content with a short semantic label.\",\n props: {\n label: { type: \"string\", dynamic: true, description: \"Badge text.\" },\n text: { type: \"string\", dynamic: true, description: \"Alias for label.\" },\n content: { type: \"string\", dynamic: true, description: \"Alias for label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the badge label.\" },\n tone: { type: \"string\", values: semanticTones, default: \"info\", description: \"Semantic tone applied to the badge.\" },\n variant: { type: \"string\", values: semanticTones, description: \"Alias for tone.\" }\n },\n children: noChildren,\n examples: [example(\"badge\", {\n namespace: \"doc_badge_typical\",\n layout: {\n \"row:badges\": {\n \"badge:ready\": {\n label: \"ready\",\n icon: \"check-circle\",\n tone: \"success\"\n },\n \"badge:pending\": {\n label: \"pending\",\n tone: \"warning\"\n },\n \"badge:info\": {\n label: \"info\",\n tone: \"info\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/button.spec.ts\nvar buttonSpec = component({\n type: \"button\",\n category: \"Action\",\n title: \"Button\",\n summary: \"Action trigger.\",\n description: \"Use button for explicit actions in interactive SlexKit layouts.\",\n props: {\n label: { type: \"string\", dynamic: true, description: \"Visible button text and accessible name.\" },\n icon: { type: \"string\", description: \"Icon name shown before the label.\" },\n iconOnly: { type: \"boolean\", default: false, description: \"Show only the icon while retaining label as the accessible name.\" },\n variant: { type: \"string\", values: [\"primary\", \"secondary\", \"danger\", \"ghost\"], default: \"primary\", description: \"Semantic action variant.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable the action.\" },\n href: { type: \"string\", dynamic: true, description: \"Render the button surface as a link to this URL.\" },\n target: { type: \"string\", description: \"Link target used when href is present.\" },\n title: { type: \"string\", dynamic: true, description: \"Tooltip and accessible-label fallback.\" },\n selected: { type: \"boolean\", dynamic: true, description: \"Render the icon in its selected visual state.\" },\n active: { type: \"boolean\", dynamic: true, description: \"Render the icon in its active visual state.\" },\n pressed: { type: \"boolean\", dynamic: true, description: \"Expose pressed state and render the selected icon style.\" },\n onclick: { type: \"write-expression\", description: \"Write expression invoked when the button is clicked.\" }\n },\n children: noChildren,\n examples: [example(\"button\", {\n namespace: \"doc_button_typical\",\n layout: {\n \"row:actions\": {\n \"button:save\": {\n label: \"Save\",\n icon: \"floppy-disk\",\n variant: \"primary\"\n },\n \"button:cancel\": {\n label: \"Cancel\",\n variant: \"secondary\"\n },\n \"button:delete\": {\n label: \"Delete\",\n variant: \"danger\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/callout.spec.ts\nvar calloutSpec = component({\n type: \"callout\",\n category: \"Content\",\n title: \"Callout\",\n summary: \"Highlighted contextual message.\",\n description: \"Use callout for notes, warnings, and other contextual blocks.\",\n props: {\n title: { type: \"string\", dynamic: true, description: \"Callout title.\" },\n heading: { type: \"string\", dynamic: true, description: \"Alias for title.\" },\n label: { type: \"string\", dynamic: true, description: \"Alias for title.\" },\n icon: { type: \"string\", description: \"Icon name shown before the title.\" },\n text: { type: \"string\", dynamic: true, description: \"Callout body text.\" },\n message: { type: \"string\", dynamic: true, description: \"Alias for text.\" },\n content: { type: \"string\", dynamic: true, description: \"Alias for text.\" },\n tone: { type: \"string\", values: [\"info\", \"success\", \"warning\", \"danger\"], default: \"info\", description: \"Semantic tone for the callout.\" }\n },\n children: childContent,\n examples: [example(\"callout\", {\n namespace: \"doc_callout_typical\",\n layout: {\n \"callout:notice\": {\n tone: \"info\",\n title: \"Notice\",\n icon: \"info\",\n text: \"Use callout for information that should stand out.\"\n }\n }\n })]\n});\n\n// src/components/entries/card.spec.ts\nvar cardSpec = component({\n type: \"card\",\n category: \"Layout\",\n title: \"Card\",\n summary: \"Bordered grouping container.\",\n description: \"Use card to group related content on a bounded surface.\",\n props: {\n title: { type: \"string\", dynamic: true, description: \"Card title.\" },\n icon: { type: \"string\", description: \"Icon name shown before the title.\" },\n tone: { type: \"string\", values: semanticTones, description: \"Optional semantic tone for the card surface.\" }\n },\n children: childContent,\n examples: [example(\"card\", {\n namespace: \"doc_card_typical\",\n layout: {\n \"card:metrics\": {\n title: \"Metrics\",\n icon: \"chart-bar\",\n \"grid:items\": {\n columns: 2,\n \"stat:requests\": {\n label: \"Requests\",\n value: \"1.2k\",\n unit: \"/min\"\n },\n \"stat:latency\": {\n label: \"Latency\",\n value: \"42\",\n unit: \"ms\"\n }\n }\n }\n }\n })]\n});\n\n// src/components/entries/checkbox.spec.ts\nvar checkboxSpec = component({\n type: \"checkbox\",\n category: \"Input\",\n title: \"Checkbox\",\n summary: \"Boolean checkbox input.\",\n description: \"Use checkbox for binary choices that can be toggled independently.\",\n props: {\n checked: { type: \"boolean\", default: false, dynamic: true, description: \"Checked state.\" },\n label: { type: \"string\", dynamic: true, description: \"Checkbox label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the visible label.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable the checkbox.\" },\n haptic: { type: \"boolean\", default: true, description: \"Enable vibration feedback on supported devices.\" },\n haptics: { type: \"boolean\", default: true, description: \"Alias for haptic.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when checked state changes.\" }\n },\n children: noChildren,\n examples: [example(\"checkbox\", {\n namespace: \"doc_checkbox_typical\",\n layout: {\n \"checkbox:agree\": {\n checked: true,\n label: \"I agree\",\n icon: \"handshake\"\n }\n }\n })]\n});\n\n// src/components/entries/code-block.spec.ts\nvar codeBlockSpec = component({\n type: \"code-block\",\n category: \"Content\",\n title: \"Code Block\",\n summary: \"Formatted code or log block.\",\n description: \"Use code-block for static code samples, configuration snippets, and logs.\",\n props: {\n code: { type: \"string\", dynamic: true, description: \"Code text content.\" },\n source: { type: \"string\", dynamic: true, description: \"Alias for code.\" },\n content: { type: \"string\", dynamic: true, description: \"Alias for code.\" },\n language: { type: \"string\", description: \"Language label.\" },\n title: { type: \"string\", description: \"Code block title.\" },\n icon: { type: \"string\", description: \"Icon name shown before the title.\" },\n lineNumbers: { type: \"boolean\", default: true, description: \"Show line numbers.\" }\n },\n children: noChildren,\n examples: [example(\"code-block\", {\n namespace: \"doc_code_block_typical\",\n layout: {\n \"code-block:config\": {\n title: \"Config\",\n icon: \"code\",\n language: \"js\",\n code: \"export const enabled = true;\"\n }\n }\n })]\n});\n\n// src/components/entries/collapsible.spec.ts\nvar collapsibleSpec = component({\n type: \"collapsible\",\n category: \"Disclosure\",\n title: \"Collapsible\",\n summary: \"Single expandable region.\",\n description: \"Use collapsible to show or hide one related content region.\",\n props: {\n open: { type: \"boolean\", default: false, dynamic: true, description: \"Expanded state.\" },\n trigger: { type: \"string\", dynamic: true, description: \"Trigger button text.\" },\n icon: { type: \"string\", description: \"Icon name shown before trigger text.\" },\n content: { type: \"string\", dynamic: true, description: \"Static body content.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when open state changes.\" }\n },\n children: childContent,\n examples: [example(\"collapsible\", {\n namespace: \"doc_collapsible_typical\",\n layout: {\n \"collapsible:more\": {\n open: true,\n trigger: \"Details\",\n icon: \"caret-circle-down\",\n content: \"This secondary content can be collapsed.\"\n }\n }\n })]\n});\n\n// src/components/entries/column.spec.ts\nvar columnSpec = component({\n type: \"column\",\n category: \"Layout\",\n title: \"Column\",\n summary: \"Vertical layout container.\",\n description: \"Use column to stack child components vertically in field order.\",\n props: {},\n children: childContent,\n examples: [example(\"column\", {\n namespace: \"doc_column_typical\",\n layout: {\n \"column:form\": {\n \"input:name\": {\n placeholder: \"Name\"\n },\n \"input:email\": {\n placeholder: \"Email\"\n },\n \"button:save\": {\n label: \"Save\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/divider.spec.ts\nvar dividerSpec = component({\n type: \"divider\",\n category: \"Content\",\n title: \"Divider\",\n summary: \"Visual separator.\",\n description: \"Use divider to separate related regions, optionally with a label.\",\n props: {\n label: { type: \"string\", dynamic: true, description: \"Text shown in the divider.\" },\n icon: { type: \"string\", description: \"Icon name shown before the label.\" }\n },\n children: noChildren,\n examples: [example(\"divider\", {\n namespace: \"doc_divider_typical\",\n layout: {\n \"column:content\": {\n \"text:top\": {\n text: \"Above\"\n },\n \"divider:line\": {\n label: \"Divider\",\n icon: \"flag\"\n },\n \"text:bottom\": {\n text: \"Below\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/formula.spec.ts\nvar formulaSpec = component({\n type: \"formula\",\n category: \"Display\",\n title: \"Formula\",\n summary: \"Reactive KaTeX formula display.\",\n description: \"Use formula to render SlexKit state and computed values through KaTeX.\",\n props: {\n tex: { type: \"string\", dynamic: true, description: \"KaTeX source to render.\" },\n formula: { type: \"string\", dynamic: true, description: \"Alias for tex.\" },\n value: { type: \"string\", dynamic: true, description: \"Alias for tex.\" },\n displayMode: { type: \"boolean\", default: true, description: \"Render as display math when true; inline math when false.\" },\n display: { type: \"boolean\", default: true, description: \"Alias for displayMode.\" },\n block: { type: \"boolean\", default: true, description: \"Alias for displayMode.\" }\n },\n children: noChildren,\n examples: [example(\"formula\", {\n namespace: \"doc_formula_typical\",\n g: {\n r: 1e4,\n c: 100,\n fc: 159.15\n },\n layout: {\n \"formula:cutoff\": {\n $tex: \"'f_c = \\\\\\\\frac{1}{2\\\\\\\\pi RC} = ' + g.fc + '\\\\\\\\text{ Hz}'\"\n }\n }\n })]\n});\n\n// src/components/entries/grid.spec.ts\nvar gridSpec = component({\n type: \"grid\",\n category: \"Layout\",\n title: \"Grid\",\n summary: \"Responsive grid container.\",\n description: \"Use grid to arrange child components in responsive columns.\",\n props: {\n columns: { type: \"number\", default: 1, dynamic: true, description: \"Base column count.\" },\n smColumns: { type: \"number\", dynamic: true, description: \"Column count at the small breakpoint.\" },\n mdColumns: { type: \"number\", dynamic: true, description: \"Column count at the medium breakpoint.\" },\n lgColumns: { type: \"number\", dynamic: true, description: \"Column count at the large breakpoint.\" },\n xlColumns: { type: \"number\", dynamic: true, description: \"Column count at the extra-large breakpoint.\" },\n gap: { type: \"string\", dynamic: true, description: \"Spacing between grid items.\" }\n },\n children: childContent,\n examples: [example(\"grid\", {\n namespace: \"doc_grid_typical\",\n layout: {\n \"grid:stats\": {\n columns: 1,\n mdColumns: 3,\n \"stat:a\": {\n label: \"Requests\",\n value: \"1.2k\"\n },\n \"stat:b\": {\n label: \"Success\",\n value: \"98%\"\n },\n \"stat:c\": {\n label: \"Errors\",\n value: \"3\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/icon.spec.ts\nvar iconSpec = component({\n type: \"icon\",\n category: \"Component\",\n title: \"Icon\",\n summary: \"Shared icon field capability.\",\n description: \"Icon is a shared field capability, not an independent icon component type.\",\n props: {\n icon: { type: \"string\", description: \"Icon name resolved through the global icon manager.\" },\n iconOnly: { type: \"boolean\", description: \"Render only the icon while retaining an accessible label where supported.\" },\n \"items[].icon\": { type: \"string\", description: \"Accordion item trigger icon.\" },\n \"options[].icon\": { type: \"string\", description: \"Select or radio option icon.\" },\n \"columns[].icon\": { type: \"string\", description: \"Table column header icon.\" },\n \"tabs[].icon\": { type: \"string\", description: \"Tab trigger icon.\" },\n \"tabs[].iconOnly\": { type: \"boolean\", description: \"Tab trigger icon-only mode.\" }\n },\n children: noChildren,\n examples: [example(\"button\", { label: \"Settings\", icon: \"gear-six\", iconOnly: true, variant: \"ghost\" }, \"Icon field usage\")]\n});\n\n// src/components/entries/input.spec.ts\nvar inputSpec = component({\n type: \"input\",\n category: \"Input\",\n title: \"Input\",\n summary: \"Text or engineering-value input.\",\n description: \"Use input for editable text and engineering numeric values.\",\n props: {\n value: { type: \"string\", dynamic: true, description: \"Current input value.\" },\n label: { type: \"string\", dynamic: true, description: \"Input label.\" },\n unit: { type: \"string\", dynamic: true, description: \"Trailing unit text.\" },\n description: { type: \"string\", dynamic: true, description: \"Assistive description below the input.\" },\n help: { type: \"string\", dynamic: true, description: \"Alias for description.\" },\n hint: { type: \"string\", dynamic: true, description: \"Alias for description.\" },\n error: { type: \"string\", dynamic: true, description: \"Error text shown below the input and linked with aria-describedby.\" },\n errorMessage: { type: \"string\", dynamic: true, description: \"Alias for error.\" },\n invalid: { type: \"boolean\", default: false, dynamic: true, description: \"Mark the input as invalid with aria-invalid and error styling.\" },\n placeholder: { type: \"string\", description: \"Placeholder text for empty values.\" },\n type: { type: \"string\", default: \"text\", description: \"Input value kind; use engineering for parsed engineering values.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable editing.\" },\n readonly: { type: \"boolean\", default: false, dynamic: true, description: \"Make the input read-only.\" },\n readOnly: { type: \"boolean\", default: false, dynamic: true, description: \"Alias for readonly.\" },\n required: { type: \"boolean\", default: false, dynamic: true, description: \"Mark the input as required.\" },\n id: { type: \"string\", description: \"Native input id; defaults to a stable id derived from the component name.\" },\n name: { type: \"string\", description: \"Native input name attribute.\" },\n min: { type: \"string | number\", dynamic: true, description: \"Minimum value used by numeric input controls.\" },\n max: { type: \"string | number\", dynamic: true, description: \"Maximum value used by numeric input controls.\" },\n step: { type: \"string | number\", dynamic: true, description: \"Step size used by numeric input controls.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when the value changes.\" }\n },\n children: noChildren,\n examples: [example(\"input\", {\n namespace: \"doc_input_typical\",\n layout: {\n \"input:name\": {\n label: \"Project\",\n value: \"SlexKit\",\n placeholder: \"Enter name\",\n description: \"Visible labels keep form fields scannable.\"\n }\n }\n })]\n});\n\n// src/components/entries/link.spec.ts\nvar linkSpec = component({\n type: \"link\",\n category: \"Content\",\n title: \"Link\",\n summary: \"Inline navigation link.\",\n description: \"Use link to navigate to another page or resource.\",\n props: {\n href: { type: \"string\", description: \"Target URL.\" },\n text: { type: \"string\", dynamic: true, description: \"Visible link text.\" },\n label: { type: \"string\", dynamic: true, description: \"Alias for text.\" },\n content: { type: \"string\", dynamic: true, description: \"Alias for text.\" },\n icon: { type: \"string\", description: \"Icon name shown before link text.\" },\n target: { type: \"string\", description: \"Native link target attribute.\" },\n variant: { type: \"string\", values: [\"default\", \"muted\"], default: \"default\", description: \"Link visual variant.\" }\n },\n children: noChildren,\n examples: [example(\"link\", {\n namespace: \"doc_link_typical\",\n layout: {\n \"column:links\": {\n \"link:docs\": {\n href: \"/components\",\n icon: \"arrow-square-out\",\n text: \"View components\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/playground.spec.ts\nvar playgroundSpec = component({\n type: \"playground\",\n category: \"Tooling\",\n title: \"Playground\",\n summary: \"Interactive source preview.\",\n description: \"Use playground in documentation surfaces to render editable SlexKit or Markdown examples.\",\n props: {\n source: { type: \"object | string\", description: \"SlexKit or Markdown source to preview.\" },\n sourceType: { type: \"string\", values: [\"slex\", \"markdown\", \"auto-markdown\"], default: \"slex\", description: \"Source parser mode.\" },\n title: { type: \"string\", description: \"Playground title.\" },\n previewAlign: { type: \"string\", values: [\"center\", \"start\"], default: \"center\", description: \"Vertical preview alignment in render mode.\" },\n alignPreview: { type: \"string\", values: [\"center\", \"start\"], description: \"Alias for previewAlign.\" },\n previewPlacement: { type: \"string\", values: [\"center\", \"start\"], description: \"Alias for previewAlign.\" },\n previewMinHeight: { type: \"string\", description: \"Minimum preview area height.\" },\n previewMaxWidth: { type: \"string\", description: \"Maximum preview content width.\" },\n themeToggle: { type: \"boolean\", default: false, description: \"Show the theme toggle action.\" },\n showThemeToggle: { type: \"boolean\", default: false, description: \"Alias for themeToggle.\" },\n enableThemeToggle: { type: \"boolean\", default: false, description: \"Alias for themeToggle.\" },\n themeLabel: { type: \"string\", description: \"Accessible label for the theme toggle action.\" },\n themeToggleLabel: { type: \"string\", description: \"Alias for themeLabel.\" },\n sourceTypeLabel: { type: \"string\", description: \"Accessible label for the source type selector.\" },\n copyLabel: { type: \"string\", description: \"Accessible label for the copy source action.\" },\n openWebLabel: { type: \"string\", description: \"Accessible label for opening the source in the standalone playground.\" },\n webUrl: { type: \"string\", description: \"Standalone playground URL used by the open action.\" },\n playgroundUrl: { type: \"string\", description: \"Alias for webUrl.\" }\n },\n children: noChildren,\n examples: [example(\"playground\", {\n namespace: \"doc_playground_typical\",\n layout: {\n \"playground:demo\": {\n title: \"Stat Playground\",\n previewMinHeight: \"180px\",\n source: {\n namespace: \"inner_stat_demo\",\n layout: {\n \"stat:value\": {\n label: \"Requests\",\n value: \"1.2k\",\n unit: \"/min\"\n }\n }\n }\n }\n }\n })]\n});\n\n// src/components/entries/progress.spec.ts\nvar progressSpec = component({\n type: \"progress\",\n category: \"Feedback\",\n title: \"Progress\",\n summary: \"Progress bar.\",\n description: \"Use progress to show completion as a percentage.\",\n props: {\n value: { type: \"number\", default: 0, dynamic: true, description: \"Progress percentage from 0 to 100.\" },\n label: { type: \"string\", dynamic: true, description: \"Progress label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the label.\" },\n indeterminate: { type: \"boolean\", default: false, dynamic: true, description: \"Render an indeterminate progress state without aria-valuenow.\" }\n },\n children: noChildren,\n examples: [example(\"progress\", {\n namespace: \"doc_progress_typical\",\n layout: {\n \"progress:build\": {\n label: \"Build progress\",\n icon: \"gear-six\",\n value: 64\n }\n }\n })]\n});\n\n// src/components/entries/radio-group.spec.ts\nvar radioGroupSpec = component({\n type: \"radio-group\",\n category: \"Input\",\n title: \"Radio Group\",\n summary: \"Single-choice option group.\",\n description: \"Use radio-group for one-of-many choices.\",\n props: {\n value: { type: \"string\", dynamic: true, description: \"Current selected value.\" },\n label: { type: \"string\", dynamic: true, description: \"Group label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the group label.\" },\n options: { type: \"array\", description: \"Options with label, value, and optional icon.\" },\n \"options[].icon\": { type: \"string\", description: \"Icon name shown before a single option label.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable every radio option in the group.\" },\n orientation: { type: \"string\", values: [\"vertical\", \"horizontal\"], default: \"vertical\", description: \"Radio option layout direction.\" },\n haptic: { type: \"boolean\", default: true, description: \"Enable vibration feedback on supported devices.\" },\n haptics: { type: \"boolean\", default: true, description: \"Alias for haptic.\" },\n name: { type: \"string\", description: \"Native radio group name shared by options.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when selection changes.\" }\n },\n children: noChildren,\n examples: [example(\"radio-group\", {\n namespace: \"doc_radio_group_typical\",\n layout: {\n \"radio-group:mode\": {\n label: \"Mode\",\n icon: \"sliders-horizontal\",\n value: \"auto\",\n options: [\n {\n label: \"Auto\",\n value: \"auto\",\n icon: \"sparkle\"\n },\n {\n label: \"Manual\",\n value: \"manual\",\n icon: \"wrench\"\n }\n ]\n }\n }\n })]\n});\n\n// src/components/entries/row.spec.ts\nvar rowSpec = component({\n type: \"row\",\n category: \"Layout\",\n title: \"Row\",\n summary: \"Horizontal layout container.\",\n description: \"Use row to place child components horizontally in field order.\",\n props: {\n justify: { type: \"string\", values: [\"start\", \"center\", \"end\", \"space-between\", \"space-around\"], default: \"start\", description: \"Main-axis distribution.\" },\n align: { type: \"string\", values: [\"start\", \"center\", \"end\", \"baseline\", \"stretch\"], default: \"center\", description: \"Cross-axis alignment.\" },\n gap: { type: \"string\", dynamic: true, description: \"Spacing between children.\" }\n },\n children: childContent,\n examples: [example(\"row\", {\n namespace: \"doc_row_typical\",\n layout: {\n \"row:toolbar\": {\n justify: \"space-between\",\n \"text:title\": {\n text: \"Runtime status\"\n },\n \"button:refresh\": {\n label: \"Refresh\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/section.spec.ts\nvar sectionSpec = component({\n type: \"section\",\n category: \"Content\",\n title: \"Section\",\n summary: \"Page section with optional heading chrome.\",\n description: \"Use section to group page content with title, subtitle, and optional action link.\",\n props: {\n title: { type: \"string\", dynamic: true, description: \"Section title.\" },\n icon: { type: \"string\", description: \"Icon name shown before the title.\" },\n eyebrow: { type: \"string\", dynamic: true, description: \"Small label above the title.\" },\n subtitle: { type: \"string\", dynamic: true, description: \"Subtitle text below the title.\" },\n actionLabel: { type: \"string\", dynamic: true, description: \"Optional action link label.\" },\n actionHref: { type: \"string\", description: \"Optional action link target.\" }\n },\n children: childContent,\n examples: [example(\"section\", {\n namespace: \"doc_section_typical\",\n layout: {\n \"section:overview\": {\n eyebrow: \"Dashboard\",\n title: \"Runtime overview\",\n icon: \"chart-bar\",\n subtitle: \"This section groups the most important state.\",\n \"stat:latency\": {\n label: \"Latency\",\n value: \"42\",\n unit: \"ms\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/select.spec.ts\nvar selectSpec = component({\n type: \"select\",\n category: \"Input\",\n title: \"Select\",\n summary: \"Dropdown selection input.\",\n description: \"Use select for compact single-choice selection from an option list.\",\n props: {\n label: { type: \"string\", dynamic: true, description: \"Select label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the top label.\" },\n value: { type: \"string\", dynamic: true, description: \"Current selected value.\" },\n options: { type: \"array\", description: \"Options with label, value, and optional icon.\" },\n \"options[].icon\": { type: \"string\", description: \"Icon name shown before an option label.\" },\n placeholder: { type: \"string\", description: \"Placeholder shown when no value is selected.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable the select trigger and native select.\" },\n required: { type: \"boolean\", default: false, dynamic: true, description: \"Require a non-placeholder value in the native select.\" },\n variant: { type: \"string\", values: [\"default\", \"toolbar\"], default: \"default\", description: \"Select surface variant.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when selection changes.\" }\n },\n children: noChildren,\n examples: [example(\"select\", {\n namespace: \"doc_select_typical\",\n layout: {\n \"select:env\": {\n label: \"Environment\",\n icon: \"server\",\n value: \"prod\",\n options: [\n {\n label: \"Development\",\n value: \"dev\",\n icon: \"code\"\n },\n {\n label: \"Production\",\n value: \"prod\",\n icon: \"rocket-launch\"\n }\n ]\n }\n }\n })]\n});\n\n// src/components/entries/slider.spec.ts\nvar sliderSpec = component({\n type: \"slider\",\n category: \"Input\",\n title: \"Slider\",\n summary: \"Numeric range input.\",\n description: \"Use slider for bounded numeric adjustments such as volume, brightness, or thresholds.\",\n props: {\n label: { type: \"string\", dynamic: true, description: \"Slider label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the label.\" },\n value: { type: \"number\", default: 0, dynamic: true, description: \"Current numeric value.\" },\n min: { type: \"number\", default: 0, dynamic: true, description: \"Minimum value.\" },\n max: { type: \"number\", default: 100, dynamic: true, description: \"Maximum value.\" },\n step: { type: \"number\", default: 1, dynamic: true, description: \"Step interval.\" },\n unit: { type: \"string\", dynamic: true, description: \"Unit shown after the value.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable the range input.\" },\n orientation: { type: \"string\", values: [\"horizontal\", \"vertical\"], default: \"horizontal\", description: \"Slider orientation metadata used for styling.\" },\n haptic: { type: \"boolean\", default: true, description: \"Enable vibration feedback on supported devices.\" },\n haptics: { type: \"boolean\", default: true, description: \"Alias for haptic.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when the value changes.\" }\n },\n children: noChildren,\n examples: [example(\"slider\", {\n namespace: \"doc_slider_typical\",\n layout: {\n \"slider:volume\": {\n label: \"Volume\",\n icon: \"speaker-high\",\n value: 42,\n min: 0,\n max: 100,\n step: 1,\n unit: \"%\"\n }\n }\n })]\n});\n\n// src/components/entries/stat.spec.ts\nvar statSpec = component({\n type: \"stat\",\n category: \"Display\",\n title: \"Stat\",\n summary: \"Metric display.\",\n description: \"Use stat to present a labeled metric value with optional unit and semantic tone.\",\n props: {\n label: { type: \"string\", dynamic: true, description: \"Metric label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the label.\" },\n value: { type: \"string | number\", dynamic: true, description: \"Metric value.\" },\n unit: { type: \"string\", dynamic: true, description: \"Unit shown after the value.\" },\n tone: { type: \"string\", values: semanticTones, description: \"Optional semantic tone.\" },\n animateInitial: { type: \"boolean\", default: false, description: \"Animate the initial rendered value.\" }\n },\n children: noChildren,\n examples: [example(\"stat\", {\n namespace: \"doc_stat_typical\",\n layout: {\n \"grid:stats\": {\n columns: 2,\n \"stat:requests\": {\n label: \"Requests\",\n icon: \"activity\",\n value: \"1.2k\",\n unit: \"/min\"\n },\n \"stat:success\": {\n label: \"Success\",\n icon: \"check-circle\",\n value: \"98.4\",\n unit: \"%\",\n tone: \"success\"\n }\n }\n }\n })]\n});\n\n// src/components/entries/submit.spec.ts\nvar submitSpec = component({\n type: \"submit\",\n category: \"Action\",\n title: \"Submit\",\n summary: \"ToolHost submit and ignore controls.\",\n description: \"Use submit inside tool templates to return selected state fields to the host.\",\n props: {\n submitLabel: { type: \"string\", default: \"Submit\", description: \"Submit button text.\" },\n ignoreLabel: { type: \"string\", default: \"Ignore\", description: \"Ignore button text.\" },\n returnKeys: { type: \"string[]\", description: \"State field paths returned to ToolHost.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable submit action.\" }\n },\n children: noChildren,\n examples: [example(\"submit\", {\n namespace: \"doc_submit_typical\",\n layout: {\n \"column:tool\": {\n \"input:title\": {\n value: \"Release note\",\n placeholder: \"Title\"\n },\n \"submit:done\": {\n submitLabel: \"Submit\",\n ignoreLabel: \"Ignore\",\n returnKeys: [\n \"title\"\n ]\n }\n }\n }\n })]\n});\n\n// src/components/entries/switch.spec.ts\nvar switchSpec = component({\n type: \"switch\",\n category: \"Input\",\n title: \"Switch\",\n summary: \"Boolean switch input.\",\n description: \"Use switch for an on/off setting.\",\n props: {\n enabled: { type: \"boolean\", default: false, dynamic: true, description: \"Enabled state.\" },\n label: { type: \"string\", dynamic: true, description: \"Switch label.\" },\n icon: { type: \"string\", description: \"Icon name shown before the visible label.\" },\n disabled: { type: \"boolean\", default: false, dynamic: true, description: \"Disable the switch.\" },\n haptic: { type: \"boolean\", default: true, description: \"Enable vibration feedback on supported devices.\" },\n haptics: { type: \"boolean\", default: true, description: \"Alias for haptic.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when enabled state changes.\" }\n },\n children: noChildren,\n examples: [example(\"switch\", {\n namespace: \"doc_switch_typical\",\n layout: {\n \"switch:feature\": {\n enabled: true,\n label: \"Enable sync\",\n icon: \"arrows-clockwise\"\n }\n }\n })]\n});\n\n// src/components/entries/table.spec.ts\nvar tableSpec = component({\n type: \"table\",\n category: \"Data\",\n title: \"Table\",\n summary: \"Simple data table.\",\n description: \"Use table to render rows of keyed data against a column definition.\",\n props: {\n columns: { type: \"array\", description: \"Column definitions with key, label, and optional icon.\" },\n \"columns[].icon\": { type: \"string\", description: \"Icon name shown before a column label.\" },\n rows: { type: \"array\", description: \"Row data objects keyed by column key.\" },\n items: { type: \"array\", description: \"Alias for rows.\" }\n },\n children: noChildren,\n examples: [example(\"table\", {\n namespace: \"doc_table_typical\",\n layout: {\n \"table:routes\": {\n columns: [\n {\n key: \"name\",\n label: \"Name\",\n icon: \"text-t\"\n },\n {\n key: \"status\",\n label: \"Status\",\n icon: \"check-circle\"\n }\n ],\n rows: [\n {\n name: \"Parse\",\n status: \"ready\"\n },\n {\n name: \"Publish\",\n status: \"pending\"\n }\n ]\n }\n }\n })]\n});\n\n// src/components/entries/tabs.spec.ts\nvar tabsSpec = component({\n type: \"tabs\",\n category: \"Navigation\",\n title: \"Tabs\",\n summary: \"Tabbed view switcher.\",\n description: \"Use tabs to switch between named content panels.\",\n props: {\n value: { type: \"string\", dynamic: true, description: \"Current active tab value.\" },\n tabs: { type: \"array\", description: \"Tab definitions with value, label, content, icon, and iconOnly.\" },\n \"tabs[].icon\": { type: \"string\", description: \"Icon name shown before a tab trigger label.\" },\n \"tabs[].iconOnly\": { type: \"boolean\", description: \"Show only the tab icon while retaining label as accessible text.\" },\n orientation: { type: \"string\", values: [\"horizontal\", \"vertical\"], default: \"horizontal\", description: \"Tab list orientation.\" },\n onchange: { type: \"write-expression\", description: \"Write expression invoked when the active tab changes.\" }\n },\n children: noChildren,\n examples: [example(\"tabs\", {\n namespace: \"doc_tabs_typical\",\n layout: {\n \"tabs:main\": {\n value: \"overview\",\n tabs: [\n {\n value: \"overview\",\n label: \"Overview\"\n },\n {\n value: \"settings\",\n label: \"Settings\"\n }\n ]\n }\n }\n })]\n});\n\n// src/components/entries/text.spec.ts\nvar textSpec = component({\n type: \"text\",\n category: \"Display\",\n title: \"Text\",\n summary: \"Plain text display.\",\n description: \"Use text for short static or dynamic copy inside SlexKit layouts.\",\n props: {\n text: { type: \"string\", dynamic: true, description: \"Displayed text.\" },\n content: { type: \"string\", dynamic: true, description: \"Alias for text.\" },\n label: { type: \"string\", dynamic: true, description: \"Alias for text.\" },\n variant: { type: \"string\", values: [\"default\", \"muted\"], default: \"default\", description: \"Text visual variant.\" },\n color: { type: \"string\", dynamic: true, description: \"Optional CSS color for controlled previews.\" },\n size: { type: \"string | number\", dynamic: true, description: \"Optional font size. Numbers are treated as px.\" },\n class: { type: \"string\", description: \"Additional host-controlled CSS class.\" }\n },\n children: noChildren,\n examples: [example(\"text\", {\n namespace: \"doc_text_typical\",\n layout: {\n \"text:status\": {\n text: \"System is healthy\"\n }\n }\n })]\n});\n\n// src/components/entries/toast.spec.ts\nvar toastSpec = component({\n type: \"toast\",\n category: \"Feedback\",\n title: \"Toast\",\n summary: \"Transient notification.\",\n description: \"Use toast to show an inline notification with semantic status.\",\n props: {\n title: { type: \"string\", dynamic: true, description: \"Toast title.\" },\n heading: { type: \"string\", dynamic: true, description: \"Alias for title.\" },\n label: { type: \"string\", dynamic: true, description: \"Alias for title.\" },\n icon: { type: \"string\", description: \"Icon name shown at the left of the toast.\" },\n description: { type: \"string\", dynamic: true, description: \"Toast body text.\" },\n text: { type: \"string\", dynamic: true, description: \"Alias for description.\" },\n message: { type: \"string\", dynamic: true, description: \"Alias for description.\" },\n content: { type: \"string\", dynamic: true, description: \"Alias for description.\" },\n type: { type: \"string\", values: [\"info\", \"success\", \"warning\", \"danger\"], default: \"info\", description: \"Semantic notification type.\" },\n tone: { type: \"string\", values: [\"info\", \"success\", \"warning\", \"danger\"], default: \"info\", description: \"Alias for type.\" },\n duration: { type: \"number\", description: \"Auto-hide delay in milliseconds.\" },\n dismissable: { type: \"boolean\", default: true, description: \"Show a close button.\" },\n dismissible: { type: \"boolean\", default: true, description: \"Alias for dismissable.\" },\n closeLabel: { type: \"string\", default: \"Close notification\", description: \"Accessible close button label.\" },\n closeAriaLabel: { type: \"string\", description: \"Alias for closeLabel.\" }\n },\n children: noChildren,\n examples: [example(\"toast\", {\n namespace: \"doc_toast_typical\",\n layout: {\n \"toast:saved\": {\n type: \"success\",\n title: \"Saved\",\n icon: \"check-circle\",\n description: \"Changes have been written.\"\n }\n }\n })]\n});\n\n// src/components/entries/specs.ts\nvar componentSpecs = [\n accordionSpec,\n badgeSpec,\n buttonSpec,\n calloutSpec,\n cardSpec,\n checkboxSpec,\n codeBlockSpec,\n collapsibleSpec,\n columnSpec,\n dividerSpec,\n formulaSpec,\n gridSpec,\n iconSpec,\n inputSpec,\n linkSpec,\n playgroundSpec,\n progressSpec,\n radioGroupSpec,\n rowSpec,\n sectionSpec,\n selectSpec,\n sliderSpec,\n statSpec,\n submitSpec,\n switchSpec,\n tableSpec,\n tabsSpec,\n textSpec,\n toastSpec\n];\n\n// src/components/spec-registry.ts\nvar publicComponentTypes = componentSpecs.map((spec) => spec.type);\nvar componentSpecByType = new Map(componentSpecs.map((spec) => [spec.type, spec]));\n\n// src/engine/capabilities.ts\nvar slexkitStdlibDocs = [\n {\n name: \"math\",\n summary: \"Small numeric helpers for common interactive calculations.\",\n functions: [\n { name: \"std.math.clamp\", signature: \"clamp(value, min, max)\", summary: \"Clamp a number into a range.\", pure: true, example: \"std.math.clamp(g.score, 0, 100)\" },\n { name: \"std.math.round\", signature: \"round(value, digits = 0)\", summary: \"Round with a fixed number of decimal digits.\", pure: true, example: \"std.math.round(g.latency, 1)\" },\n { name: \"std.math.safeDivide\", signature: \"safeDivide(numerator, denominator, fallback = 0)\", summary: \"Divide with a fallback for zero or invalid denominators.\", pure: true, example: \"std.math.safeDivide(g.used, g.total, 0)\" },\n { name: \"std.math.percent\", signature: \"percent(part, total, digits = 1)\", summary: \"Return part / total as a percentage number.\", pure: true, example: \"std.math.percent(g.done, g.total, 1)\" },\n { name: \"std.math.lerp\", signature: \"lerp(start, end, t)\", summary: \"Linear interpolation.\", pure: true, example: \"std.math.lerp(0, 100, g.progress)\" }\n ]\n },\n {\n name: \"stats\",\n summary: \"Finite-number aggregations for arrays.\",\n functions: [\n { name: \"std.stats.sum\", signature: \"sum(values)\", summary: \"Sum finite numeric values. Empty arrays return 0.\", pure: true, example: \"std.stats.sum(g.samples)\" },\n { name: \"std.stats.mean\", signature: \"mean(values)\", summary: \"Average finite numeric values. Empty arrays return NaN.\", pure: true, example: \"std.stats.mean(g.samples)\" },\n { name: \"std.stats.min\", signature: \"min(values)\", summary: \"Minimum finite numeric value. Empty arrays return NaN.\", pure: true, example: \"std.stats.min(g.samples)\" },\n { name: \"std.stats.max\", signature: \"max(values)\", summary: \"Maximum finite numeric value. Empty arrays return NaN.\", pure: true, example: \"std.stats.max(g.samples)\" },\n { name: \"std.stats.median\", signature: \"median(values)\", summary: \"Median finite numeric value. Empty arrays return NaN.\", pure: true, example: \"std.stats.median(g.samples)\" }\n ]\n },\n {\n name: \"format\",\n summary: \"Deterministic display formatting with en-US defaults.\",\n functions: [\n { name: \"std.format.fixed\", signature: \"fixed(value, digits = 2)\", summary: \"Format a number with fixed decimal places.\", pure: true, example: \"std.format.fixed(g.voltage, 3)\" },\n { name: \"std.format.number\", signature: \"number(value, digits = 0, locale = 'en-US')\", summary: \"Locale number formatting.\", pure: true, example: \"std.format.number(g.requests)\" },\n { name: \"std.format.compact\", signature: \"compact(value, digits = 1, locale = 'en-US')\", summary: \"Compact number formatting.\", pure: true, example: \"std.format.compact(g.users)\" },\n { name: \"std.format.percent\", signature: \"percent(ratio, digits = 1)\", summary: \"Format a ratio as a percentage string.\", pure: true, example: \"std.format.percent(g.done / g.total, 1)\" },\n { name: \"std.format.currency\", signature: \"currency(value, currency = 'USD', locale = 'en-US')\", summary: \"Format a currency value.\", pure: true, example: \"std.format.currency(g.revenue, 'USD')\" }\n ]\n },\n {\n name: \"units\",\n summary: \"Small unit display helpers for common dashboards.\",\n functions: [\n { name: \"std.units.withUnit\", signature: \"withUnit(value, unit, digits = 2)\", summary: \"Format a value with a unit suffix.\", pure: true, example: \"std.units.withUnit(g.power, 'W', 1)\" },\n { name: \"std.units.bytes\", signature: \"bytes(value, digits = 1)\", summary: \"Format bytes as B, KB, MB, GB, TB, or PB.\", pure: true, example: \"std.units.bytes(g.payloadBytes)\" },\n { name: \"std.units.duration\", signature: \"duration(ms, digits = 1)\", summary: \"Format milliseconds as ms, s, min, or h.\", pure: true, example: \"std.units.duration(g.elapsedMs)\" },\n { name: \"std.units.si\", signature: \"si(value, unit = '', digits = 2)\", summary: \"Format with SI prefixes.\", pure: true, example: \"std.units.si(g.frequency, 'Hz', 2)\" }\n ]\n }\n];\nvar slexkitRuntimeCapabilities = [\n { name: \"api.get\", policy: \"network\", signature: \"get(url, options)\", summary: \"Policy-gated GET request.\", example: \"await api.get('https://api.example.com/status')\", secureDefault: \"denied\", forbidden: [\"fetch(url)\", \"XMLHttpRequest\", \"WebSocket\"] },\n { name: \"api.post\", policy: \"network\", signature: \"post(url, body, options)\", summary: \"Policy-gated POST request.\", example: \"await api.post('https://api.example.com/items', { ok: true })\", secureDefault: \"denied\", forbidden: [\"fetch(url)\", \"XMLHttpRequest\", \"WebSocket\"] },\n { name: \"api.fetch\", policy: \"network\", signature: \"fetch(url, options)\", summary: \"Policy-gated GET or POST request.\", example: \"await api.fetch(url, { method: 'GET' })\", secureDefault: \"denied\", forbidden: [\"fetch(url)\", \"XMLHttpRequest\", \"WebSocket\"] },\n { name: \"api.setTimeout\", policy: \"timer\", signature: \"setTimeout(fn, ms)\", summary: \"Policy-gated timeout.\", example: \"api.setTimeout(function () { g.ready = true; }, 500)\", secureDefault: \"denied\", forbidden: [\"setTimeout(fn, ms)\"] },\n { name: \"api.clearTimeout\", policy: \"timer\", signature: \"clearTimeout(id)\", summary: \"Clear a policy-gated timeout.\", example: \"api.clearTimeout(g.timeoutId)\", secureDefault: \"denied\" },\n { name: \"api.setInterval\", policy: \"timer\", signature: \"setInterval(fn, ms)\", summary: \"Policy-gated interval.\", example: \"api.setInterval(function () { g.ticks += 1; }, 1000)\", secureDefault: \"denied\", forbidden: [\"setInterval(fn, ms)\"] },\n { name: \"api.clearInterval\", policy: \"timer\", signature: \"clearInterval(id)\", summary: \"Clear a policy-gated interval.\", example: \"api.clearInterval(g.intervalId)\", secureDefault: \"denied\" },\n { name: \"api.raf\", policy: \"animation\", signature: \"raf(fn)\", summary: \"Policy-gated animation frame.\", example: \"api.raf(function (time) { g.time = time; })\", secureDefault: \"denied\", forbidden: [\"requestAnimationFrame(fn)\"] },\n { name: \"api.cancelRaf\", policy: \"animation\", signature: \"cancelRaf(id)\", summary: \"Cancel a policy-gated animation frame.\", example: \"api.cancelRaf(g.rafId)\", secureDefault: \"denied\" },\n { name: \"api.createCanvas\", policy: \"canvas\", signature: \"createCanvas(width, height)\", summary: \"Create a policy-counted canvas.\", example: \"var canvas = api.createCanvas(320, 180)\", secureDefault: \"denied\" },\n { name: \"api.getCanvasContext\", policy: \"canvas\", signature: \"getCanvasContext(canvas, contextId, options)\", summary: \"Get a policy-checked canvas context.\", example: \"var ctx = api.getCanvasContext(canvas, '2d')\", secureDefault: \"denied\" },\n { name: \"api.onDispose\", policy: \"lifecycle\", signature: \"onDispose(fn)\", summary: \"Register runtime cleanup.\", example: \"api.onDispose(function () { g.closed = true; })\", secureDefault: \"available\" },\n { name: \"api.now\", policy: \"lifecycle\", signature: \"now()\", summary: \"Runtime clock.\", example: \"api.now()\", secureDefault: \"available\" },\n { name: \"api.isTimeoutError\", policy: \"diagnostics\", signature: \"isTimeoutError(error)\", summary: \"Check timeout errors.\", example: \"api.isTimeoutError(error)\", secureDefault: \"available\" },\n { name: \"api.isNetworkError\", policy: \"diagnostics\", signature: \"isNetworkError(error)\", summary: \"Check network errors.\", example: \"api.isNetworkError(error)\", secureDefault: \"available\" },\n { name: \"api.isPolicyError\", policy: \"diagnostics\", signature: \"isPolicyError(error)\", summary: \"Check policy errors.\", example: \"api.isPolicyError(error)\", secureDefault: \"available\" },\n { name: \"api.errorMessage\", policy: \"diagnostics\", signature: \"errorMessage(error)\", summary: \"Extract a displayable error message.\", example: \"api.errorMessage(error)\", secureDefault: \"available\" }\n];\nvar slexkitStdlibFunctionNames = slexkitStdlibDocs.flatMap((namespace) => namespace.functions.map((fn) => fn.name));\nvar slexkitRuntimeCapabilityNames = slexkitRuntimeCapabilities.map((capability) => capability.name);\n\n// src/engine/validation.ts\nvar componentSpecByType2 = new Map(componentSpecs.map((spec) => [spec.type, spec]));\nvar stdlibFunctions = new Set(slexkitStdlibFunctionNames);\nvar stdlibNamespaces = new Set(slexkitStdlibFunctionNames.map((name) => name.split(\".\").slice(0, 2).join(\".\")));\nvar apiMembers = new Set(slexkitRuntimeCapabilityNames);\nvar directiveProps = new Set([\"$if\", \"$for\", \"$key\"]);\nvar nativeSecureCapabilities = [\n { value: \"fetch\", pattern: /(?<!\\.)\\bfetch\\s*\\(/ },\n { value: \"XMLHttpRequest\", pattern: /\\bXMLHttpRequest\\b/ },\n { value: \"WebSocket\", pattern: /\\bWebSocket\\b/ },\n { value: \"setTimeout\", pattern: /(?<!\\.)\\bsetTimeout\\s*\\(/ },\n { value: \"requestAnimationFrame\", pattern: /(?<!\\.)\\brequestAnimationFrame\\s*\\(/ }\n];\nfunction collectMemberUsage(source, root) {\n const matches = source.matchAll(new RegExp(`\\\\b${root}\\\\.([A-Za-z_$][\\\\w$]*)(?:\\\\.([A-Za-z_$][\\\\w$]*))?`, \"g\"));\n const found = new Set;\n for (const match of matches) {\n found.add([root, match[1], match[2]].filter(Boolean).join(\".\"));\n }\n return [...found].sort();\n}\nfunction componentKeyType(key) {\n const colon = key.indexOf(\":\");\n return colon > 0 ? key.slice(0, colon) : null;\n}\nfunction isKnownProp(type, key) {\n if (directiveProps.has(key) || key.startsWith(\"on\"))\n return true;\n const spec = componentSpecByType2.get(type);\n if (!spec)\n return true;\n const propName = key.startsWith(\"$\") ? key.slice(1) : key;\n return propName in spec.props;\n}\nfunction walkComponents(value, warnings, usage, path = \"\") {\n if (!value || typeof value !== \"object\")\n return;\n for (const [key, child] of Object.entries(value)) {\n const childPath = path ? `${path}.${key}` : key;\n const type = componentKeyType(key);\n if (type) {\n usage.add(type);\n const spec = componentSpecByType2.get(type);\n if (!spec) {\n warnings.push({\n code: \"unknown_component\",\n message: `Unknown SlexKit component '${type}'.`,\n path: childPath,\n value: type\n });\n }\n if (child && typeof child === \"object\") {\n for (const propName of Object.keys(child)) {\n if (componentKeyType(propName))\n continue;\n if (!isKnownProp(type, propName)) {\n warnings.push({\n code: \"unknown_prop\",\n message: `Unknown prop '${propName}' on component '${type}'.`,\n path: `${childPath}.${propName}`,\n value: propName\n });\n }\n }\n }\n }\n walkComponents(child, warnings, usage, childPath);\n }\n}\nfunction sourceWarnings(source, mode) {\n const warnings = [];\n const stdlibUsage = collectMemberUsage(source, \"std\");\n const apiUsage = collectMemberUsage(source, \"api\");\n for (const name of stdlibUsage) {\n if (stdlibFunctions.has(name) || stdlibNamespaces.has(name))\n continue;\n warnings.push({\n code: \"unknown_std_member\",\n message: `Unknown SlexKit stdlib member '${name}'.`,\n value: name\n });\n }\n for (const name of apiUsage) {\n if (apiMembers.has(name))\n continue;\n warnings.push({\n code: \"unknown_api_member\",\n message: `Unknown SlexKit runtime API member '${name}'.`,\n value: name\n });\n }\n if (mode === \"secure\") {\n for (const capability of nativeSecureCapabilities) {\n if (capability.pattern.test(source)) {\n warnings.push({\n code: \"native_secure_capability\",\n message: `Native '${capability.value}' is not supported in secure mode. Use policy-gated api.* instead.`,\n value: capability.value\n });\n }\n }\n }\n return { warnings, stdlibUsage, apiUsage };\n}\nfunction validateSlexSource(source, options = {}) {\n const mode = options.mode ?? \"trusted\";\n const parsed = parseSlexSource(source);\n const usage = new Set;\n const { warnings, stdlibUsage, apiUsage } = sourceWarnings(source, mode);\n if (!parsed.ok) {\n return {\n ok: false,\n diagnostic: parsed.diagnostic,\n warnings,\n componentUsage: [],\n stdlibUsage,\n apiUsage\n };\n }\n walkComponents(parsed.value, warnings, usage);\n return {\n ok: true,\n value: parsed.value,\n warnings,\n componentUsage: [...usage].sort(),\n stdlibUsage,\n apiUsage\n };\n}\n// src/engine/markdown-runtime.ts\nvar DEFAULT_POLICY = {};\nfunction isRecord(value) {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\nfunction isRenderableSource(value) {\n if (!isRecord(value))\n return false;\n if (\"layout\" in value)\n return isRecord(value.layout) && Object.keys(value.layout).length > 0;\n if (\"namespace\" in value || \"g\" in value)\n return false;\n return Object.keys(value).some((key) => key.includes(\":\"));\n}\nfunction bareLayoutFromSource(value) {\n const layout = { ...value };\n delete layout.slex;\n delete layout.namespace;\n delete layout.g;\n delete layout.layout;\n return layout;\n}\nfunction isStateOnlySource(value) {\n return isRecord(value) && !isRenderableSource(value) && ((\"slex\" in value) || (\"namespace\" in value) || (\"g\" in value));\n}\nfunction isSlexExpressionEnvelope(value) {\n return isRecord(value) && ((\"slex\" in value) || (\"namespace\" in value) || (\"g\" in value) || (\"layout\" in value));\n}\nfunction parseTrustedSource(source) {\n if (typeof source !== \"string\")\n return source;\n const parsed = parseSlexSource(source);\n return parsed.ok ? parsed.value : source;\n}\nfunction scopedTrustedSource(source, artifactId) {\n if (!artifactId || !isSlexExpressionEnvelope(source)) {\n return source;\n }\n if (!(\"layout\" in source) && isRenderableSource(source)) {\n return {\n slex: typeof source.slex === \"string\" ? source.slex : undefined,\n namespace: `${artifactId}::${String(source.namespace || \"default\")}`,\n g: isRecord(source.g) ? source.g : {},\n layout: bareLayoutFromSource(source)\n };\n }\n return {\n ...source,\n namespace: `${artifactId}::${String(source.namespace || \"default\")}`\n };\n}\nfunction namespaceFromSource(source) {\n if (!isSlexExpressionEnvelope(source))\n return;\n return String(source.namespace || \"default\");\n}\nfunction compareDocumentOrder(a, b) {\n if (a === b)\n return 0;\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING)\n return -1;\n if (position & Node.DOCUMENT_POSITION_PRECEDING)\n return 1;\n return 0;\n}\nfunction createSlexKitMarkdownRuntimeHost(initialOptions = {}) {\n let options = {\n mode: \"trusted\",\n secureFrame: true,\n policy: DEFAULT_POLICY,\n ...initialOptions\n };\n const cleanups = new Map;\n const artifactContainers = new Map;\n const artifactSources = new Map;\n const secureArtifactAnchors = new Map;\n const secureArtifactCleanups = new Map;\n const trustedArtifactNamespaces = new Map;\n function rememberTrustedArtifactNamespace(artifactId, source) {\n if (!artifactId)\n return;\n const namespace = namespaceFromSource(source);\n if (!namespace)\n return;\n let namespaces = trustedArtifactNamespaces.get(artifactId);\n if (!namespaces) {\n namespaces = new Set;\n trustedArtifactNamespaces.set(artifactId, namespaces);\n }\n namespaces.add(`${artifactId}::${namespace}`);\n }\n function disposeTrustedArtifactNamespaces(artifactId) {\n const namespaces = trustedArtifactNamespaces.get(artifactId);\n if (!namespaces)\n return;\n for (const namespace of namespaces)\n disposeNamespace(namespace);\n trustedArtifactNamespaces.delete(artifactId);\n }\n function composeSecureArtifactSource(artifactId) {\n const sources = artifactSources.get(artifactId);\n if (!sources)\n return \"\";\n const orderedSources = Array.from(sources.entries()).sort(([a], [b]) => compareDocumentOrder(a, b)).map(([, source]) => source);\n const serializedSources = JSON.stringify(orderedSources.map((source) => ({\n kind: typeof source === \"string\" ? \"script\" : \"json\",\n source: encodeURIComponent(typeof source === \"string\" ? source : JSON.stringify(source))\n })));\n const artifactPrefix = JSON.stringify(`${artifactId}::`);\n return `(() => {\n const __sources = ${serializedSources}.map((entry) => ({\n kind: entry.kind,\n source: decodeURIComponent(entry.source),\n }));\n const __isRecord = (value) => !!value && typeof value === \"object\" && !Array.isArray(value);\n const __merge = (target, source) => {\n if (!__isRecord(source)) return target;\n for (const [key, value] of Object.entries(source)) {\n if (__isRecord(value) && __isRecord(target[key])) __merge(target[key], value);\n else target[key] = value;\n }\n return target;\n };\n const __isRenderableTree = (value) => __isRecord(value) && Object.keys(value).some((key) => key.includes(\":\"));\n const __artifactPrefix = ${artifactPrefix};\n const __target = { slex: \"0.1\", namespace: __artifactPrefix + \"default\", g: {}, layout: {} };\n const __layouts = [];\n for (const __entry of __sources) {\n const __script = __entry.kind === \"json\" ? JSON.parse(__entry.source) : (0, eval)(\"(\" + __entry.source + \")\");\n if (!__isRecord(__script)) continue;\n if (\"slex\" in __script) __target.slex = String(__script.slex || \"0.1\");\n if (\"namespace\" in __script) __target.namespace = __artifactPrefix + String(__script.namespace || \"default\");\n if (__isRecord(__script.g)) __merge(__target.g, __script.g);\n if (__isRecord(__script.layout) && Object.keys(__script.layout).length > 0) __layouts.push(__script.layout);\n else if (!(\"namespace\" in __script) && !(\"g\" in __script) && !(\"layout\" in __script) && __isRenderableTree(__script)) {\n const { slex: __slex, ...__layout } = __script;\n __layouts.push(__layout);\n }\n }\n if (__layouts.length === 1) {\n __target.layout = { \"column:block_0\": Object.assign({}, __layouts[0], { id: \"slexkit-slot-slot_0\" }) };\n } else if (__layouts.length > 1) {\n __target.layout = {\n \"column:artifact\": Object.fromEntries(\n __layouts.map((layout, index) => [\"column:block_\" + index, Object.assign({}, layout, { id: \"slexkit-slot-slot_\" + index })]),\n ),\n };\n }\n return __target;\n })()`;\n }\n function addArtifactContainer(artifactId, container) {\n let containers = artifactContainers.get(artifactId);\n if (!containers) {\n containers = new Set;\n artifactContainers.set(artifactId, containers);\n }\n containers.add(container);\n }\n function addArtifactSource(block) {\n const artifactId = block.artifactId;\n let sources = artifactSources.get(artifactId);\n if (!sources) {\n sources = new Map;\n artifactSources.set(artifactId, sources);\n }\n sources.set(block.container, block.source);\n addArtifactContainer(artifactId, block.container);\n return artifactId;\n }\n function clearSecureSlot(container) {\n delete container.dataset.slexkitSecureArtifactSlot;\n container.replaceChildren();\n }\n function selectSecureArtifactAnchor(artifactId) {\n const containers = artifactContainers.get(artifactId);\n if (!containers?.size)\n return;\n return Array.from(containers).sort(compareDocumentOrder)[0];\n }\n function remountSecureArtifact(artifactId, theme) {\n const anchor = secureArtifactAnchors.get(artifactId);\n if (!anchor)\n return;\n secureArtifactCleanups.get(artifactId)?.();\n secureArtifactCleanups.delete(artifactId);\n clearSecureSlot(anchor);\n const containers = artifactContainers.get(artifactId) ?? new Set;\n const orderedContainers = Array.from(containers).sort(compareDocumentOrder);\n for (const container of containers) {\n if (container === anchor)\n continue;\n clearSecureSlot(container);\n container.dataset.slexkitSecureArtifactSlot = \"true\";\n }\n const cleanup = mountSecureArtifact(composeSecureArtifactSource(artifactId), anchor, {\n theme,\n dir: options.dir,\n labels: options.labels,\n policy: options.policy ?? DEFAULT_POLICY,\n hostAdapter: options.hostAdapter,\n frame: options.secureFrame ?? true,\n artifactSlots: orderedContainers.map((container, index) => ({\n id: `slot_${index}`,\n container\n }))\n });\n secureArtifactCleanups.set(artifactId, cleanup);\n }\n function mountSecureBlock(block) {\n if (!block.artifactId) {\n const cleanup2 = mountSecureArtifact(block.source, block.container, {\n theme: block.theme ?? options.theme,\n dir: block.dir ?? options.dir,\n labels: block.labels ?? options.labels,\n policy: options.policy ?? DEFAULT_POLICY,\n hostAdapter: options.hostAdapter,\n frame: options.secureFrame ?? true\n });\n return remember(block, cleanup2);\n }\n const artifactId = addArtifactSource(block);\n const anchor = selectSecureArtifactAnchor(artifactId);\n if (anchor)\n secureArtifactAnchors.set(artifactId, anchor);\n remountSecureArtifact(artifactId, block.theme ?? options.theme);\n const cleanup = () => {\n artifactSources.get(artifactId)?.delete(block.container);\n artifactContainers.get(artifactId)?.delete(block.container);\n cleanups.delete(block.container);\n clearSecureSlot(block.container);\n const sources = artifactSources.get(artifactId);\n const containers = artifactContainers.get(artifactId);\n if (!sources?.size || !containers?.size) {\n secureArtifactCleanups.get(artifactId)?.();\n secureArtifactCleanups.delete(artifactId);\n secureArtifactAnchors.delete(artifactId);\n artifactSources.delete(artifactId);\n artifactContainers.delete(artifactId);\n return;\n }\n if (secureArtifactAnchors.get(artifactId) === block.container) {\n const nextAnchor = selectSecureArtifactAnchor(artifactId);\n if (nextAnchor)\n secureArtifactAnchors.set(artifactId, nextAnchor);\n }\n remountSecureArtifact(artifactId, block.theme ?? options.theme);\n };\n cleanups.set(block.container, cleanup);\n return cleanup;\n }\n function remember(block, cleanup) {\n cleanups.set(block.container, cleanup);\n if (block.artifactId) {\n addArtifactContainer(block.artifactId, block.container);\n }\n return () => {\n cleanup();\n cleanups.delete(block.container);\n if (!block.artifactId)\n return;\n const containers = artifactContainers.get(block.artifactId);\n containers?.delete(block.container);\n if (containers?.size === 0)\n artifactContainers.delete(block.artifactId);\n };\n }\n function disposeBlock(container) {\n const cleanup = cleanups.get(container);\n if (!cleanup)\n return;\n cleanup();\n cleanups.delete(container);\n for (const [artifactId, containers] of artifactContainers) {\n containers.delete(container);\n artifactSources.get(artifactId)?.delete(container);\n if (secureArtifactAnchors.get(artifactId) === container) {\n const nextAnchor = selectSecureArtifactAnchor(artifactId);\n if (nextAnchor)\n secureArtifactAnchors.set(artifactId, nextAnchor);\n else\n secureArtifactAnchors.delete(artifactId);\n }\n if (containers.size === 0)\n artifactContainers.delete(artifactId);\n if (artifactSources.get(artifactId)?.size === 0)\n artifactSources.delete(artifactId);\n }\n }\n return {\n configure(nextOptions) {\n options = { ...options, ...nextOptions };\n },\n getMode() {\n return options.mode ?? \"trusted\";\n },\n mountBlock(block) {\n disposeBlock(block.container);\n block.container.replaceChildren();\n const mode = options.mode ?? \"trusted\";\n if (mode === \"secure\")\n return mountSecureBlock(block);\n const parsedSource = parseTrustedSource(block.source);\n rememberTrustedArtifactNamespace(block.artifactId, parsedSource);\n const trustedSource = scopedTrustedSource(parsedSource, block.artifactId);\n const stateOnly = block.stateOnly ?? isStateOnlySource(trustedSource);\n if (stateOnly) {\n const ok = ingest(trustedSource);\n if (!ok)\n throw new Error(\"Failed to parse Slex state block.\");\n return remember(block, () => {});\n }\n const theme = block.theme ?? options.theme;\n const cleanup = mount(trustedSource, block.container, {\n theme,\n dir: block.dir ?? options.dir,\n labels: block.labels ?? options.labels\n });\n return remember(block, cleanup);\n },\n disposeBlock,\n disposeArtifact(artifactId) {\n const containers = Array.from(artifactContainers.get(artifactId) ?? []);\n for (const container of containers)\n disposeBlock(container);\n secureArtifactCleanups.get(artifactId)?.();\n secureArtifactCleanups.delete(artifactId);\n secureArtifactAnchors.delete(artifactId);\n artifactContainers.delete(artifactId);\n artifactSources.delete(artifactId);\n disposeTrustedArtifactNamespaces(artifactId);\n },\n disposeAll() {\n for (const container of Array.from(cleanups.keys()))\n disposeBlock(container);\n for (const cleanup of Array.from(secureArtifactCleanups.values()))\n cleanup();\n secureArtifactCleanups.clear();\n secureArtifactAnchors.clear();\n artifactContainers.clear();\n artifactSources.clear();\n for (const artifactId of Array.from(trustedArtifactNamespaces.keys())) {\n disposeTrustedArtifactNamespaces(artifactId);\n }\n }\n };\n}\nvar globalMarkdownRuntimeHost;\nfunction installSlexKitMarkdownRuntimeHost(options = {}) {\n globalMarkdownRuntimeHost = createSlexKitMarkdownRuntimeHost(options);\n return globalMarkdownRuntimeHost;\n}\nfunction getSlexKitMarkdownRuntimeHost() {\n if (!globalMarkdownRuntimeHost) {\n globalMarkdownRuntimeHost = createSlexKitMarkdownRuntimeHost();\n }\n return globalMarkdownRuntimeHost;\n}\n\n// src/engine/index.ts\nvar defaultRuntimeUrl = typeof document !== \"undefined\" && typeof document.currentScript === \"object\" && document.currentScript && \"src\" in document.currentScript ? String(document.currentScript.src || \"\") : undefined;\nfunction setSlexKitRuntimeUrl(url) {\n defaultRuntimeUrl = url || undefined;\n}\nfunction getSlexKitRuntimeUrl() {\n return defaultRuntimeUrl;\n}\nfunction normalizeExpression(input) {\n if (!input || typeof input !== \"object\")\n return input;\n const hasProtocolMarker = \"slex\" in input;\n const hasEnvelopeField = \"namespace\" in input || \"g\" in input || \"layout\" in input;\n if (hasEnvelopeField)\n return input;\n const keys = Object.keys(input);\n if (keys.some((key) => key.includes(\":\"))) {\n const { slex, ...layout } = input;\n return {\n ...hasProtocolMarker ? { slex } : {},\n namespace: \"default\",\n g: {},\n layout\n };\n }\n return input;\n}\nfunction warnUnsupportedProtocol(expression) {\n if (expression.slex === undefined || expression.slex === SLEX_PROTOCOL_VERSION)\n return;\n console.warn(`[SlexKit] Slex protocol marker '${String(expression.slex)}' does not match supported protocol '${SLEX_PROTOCOL_VERSION}'.`);\n}\nfunction parseSourceOrExpression(input) {\n if (typeof input !== \"string\")\n return normalizeExpression(input);\n const parsed = parseSlexSource(input);\n if (!parsed.ok) {\n console.warn(\"[SlexKit] Failed to parse Slex source:\", parsed.error.message);\n return;\n }\n return normalizeExpression(parsed.value);\n}\nfunction applyExpression(expression) {\n warnUnsupportedProtocol(expression);\n const ns = expression.namespace || \"default\";\n const store = getStore(ns);\n if (expression.g) {\n try {\n deepMerge(store.g, expression.g);\n } catch (e) {\n console.warn(`[SlexKit][${ns}] Merge error, replacing entire g:`, e.message);\n for (const k of Object.keys(store.g)) {\n delete store.g[k];\n }\n Object.assign(store.g, expression.g);\n }\n }\n if (expression.layout) {\n store.layouts = [expression.layout];\n }\n}\nfunction hasThemeToken(el, token) {\n return getComputedStyle(el).getPropertyValue(token).trim().length > 0;\n}\nfunction resolveThemeMode(container, requested = \"auto\") {\n if (requested !== \"auto\")\n return requested;\n if (container.closest(\".slexkit-theme-uno, .slexkit-theme-flowbite\"))\n return \"uno\";\n return hasThemeToken(container, \"--primary\") && hasThemeToken(container, \"--background\") ? \"host-shadcn\" : \"uno\";\n}\nfunction resolveColorMode(container) {\n const scoped = container.closest(\".dark, .light, [data-theme='dark'], [data-theme='light']\");\n if (scoped?.classList.contains(\"dark\") || scoped?.dataset.theme === \"dark\")\n return \"dark\";\n if (scoped?.classList.contains(\"light\") || scoped?.dataset.theme === \"light\")\n return \"light\";\n const doc = container.ownerDocument || document;\n const docEl = doc.documentElement;\n if (docEl.classList.contains(\"dark\") || docEl.dataset.theme === \"dark\")\n return \"dark\";\n if (docEl.classList.contains(\"light\") || docEl.dataset.theme === \"light\")\n return \"light\";\n const scheme = getComputedStyle(docEl).colorScheme || getComputedStyle(container).colorScheme;\n if (scheme.split(/\\s+/).includes(\"dark\"))\n return \"dark\";\n if (scheme.split(/\\s+/).includes(\"light\"))\n return \"light\";\n return;\n}\nfunction applyDocumentColorMode(doc, mode) {\n if (!mode)\n return;\n doc.documentElement.classList.toggle(\"dark\", mode === \"dark\");\n doc.documentElement.classList.toggle(\"light\", mode === \"light\");\n doc.documentElement.dataset.theme = mode;\n}\nfunction resolveDirection(container, requested = \"auto\") {\n if (requested === \"ltr\" || requested === \"rtl\")\n return requested;\n const inherited = container.closest(\"[dir]\")?.dir || container.ownerDocument?.documentElement?.dir;\n return inherited === \"rtl\" ? \"rtl\" : \"ltr\";\n}\nfunction mount(input, container, options = {}) {\n const expression = parseSourceOrExpression(input);\n if (!expression)\n return () => {};\n const ns = expression.namespace || \"default\";\n const store = getStore(ns);\n const ownerDocument = container.ownerDocument || document;\n applyExpression(expression);\n const oldCleanup = store.cleanups.get(container);\n if (oldCleanup)\n oldCleanup();\n const root = ownerDocument.createElement(\"div\");\n const theme = resolveThemeMode(container, options.theme);\n const dir = resolveDirection(container, options.dir);\n root.className = `slexkit-root slexkit-theme-${theme}`;\n root.dir = dir;\n root.dataset.namespace = ns;\n root.dataset.theme = theme;\n root.dataset.dir = dir;\n container.appendChild(root);\n store.roots.set(container, root);\n const cleanup = createRoot((dispose) => {\n const layoutRoot = ownerDocument.createElement(\"div\");\n layoutRoot.className = \"slex-layout\";\n root.appendChild(layoutRoot);\n renderTree(expression.layout ?? {}, layoutRoot, store.g, store.components, store.componentTypes, undefined, ns, options.api, {\n dir,\n labels: options.labels ?? {}\n });\n return () => {\n dispose();\n root.remove();\n store.roots.delete(container);\n store.cleanups.delete(container);\n };\n });\n store.cleanups.set(container, cleanup);\n return cleanup;\n}\nfunction disposeNamespace(namespace) {\n const ns = namespace || \"default\";\n const store = peekStore(ns);\n if (store) {\n for (const cleanup of Array.from(store.cleanups.values())) {\n try {\n cleanup();\n } catch (e) {\n console.warn(`[SlexKit][${ns}] Cleanup error while disposing namespace:`, e.message);\n }\n }\n for (const root of Array.from(store.roots.values())) {\n root.remove();\n }\n store.roots.clear();\n store.cleanups.clear();\n deleteStore(ns);\n }\n clearEvalCache(ns);\n}\nfunction mountSecureArtifact(input, container, options) {\n container.dataset.slexkitSecureRuntime = \"true\";\n let frameTarget;\n try {\n frameTarget = createSecureFrameTarget(input, container, options);\n } catch (error) {\n delete container.dataset.slexkitSecureRuntime;\n throw error;\n }\n if (frameTarget?.sandboxed) {\n return () => {\n frameTarget.dispose();\n delete container.dataset.slexkitSecureRuntime;\n };\n }\n if (!options.unsafeInlineExecution) {\n delete container.dataset.slexkitSecureRuntime;\n throw new Error(\"mountSecureArtifact requires a sandbox frame runtime URL. Use unsafeInlineExecution only for trusted inline execution.\");\n }\n const runtime = createSecureRuntime(options.policy, options.hostAdapter);\n const target = frameTarget?.target ?? container;\n const cleanup = mount(input, target, {\n theme: options.theme,\n dir: options.dir,\n labels: options.labels,\n api: runtime.api\n });\n return () => {\n cleanup();\n runtime.dispose();\n frameTarget?.dispose();\n delete container.dataset.slexkitSecureRuntime;\n };\n}\nfunction createSecureFrameTarget(input, container, mountOptions) {\n const frame = mountOptions.frame;\n if (!frame)\n return null;\n const ownerDocument = container.ownerDocument || document;\n const options = typeof frame === \"object\" ? frame : {};\n const iframe = ownerDocument.createElement(\"iframe\");\n iframe.className = options.className ?? \"slexkit-secure-frame\";\n iframe.title = options.title ?? \"SlexKit secure artifact\";\n iframe.setAttribute(\"data-slexkit-secure-frame\", \"true\");\n iframe.setAttribute(\"referrerpolicy\", \"no-referrer\");\n iframe.style.display = \"block\";\n iframe.style.width = \"100%\";\n iframe.style.border = \"0\";\n iframe.style.background = \"transparent\";\n const runtimeUrl = options.runtimeUrl ?? options.runnerUrl ?? defaultRuntimeUrl;\n if (runtimeUrl) {\n const resolvedRuntimeUrl = resolveRuntimeUrl(runtimeUrl);\n const styleUrl = options.styleUrl === false ? \"\" : options.styleUrl ?? defaultSecureFrameStyleUrl(resolvedRuntimeUrl);\n const resolvedStyleUrl = styleUrl ? resolveRuntimeUrl(styleUrl) : undefined;\n assertSandboxCloneable(input);\n iframe.setAttribute(\"sandbox\", secureSandboxAttribute(options));\n container.replaceChildren(iframe);\n const bridge = createSandboxBridge(input, container, iframe, mountOptions);\n iframe.srcdoc = secureRunnerSrcdoc(resolvedRuntimeUrl, resolvedStyleUrl);\n return bridge;\n }\n if (frame) {\n iframe.remove();\n throw new Error(\"SlexKit secure frame requires runtimeUrl or setSlexKitRuntimeUrl().\");\n }\n if (options.sandbox)\n iframe.setAttribute(\"sandbox\", options.sandbox);\n container.replaceChildren(iframe);\n const frameDocument = iframe.contentDocument;\n if (!frameDocument?.body) {\n iframe.remove();\n throw new Error(\"Unable to create SlexKit secure frame document.\");\n }\n frameDocument.open();\n frameDocument.write('<!doctype html><html><head></head><body><div id=\"slexkit-secure-root\"></div></body></html>');\n frameDocument.close();\n applyDocumentColorMode(frameDocument, resolveColorMode(container));\n const target = frameDocument.getElementById(\"slexkit-secure-root\");\n if (!target) {\n iframe.remove();\n throw new Error(\"Unable to create SlexKit secure frame root.\");\n }\n return {\n target,\n dispose: () => iframe.remove()\n };\n}\nfunction secureSandboxAttribute(options) {\n const sandbox = options.sandbox ?? \"allow-scripts\";\n const tokens = sandbox.split(/\\s+/).filter(Boolean);\n if (tokens.includes(\"allow-same-origin\") && !options.unsafeAllowSameOrigin) {\n throw new Error(\"SlexKit secure frames cannot use allow-same-origin unless unsafeAllowSameOrigin is explicitly enabled.\");\n }\n if (!tokens.includes(\"allow-scripts\")) {\n throw new Error(\"SlexKit secure frames require allow-scripts to run the runtime.\");\n }\n return tokens.join(\" \");\n}\nfunction resolveRuntimeUrl(runtimeUrl) {\n try {\n const base = typeof document !== \"undefined\" ? document.baseURI : undefined;\n return new URL(runtimeUrl, base).href;\n } catch {\n return runtimeUrl;\n }\n}\nfunction cspSourceForRuntime(runtimeUrl) {\n try {\n const parsed = new URL(runtimeUrl);\n if (parsed.protocol === \"blob:\")\n return \"blob:\";\n if (parsed.protocol === \"data:\")\n return \"data:\";\n return parsed.origin;\n } catch {\n return \"'self'\";\n }\n}\nfunction defaultSecureFrameStyleUrl(runtimeUrl) {\n try {\n const url = new URL(runtimeUrl);\n if (url.protocol === \"blob:\" || url.protocol === \"data:\")\n return \"\";\n url.pathname = url.pathname.replace(/[^/]+$/, \"slexkit.css\");\n url.search = \"\";\n url.hash = \"\";\n return url.href;\n } catch {\n return \"\";\n }\n}\nfunction escapeHtmlAttribute(value) {\n return value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\nfunction secureRunnerSrcdoc(runtimeUrl, styleUrl) {\n const nonce = randomToken(12);\n const styleSource = styleUrl ? ` ${cspSourceForRuntime(styleUrl)}` : \"\";\n const csp = [\n \"default-src 'none'\",\n `script-src 'nonce-${nonce}' 'unsafe-eval' ${cspSourceForRuntime(runtimeUrl)}`,\n \"connect-src 'none'\",\n \"img-src data: blob:\",\n `style-src 'unsafe-inline'${styleSource}`,\n \"font-src data:\",\n \"form-action 'none'\",\n \"base-uri 'none'\"\n ].join(\"; \");\n const style = \"html,body{margin:0;min-height:100%;overflow:hidden;}#slexkit-secure-root{min-height:100%;}\";\n const stylesheet = styleUrl ? `<link rel=\"stylesheet\" href=\"${escapeHtmlAttribute(styleUrl)}\">` : \"\";\n return `<!doctype html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtmlAttribute(csp)}\">${stylesheet}<style>${style}</style></head><body><div id=\"slexkit-secure-root\"></div><script type=\"module\" nonce=\"${nonce}\">import { startSlexKitSandboxRunner } from ${JSON.stringify(runtimeUrl)}; startSlexKitSandboxRunner();</script></body></html>`;\n}\nfunction secureFrameLoadTimeout(options) {\n const frame = options.frame;\n if (frame && typeof frame === \"object\" && typeof frame.loadTimeoutMs === \"number\") {\n return Math.max(0, frame.loadTimeoutMs);\n }\n return 8000;\n}\nfunction secureFrameMaxUnresponsiveMs(options) {\n const value = options.policy.execution?.maxUnresponsiveMs;\n return typeof value === \"number\" ? Math.max(0, value) : 0;\n}\nfunction secureFrameLoadError(runtimeUrl, phase, detail) {\n const phaseMessage = phase === \"ready\" ? \"The sandbox did not report that the runtime module loaded.\" : \"The sandbox loaded but did not confirm artifact mount.\";\n const suffix = detail ? `\nSandbox error: ${detail}` : \"\";\n return new Error(`SlexKit secure runtime failed to load.\n${phaseMessage}\nRuntime URL: ${runtimeUrl}\n` + `Check that this URL serves slexkit.runtime.js as an ES module with:\n` + `Access-Control-Allow-Origin: *\nContent-Type: text/javascript\n` + \"Do not fix this by adding allow-same-origin to the sandbox frame.\" + suffix);\n}\nfunction secureFrameHeartbeatError(runtimeUrl, elapsedMs) {\n return new Error(`SlexKit secure runtime stopped responding.\n` + `No sandbox heartbeat was received for ${Math.round(elapsedMs)} ms.\n` + `Runtime URL: ${runtimeUrl}\n` + \"The sandbox frame was terminated to avoid keeping unresponsive agent code alive.\");\n}\nfunction showSecureFrameError(container, iframe, error) {\n container.dataset.slexkitSecureStatus = \"error\";\n let alert = container.querySelector(\".slexkit-secure-error\");\n if (!alert) {\n alert = (container.ownerDocument || document).createElement(\"div\");\n alert.className = \"slexkit-secure-error\";\n alert.setAttribute(\"role\", \"alert\");\n iframe.after(alert);\n }\n alert.textContent = error.message;\n console.error(error.message);\n}\nfunction clearSecureFrameError(container) {\n delete container.dataset.slexkitSecureStatus;\n container.querySelector(\".slexkit-secure-error\")?.remove();\n}\nfunction assertSandboxCloneable(input) {\n if (typeof input === \"string\")\n return;\n const seen = new Set;\n const visit = (value) => {\n if (typeof value === \"function\") {\n throw new Error(\"Sandbox runner input cannot contain functions. Pass Slex source to execute functions inside the sandbox realm.\");\n }\n if (!value || typeof value !== \"object\")\n return;\n if (seen.has(value))\n return;\n seen.add(value);\n for (const item of Object.values(value))\n visit(item);\n };\n visit(input);\n}\nfunction createSandboxBridge(input, container, iframe, options) {\n const id = `secure_${randomToken(8)}`;\n const token = randomToken(24);\n const bridgeRuntime = createSecureRuntime(options.policy, options.hostAdapter);\n const runtimeUrl = typeof options.frame === \"object\" ? resolveRuntimeUrl(options.frame.runtimeUrl ?? options.frame.runnerUrl ?? defaultRuntimeUrl ?? \"\") : resolveRuntimeUrl(defaultRuntimeUrl ?? \"\");\n const loadTimeoutMs = secureFrameLoadTimeout(options);\n const artifactSlots = normalizeArtifactSlots(options.artifactSlots);\n let disposed = false;\n let mounted = false;\n let ready = false;\n let mountAcknowledged = false;\n let loadTimer;\n let heartbeatTimer;\n let slotSyncFrame;\n let slotSyncTimer;\n let lastHeartbeat = 0;\n const maxUnresponsiveMs = secureFrameMaxUnresponsiveMs(options);\n const ownerWindow = iframe.ownerDocument.defaultView ?? window;\n const slotStyleSnapshots = new Map;\n let adjustedAnchorPosition = false;\n const clearLoadTimer = () => {\n if (loadTimer === undefined)\n return;\n window.clearTimeout(loadTimer);\n loadTimer = undefined;\n };\n const clearHeartbeatTimer = () => {\n if (heartbeatTimer === undefined)\n return;\n window.clearInterval(heartbeatTimer);\n heartbeatTimer = undefined;\n };\n const failLoad = (phase, detail) => {\n if (disposed || mountAcknowledged)\n return;\n clearLoadTimer();\n showSecureFrameError(container, iframe, secureFrameLoadError(runtimeUrl, phase, detail));\n terminateFrame({ keepDiagnostic: true });\n };\n const failHeartbeat = () => {\n if (disposed || !mountAcknowledged || maxUnresponsiveMs <= 0)\n return;\n const elapsed = Date.now() - lastHeartbeat;\n if (elapsed < maxUnresponsiveMs)\n return;\n clearHeartbeatTimer();\n showSecureFrameError(container, iframe, secureFrameHeartbeatError(runtimeUrl, elapsed));\n terminateFrame({ keepDiagnostic: true });\n };\n const startHeartbeatWatchdog = () => {\n if (maxUnresponsiveMs <= 0 || heartbeatTimer !== undefined)\n return;\n lastHeartbeat = Date.now();\n heartbeatTimer = window.setInterval(failHeartbeat, Math.max(10, Math.min(1000, maxUnresponsiveMs / 2)));\n };\n const clearSlotSyncTimer = () => {\n if (slotSyncFrame !== undefined) {\n ownerWindow.cancelAnimationFrame(slotSyncFrame);\n slotSyncFrame = undefined;\n }\n if (slotSyncTimer !== undefined) {\n ownerWindow.clearTimeout(slotSyncTimer);\n slotSyncTimer = undefined;\n }\n };\n const syncArtifactSlotsNow = () => {\n slotSyncFrame = undefined;\n slotSyncTimer = undefined;\n if (!artifactSlots.length || disposed)\n return;\n const frameRect = iframe.getBoundingClientRect();\n const slots = artifactSlots.map((slot) => {\n const rect = slot.container.getBoundingClientRect();\n return {\n id: slot.id,\n left: rect.left - frameRect.left,\n top: rect.top - frameRect.top,\n width: rect.width,\n height: rect.height\n };\n });\n if (artifactSlots.length > 1) {\n const maxBottom = Math.max(1, ...slots.map((slot) => slot.top + slot.height));\n iframe.style.height = `${Math.ceil(maxBottom)}px`;\n }\n iframe.contentWindow?.postMessage({\n channel: \"slexkit-secure\",\n type: \"slots\",\n id,\n token,\n slots\n }, \"*\");\n };\n const requestArtifactSlotSync = () => {\n if (!artifactSlots.length || disposed || slotSyncFrame !== undefined || slotSyncTimer !== undefined)\n return;\n if (typeof ownerWindow.requestAnimationFrame === \"function\") {\n slotSyncFrame = ownerWindow.requestAnimationFrame(syncArtifactSlotsNow);\n } else {\n slotSyncTimer = ownerWindow.setTimeout(syncArtifactSlotsNow, 0);\n }\n };\n const slotResizeObserver = artifactSlots.length && typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(requestArtifactSlotSync) : undefined;\n if (artifactSlots.length > 1) {\n slotStyleSnapshots.set(container, {\n minHeight: container.style.minHeight,\n position: container.style.position,\n secureSlotId: container.dataset.slexkitSecureArtifactSlotId\n });\n iframe.style.position = \"absolute\";\n iframe.style.inset = \"0 auto auto 0\";\n iframe.style.width = \"100%\";\n iframe.style.minHeight = \"1px\";\n iframe.style.border = \"0\";\n iframe.style.background = \"transparent\";\n iframe.style.zIndex = \"1\";\n iframe.setAttribute(\"allowtransparency\", \"true\");\n const computedAnchorPosition = ownerWindow.getComputedStyle(container).position;\n if (!computedAnchorPosition || computedAnchorPosition === \"static\") {\n container.style.position = \"relative\";\n adjustedAnchorPosition = true;\n }\n }\n for (const slot of artifactSlots) {\n if (!slotStyleSnapshots.has(slot.container)) {\n slotStyleSnapshots.set(slot.container, {\n minHeight: slot.container.style.minHeight,\n position: slot.container.style.position,\n secureSlotId: slot.container.dataset.slexkitSecureArtifactSlotId\n });\n }\n slot.container.dataset.slexkitSecureArtifactSlotId = slot.id;\n slotResizeObserver?.observe(slot.container);\n }\n if (artifactSlots.length) {\n ownerWindow.addEventListener(\"resize\", requestArtifactSlotSync);\n ownerWindow.addEventListener(\"scroll\", requestArtifactSlotSync, true);\n }\n if (loadTimeoutMs > 0) {\n loadTimer = window.setTimeout(() => {\n failLoad(ready ? \"mounted\" : \"ready\");\n }, loadTimeoutMs);\n }\n const postMount = () => {\n if (mounted)\n return;\n mounted = true;\n iframe.contentWindow?.postMessage({\n channel: \"slexkit-secure\",\n type: \"mount\",\n id,\n token,\n input,\n policy: options.policy,\n theme: options.theme,\n colorMode: resolveColorMode(container),\n dir: options.dir,\n labels: options.labels\n }, \"*\");\n };\n const onMessage = (event) => {\n if (disposed || event.source !== iframe.contentWindow)\n return;\n const data = event.data;\n if (!data || data.channel !== \"slexkit-secure\")\n return;\n if (data.type === \"ready\") {\n ready = true;\n postMount();\n return;\n }\n if (data.type === \"mounted\" && data.id === id && data.token === token) {\n mountAcknowledged = true;\n lastHeartbeat = Date.now();\n clearLoadTimer();\n clearSecureFrameError(container);\n startHeartbeatWatchdog();\n syncArtifactSlotsNow();\n return;\n }\n if (data.type === \"heartbeat\" && data.id === id && data.token === token) {\n lastHeartbeat = Date.now();\n return;\n }\n if (data.type === \"slot-size\" && data.id === id && data.token === token && typeof data.slotId === \"string\") {\n const slot = artifactSlots.find((item) => item.id === data.slotId);\n if (slot && typeof data.height === \"number\" && Number.isFinite(data.height)) {\n const height = Math.max(0, Math.ceil(data.height));\n slot.container.style.minHeight = `${height}px`;\n if (artifactSlots.length === 1) {\n iframe.style.height = `${Math.max(1, height)}px`;\n }\n requestArtifactSlotSync();\n }\n return;\n }\n if (data.type === \"frame-size\" && data.id === id && data.token === token) {\n if (artifactSlots.length <= 1 && typeof data.height === \"number\" && Number.isFinite(data.height)) {\n iframe.style.height = `${Math.max(1, Math.ceil(data.height))}px`;\n }\n return;\n }\n if (data.type === \"error\" && (!data.id || data.id === id) && (!data.token || data.token === token)) {\n const error = data;\n failLoad(ready ? \"mounted\" : \"ready\", typeof error.error?.message === \"string\" ? error.error.message : undefined);\n return;\n }\n if (data.type !== \"fetch\" || data.id !== id || data.token !== token || typeof data.requestId !== \"string\")\n return;\n const request = validateSandboxFetchRequest(data.request);\n if (!request)\n return;\n bridgeRuntime.api.fetch(request.url, request).then((result) => {\n iframe.contentWindow?.postMessage({\n channel: \"slexkit-secure\",\n type: \"fetch-result\",\n id,\n token,\n requestId: data.requestId,\n result\n }, \"*\");\n }).catch((error) => {\n iframe.contentWindow?.postMessage({\n channel: \"slexkit-secure\",\n type: \"fetch-result\",\n id,\n token,\n requestId: data.requestId,\n error: serializeRuntimeError(error)\n }, \"*\");\n });\n };\n window.addEventListener(\"message\", onMessage);\n const terminateFrame = ({ keepDiagnostic = false } = {}) => {\n if (disposed)\n return;\n disposed = true;\n iframe.contentWindow?.postMessage({\n channel: \"slexkit-secure\",\n type: \"dispose\",\n id,\n token\n }, \"*\");\n clearLoadTimer();\n clearHeartbeatTimer();\n clearSlotSyncTimer();\n slotResizeObserver?.disconnect();\n if (artifactSlots.length) {\n ownerWindow.removeEventListener(\"resize\", requestArtifactSlotSync);\n ownerWindow.removeEventListener(\"scroll\", requestArtifactSlotSync, true);\n }\n for (const slot of artifactSlots) {\n const snapshot = slotStyleSnapshots.get(slot.container);\n if (snapshot) {\n if (snapshot.secureSlotId === undefined)\n delete slot.container.dataset.slexkitSecureArtifactSlotId;\n else\n slot.container.dataset.slexkitSecureArtifactSlotId = snapshot.secureSlotId;\n slot.container.style.minHeight = snapshot.minHeight;\n } else {\n delete slot.container.dataset.slexkitSecureArtifactSlotId;\n slot.container.style.removeProperty(\"min-height\");\n }\n }\n if (adjustedAnchorPosition)\n container.style.position = slotStyleSnapshots.get(container)?.position ?? \"\";\n window.removeEventListener(\"message\", onMessage);\n bridgeRuntime.dispose();\n iframe.remove();\n if (!keepDiagnostic)\n clearSecureFrameError(container);\n if (!container.hasChildNodes())\n container.replaceChildren();\n };\n return {\n sandboxed: true,\n dispose: () => terminateFrame()\n };\n}\nfunction normalizeArtifactSlots(slots) {\n if (!slots?.length)\n return [];\n const seen = new Set;\n const normalized = [];\n for (const slot of slots) {\n const id = String(slot.id || \"\").trim();\n if (!id || seen.has(id) || !slot.container)\n continue;\n seen.add(id);\n normalized.push({ id, container: slot.container });\n }\n return normalized;\n}\nfunction randomToken(bytes) {\n const cryptoApi = globalThis.crypto;\n if (cryptoApi?.getRandomValues) {\n const values = new Uint8Array(bytes);\n cryptoApi.getRandomValues(values);\n return Array.from(values, (value) => value.toString(16).padStart(2, \"0\")).join(\"\");\n }\n return `${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`;\n}\nfunction validateSandboxFetchRequest(value) {\n if (!value || typeof value !== \"object\")\n return null;\n const request = value;\n if (typeof request.url !== \"string\")\n return null;\n if (request.method !== \"GET\" && request.method !== \"POST\")\n return null;\n if (request.credentials !== \"omit\" && request.credentials !== \"same-origin\" && request.credentials !== \"include\")\n return null;\n if (typeof request.timeoutMs !== \"number\" || !Number.isFinite(request.timeoutMs) || request.timeoutMs <= 0)\n return null;\n if (request.headers !== undefined && !isStringRecord(request.headers))\n return null;\n return {\n url: request.url,\n method: request.method,\n headers: request.headers,\n body: request.body,\n credentials: request.credentials,\n timeoutMs: request.timeoutMs\n };\n}\nfunction isStringRecord(value) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return false;\n return Object.values(value).every((item) => typeof item === \"string\");\n}\nfunction ingest(input) {\n const expression = parseSourceOrExpression(input);\n if (!expression)\n return false;\n applyExpression(expression);\n return true;\n}\nfunction copyText(text) {\n if (navigator.clipboard?.writeText) {\n navigator.clipboard.writeText(text);\n return;\n }\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.setAttribute(\"readonly\", \"\");\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand(\"copy\");\n textarea.remove();\n}\nfunction mountBootPreview(source, host, options) {\n host.replaceChildren();\n const preview = document.createElement(\"div\");\n preview.className = \"slexkit-preview\";\n host.appendChild(preview);\n return mount(source, preview, options);\n}\nfunction addSourceControls(pre, host, remount) {\n const toolbar = document.createElement(\"div\");\n toolbar.className = \"slexkit-source-toolbar\";\n const copyButton = document.createElement(\"button\");\n copyButton.type = \"button\";\n copyButton.className = \"slexkit-source-button\";\n copyButton.textContent = \"Copy source\";\n copyButton.addEventListener(\"click\", () => copyText(pre.textContent || \"\"));\n const viewButton = document.createElement(\"button\");\n viewButton.type = \"button\";\n viewButton.className = \"slexkit-source-button\";\n viewButton.textContent = \"Hide source\";\n viewButton.addEventListener(\"click\", () => {\n pre.hidden = !pre.hidden;\n viewButton.textContent = pre.hidden ? \"View source\" : \"Hide source\";\n });\n const renderButton = document.createElement(\"button\");\n renderButton.type = \"button\";\n renderButton.className = \"slexkit-source-button\";\n renderButton.textContent = \"Re-render\";\n renderButton.addEventListener(\"click\", remount);\n toolbar.append(copyButton, viewButton, renderButton);\n host.parentNode?.insertBefore(toolbar, host);\n}\nfunction boot(options = {}) {\n const selector = options.selector || \"pre code.language-slex\";\n document.querySelectorAll(selector).forEach((el) => {\n if (el.dataset.slexkitBooted === \"true\")\n return;\n el.dataset.slexkitBooted = \"true\";\n const source = el.textContent || \"\";\n const pre = el.closest(\"pre\");\n const host = document.createElement(\"div\");\n host.className = \"slexkit-card\";\n if (pre)\n pre.parentNode.insertBefore(host, pre.nextSibling);\n else\n el.parentNode.insertBefore(host, el.nextSibling);\n let cleanup = mountBootPreview(source, host, { theme: options.theme, dir: options.dir, labels: options.labels });\n const remount = () => {\n cleanup();\n cleanup = mountBootPreview(el.textContent || \"\", host, { theme: options.theme, dir: options.dir, labels: options.labels });\n };\n if (pre && options.sourceControls !== false) {\n addSourceControls(pre, host, remount);\n }\n });\n}\n\n// src/engine/sandbox-runner.ts\nvar schedulingSnapshot = {\n setTimeout: typeof globalThis.setTimeout === \"function\" ? globalThis.setTimeout.bind(globalThis) : undefined,\n clearTimeout: typeof globalThis.clearTimeout === \"function\" ? globalThis.clearTimeout.bind(globalThis) : undefined,\n setInterval: typeof globalThis.setInterval === \"function\" ? globalThis.setInterval.bind(globalThis) : undefined,\n clearInterval: typeof globalThis.clearInterval === \"function\" ? globalThis.clearInterval.bind(globalThis) : undefined,\n requestAnimationFrame: typeof globalThis.requestAnimationFrame === \"function\" ? globalThis.requestAnimationFrame.bind(globalThis) : undefined,\n cancelAnimationFrame: typeof globalThis.cancelAnimationFrame === \"function\" ? globalThis.cancelAnimationFrame.bind(globalThis) : undefined\n};\nfunction isHostMessage(value) {\n return !!value && typeof value === \"object\" && value.channel === \"slexkit-secure\" && typeof value.type === \"string\";\n}\nfunction frameRoot() {\n let root = document.getElementById(\"slexkit-secure-root\");\n if (!root) {\n root = document.createElement(\"div\");\n root.id = \"slexkit-secure-root\";\n document.body.appendChild(root);\n }\n return root;\n}\nfunction applyColorMode(mode) {\n if (mode !== \"dark\" && mode !== \"light\")\n return;\n document.documentElement.classList.toggle(\"dark\", mode === \"dark\");\n document.documentElement.classList.toggle(\"light\", mode === \"light\");\n document.documentElement.dataset.theme = mode;\n}\nfunction post(message) {\n window.parent?.postMessage(message, \"*\");\n}\nfunction createBridgeAdapter(id, token, pending) {\n let nextRequest = 1;\n return {\n fetch(request) {\n const requestId = `${Date.now()}_${nextRequest++}`;\n post({\n channel: \"slexkit-secure\",\n type: \"fetch\",\n id,\n token,\n requestId,\n request\n });\n return new Promise((resolve, reject) => {\n pending.set(requestId, { resolve, reject });\n });\n },\n setTimeout(fn, ms) {\n if (!schedulingSnapshot.setTimeout) {\n throw new SlexKitRuntimeError(\"policy\", \"timer_unavailable\", \"Native timer host is unavailable.\");\n }\n return schedulingSnapshot.setTimeout(fn, ms);\n },\n clearTimeout(id2) {\n schedulingSnapshot.clearTimeout?.(id2);\n },\n setInterval(fn, ms) {\n if (!schedulingSnapshot.setInterval) {\n throw new SlexKitRuntimeError(\"policy\", \"timer_unavailable\", \"Native interval host is unavailable.\");\n }\n return schedulingSnapshot.setInterval(fn, ms);\n },\n clearInterval(id2) {\n schedulingSnapshot.clearInterval?.(id2);\n },\n requestAnimationFrame(fn) {\n if (!schedulingSnapshot.requestAnimationFrame) {\n throw new SlexKitRuntimeError(\"policy\", \"animation_unavailable\", \"Native animation frame host is unavailable.\");\n }\n return schedulingSnapshot.requestAnimationFrame(fn);\n },\n cancelAnimationFrame(id2) {\n schedulingSnapshot.cancelAnimationFrame?.(id2);\n }\n };\n}\nfunction blockedNetworkError() {\n return new Error(\"Native network APIs are disabled inside the SlexKit sandbox. Use api.get(), api.post(), or api.fetch().\");\n}\nfunction defineBlockedGlobal(name, value) {\n try {\n Object.defineProperty(globalThis, name, {\n configurable: true,\n value\n });\n } catch {}\n}\nfunction hardenNetworkGlobals() {\n defineBlockedGlobal(\"fetch\", () => Promise.reject(blockedNetworkError()));\n defineBlockedGlobal(\"XMLHttpRequest\", class {\n constructor() {\n throw blockedNetworkError();\n }\n });\n defineBlockedGlobal(\"WebSocket\", class {\n constructor() {\n throw blockedNetworkError();\n }\n });\n defineBlockedGlobal(\"EventSource\", class {\n constructor() {\n throw blockedNetworkError();\n }\n });\n defineBlockedGlobal(\"Worker\", class {\n constructor() {\n throw blockedNetworkError();\n }\n });\n defineBlockedGlobal(\"SharedWorker\", class {\n constructor() {\n throw blockedNetworkError();\n }\n });\n try {\n Object.defineProperty(navigator, \"sendBeacon\", {\n configurable: true,\n value: () => false\n });\n } catch {}\n}\nfunction blockedSchedulingError(name) {\n return new SlexKitRuntimeError(\"policy\", \"native_scheduling_disabled\", `Native ${name} is disabled inside the SlexKit sandbox. Use api.${name}().`);\n}\nfunction hardenSchedulingGlobals() {\n defineBlockedGlobal(\"setTimeout\", () => {\n throw blockedSchedulingError(\"setTimeout\");\n });\n defineBlockedGlobal(\"setInterval\", () => {\n throw blockedSchedulingError(\"setInterval\");\n });\n defineBlockedGlobal(\"requestAnimationFrame\", () => {\n throw blockedSchedulingError(\"raf\");\n });\n defineBlockedGlobal(\"clearTimeout\", () => {\n return;\n });\n defineBlockedGlobal(\"clearInterval\", () => {\n return;\n });\n defineBlockedGlobal(\"cancelAnimationFrame\", () => {\n return;\n });\n}\nvar canvasSnapshot = {\n getContext: typeof HTMLCanvasElement !== \"undefined\" ? HTMLCanvasElement.prototype.getContext : undefined,\n offscreenCanvas: typeof OffscreenCanvas !== \"undefined\" ? OffscreenCanvas : undefined\n};\nfunction canvasPolicyError(code, message) {\n return new SlexKitRuntimeError(\"policy\", code, message);\n}\nfunction assertSandboxCanvasPolicy(policy, width, height, contextId) {\n if (!policy.enabled) {\n throw canvasPolicyError(\"canvas_disabled\", \"Canvas access is disabled.\");\n }\n if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {\n throw canvasPolicyError(\"canvas_size_invalid\", \"Canvas size must be positive finite numbers.\");\n }\n const pixels = Math.ceil(width) * Math.ceil(height);\n if (policy.maxPixels !== undefined && pixels > policy.maxPixels) {\n throw canvasPolicyError(\"canvas_too_large\", \"Canvas size exceeds the runtime policy limit.\");\n }\n if (contextId && policy.allowedContexts?.length && !policy.allowedContexts.includes(contextId)) {\n throw canvasPolicyError(\"canvas_context_blocked\", `Canvas context ${contextId} is not allowed.`);\n }\n}\nfunction hardenCanvasGlobals(policy) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvasSnapshot.getContext) {\n const contextCanvases = new WeakSet;\n let contextCanvasCount = 0;\n const canvasPolicy2 = policy.canvas;\n HTMLCanvasElement.prototype.getContext = function getContext(contextId, options) {\n if (!canvasPolicy2?.enabled) {\n throw canvasPolicyError(\"canvas_disabled\", \"Canvas access is disabled.\");\n }\n assertSandboxCanvasPolicy(canvasPolicy2, this.width, this.height, contextId);\n if (!contextCanvases.has(this)) {\n if (canvasPolicy2.maxCanvases !== undefined && contextCanvasCount >= canvasPolicy2.maxCanvases) {\n throw canvasPolicyError(\"canvas_limit\", \"Canvas limit exceeded.\");\n }\n contextCanvases.add(this);\n contextCanvasCount += 1;\n }\n return canvasSnapshot.getContext.call(this, contextId, options);\n };\n }\n if (canvasSnapshot.offscreenCanvas) {\n const OriginalOffscreenCanvas = canvasSnapshot.offscreenCanvas;\n defineBlockedGlobal(\"OffscreenCanvas\", class extends OriginalOffscreenCanvas {\n constructor(width, height) {\n const canvasPolicy2 = policy.canvas;\n if (!canvasPolicy2?.enabled) {\n throw canvasPolicyError(\"canvas_disabled\", \"Canvas access is disabled.\");\n }\n assertSandboxCanvasPolicy(canvasPolicy2, width, height);\n super(width, height);\n }\n });\n }\n}\nfunction startSlexKitSandboxRunner() {\n hardenNetworkGlobals();\n hardenSchedulingGlobals();\n const pendingFetches = new Map;\n let cleanup;\n let runtimeDispose;\n let activeId;\n let activeToken;\n let heartbeatTimer;\n let rootResizeObserver;\n let slotResizeObserver;\n function clearHeartbeat() {\n if (heartbeatTimer === undefined)\n return;\n schedulingSnapshot.clearInterval?.(heartbeatTimer);\n heartbeatTimer = undefined;\n }\n function startHeartbeat(policy, id, token) {\n clearHeartbeat();\n const intervalMs = Math.max(100, policy.execution?.heartbeatIntervalMs ?? 1000);\n if (!schedulingSnapshot.setInterval)\n return;\n heartbeatTimer = schedulingSnapshot.setInterval(() => {\n post({\n channel: \"slexkit-secure\",\n type: \"heartbeat\",\n id,\n token\n });\n }, intervalMs);\n }\n function dispose(id) {\n if (id && activeId && id !== activeId)\n return;\n clearHeartbeat();\n rootResizeObserver?.disconnect();\n rootResizeObserver = undefined;\n slotResizeObserver?.disconnect();\n slotResizeObserver = undefined;\n cleanup?.();\n runtimeDispose?.();\n for (const pending of pendingFetches.values()) {\n pending.reject(new Error(\"SlexKit sandbox runtime was disposed.\"));\n }\n pendingFetches.clear();\n cleanup = undefined;\n runtimeDispose = undefined;\n activeId = undefined;\n activeToken = undefined;\n const root = frameRoot();\n root.style.removeProperty(\"position\");\n root.style.removeProperty(\"min-height\");\n root.replaceChildren();\n }\n function slotElement(slotId) {\n return document.getElementById(`slexkit-slot-${slotId}`);\n }\n function reportSlotSize(slotId, element) {\n if (!activeId || !activeToken)\n return;\n const height = Math.max(element.scrollHeight, element.getBoundingClientRect().height);\n post({\n channel: \"slexkit-secure\",\n type: \"slot-size\",\n id: activeId,\n token: activeToken,\n slotId,\n height\n });\n }\n function reportFrameSize() {\n if (!activeId || !activeToken)\n return;\n const root = frameRoot();\n const rootRect = root.getBoundingClientRect();\n let contentBottom = rootRect.height;\n for (const child of root.querySelectorAll(\"*\")) {\n const rect = child.getBoundingClientRect();\n contentBottom = Math.max(contentBottom, rect.bottom - rootRect.top);\n }\n const height = Math.max(root.scrollHeight, root.getBoundingClientRect().height, contentBottom, document.body?.scrollHeight ?? 0, document.documentElement?.scrollHeight ?? 0, 1);\n post({\n channel: \"slexkit-secure\",\n type: \"frame-size\",\n id: activeId,\n token: activeToken,\n height\n });\n }\n function observeFrameSize() {\n rootResizeObserver?.disconnect();\n rootResizeObserver = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(() => reportFrameSize()) : undefined;\n const root = frameRoot();\n rootResizeObserver?.observe(root);\n for (const child of root.children) {\n rootResizeObserver?.observe(child);\n }\n reportFrameSize();\n schedulingSnapshot.requestAnimationFrame?.(() => reportFrameSize());\n }\n function applySlotRects(slots) {\n const root = frameRoot();\n const multiSlot = slots.length > 1;\n if (multiSlot) {\n const maxBottom = Math.max(1, ...slots.map((slot) => slot.top + slot.height));\n root.style.position = \"relative\";\n root.style.minHeight = `${Math.ceil(maxBottom)}px`;\n } else {\n root.style.removeProperty(\"position\");\n root.style.removeProperty(\"min-height\");\n }\n slotResizeObserver?.disconnect();\n slotResizeObserver = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver((entries) => {\n for (const entry of entries) {\n const element = entry.target;\n const slotId = element.dataset.slexkitSlotId;\n if (slotId)\n reportSlotSize(slotId, element);\n }\n }) : undefined;\n for (const slot of slots) {\n const element = slotElement(slot.id);\n if (!element)\n continue;\n element.dataset.slexkitSlotId = slot.id;\n element.style.boxSizing = \"border-box\";\n if (multiSlot) {\n element.style.position = \"absolute\";\n element.style.left = `${slot.left}px`;\n element.style.top = `${slot.top}px`;\n } else {\n element.style.removeProperty(\"position\");\n element.style.removeProperty(\"left\");\n element.style.removeProperty(\"top\");\n }\n if (slot.width > 0)\n element.style.width = `${slot.width}px`;\n slotResizeObserver?.observe(element);\n reportSlotSize(slot.id, element);\n }\n }\n async function mountArtifact(message) {\n dispose();\n activeId = message.id;\n activeToken = message.token;\n hardenCanvasGlobals(message.policy);\n applyColorMode(message.colorMode);\n const runtime = createSecureRuntime(message.policy, createBridgeAdapter(message.id, message.token, pendingFetches));\n runtimeDispose = runtime.dispose;\n cleanup = mount(message.input, frameRoot(), {\n theme: message.theme,\n dir: message.dir,\n labels: message.labels,\n api: runtime.api\n });\n startHeartbeat(message.policy, message.id, message.token);\n observeFrameSize();\n post({\n channel: \"slexkit-secure\",\n type: \"mounted\",\n id: message.id,\n token: message.token\n });\n }\n window.addEventListener(\"message\", (event) => {\n if (event.source !== window.parent || !isHostMessage(event.data))\n return;\n const message = event.data;\n try {\n if (message.type === \"mount\") {\n mountArtifact(message).catch((error) => {\n post({\n channel: \"slexkit-secure\",\n type: \"error\",\n id: message.id,\n token: message.token,\n error: serializeRuntimeError(error)\n });\n });\n } else if (message.type === \"dispose\") {\n if (activeToken && message.token !== activeToken)\n return;\n dispose(message.id);\n post({\n channel: \"slexkit-secure\",\n type: \"disposed\",\n id: message.id,\n token: message.token\n });\n } else if (message.type === \"fetch-result\") {\n const response = message;\n if (activeToken && response.token !== activeToken)\n return;\n const pending = pendingFetches.get(response.requestId);\n if (!pending)\n return;\n pendingFetches.delete(response.requestId);\n if (response.error)\n pending.reject(deserializeRuntimeError(response.error));\n else\n pending.resolve(response.result);\n } else if (message.type === \"slots\") {\n if (activeToken && message.token !== activeToken)\n return;\n applySlotRects(message.slots);\n }\n } catch (error) {\n post({\n channel: \"slexkit-secure\",\n type: \"error\",\n id: \"id\" in message ? message.id : undefined,\n token: activeToken,\n error: serializeRuntimeError(error)\n });\n }\n });\n post({\n channel: \"slexkit-secure\",\n type: \"ready\"\n });\n}\n\n// src/runtime.ts\nsetSlexKitRuntimeUrl(import.meta.url);\nvar mountApi = mount;\nvar ingestApi = ingest;\nvar bootApi = boot;\nvar disposeNamespaceApi = disposeNamespace;\nvar registerApi = register;\nvar getRendererApi = getRenderer;\nvar diagnoseSlexKitSourceApi = diagnoseSlexKitSource;\nvar SlexKitSyntaxErrorApi = SlexKitSyntaxError;\nvar formatSlexKitDiagnosticApi = formatSlexKitDiagnostic;\nvar mountSecureArtifactApi = mountSecureArtifact;\nvar parseSlexSourceApi = parseSlexSource;\nvar parseSlexKitDslApi = parseSlexKitDsl;\nvar validateSlexSourceApi = validateSlexSource;\nvar createSecureRuntimeApi = createSecureRuntime;\nvar SlexKitRuntimeErrorApi = SlexKitRuntimeError;\nvar getSlexKitRuntimeUrlApi = getSlexKitRuntimeUrl;\nvar setSlexKitRuntimeUrlApi = setSlexKitRuntimeUrl;\nvar createSlexKitMarkdownRuntimeHostApi = createSlexKitMarkdownRuntimeHost;\nvar getSlexKitMarkdownRuntimeHostApi = getSlexKitMarkdownRuntimeHost;\nvar installSlexKitMarkdownRuntimeHostApi = installSlexKitMarkdownRuntimeHost;\nvar slexkitStdApi = slexkitStd;\nvar attachComponentDisposerApi = attachComponentDisposer;\nvar configureComponentScopeApi = configureComponentScope;\nvar startSlexKitSandboxRunnerApi = startSlexKitSandboxRunner;\nvar getSlexKitInfoApi = getSlexKitInfo;\nexport {\n validateSlexSourceApi as validateSlexSource,\n startSlexKitSandboxRunnerApi as startSlexKitSandboxRunner,\n slexkitStdApi as slexkitStd,\n setSlexKitRuntimeUrlApi as setSlexKitRuntimeUrl,\n registerApi as register,\n parseSlexSourceApi as parseSlexSource,\n parseSlexKitDslApi as parseSlexKitDsl,\n mountSecureArtifactApi as mountSecureArtifact,\n mountApi as mount,\n installSlexKitMarkdownRuntimeHostApi as installSlexKitMarkdownRuntimeHost,\n ingestApi as ingest,\n getSlexKitRuntimeUrlApi as getSlexKitRuntimeUrl,\n getSlexKitMarkdownRuntimeHostApi as getSlexKitMarkdownRuntimeHost,\n getSlexKitInfoApi as getSlexKitInfo,\n getRendererApi as getRenderer,\n formatSlexKitDiagnosticApi as formatSlexKitDiagnostic,\n disposeNamespaceApi as disposeNamespace,\n diagnoseSlexKitSourceApi as diagnoseSlexKitSource,\n createSlexKitMarkdownRuntimeHostApi as createSlexKitMarkdownRuntimeHost,\n createSecureRuntimeApi as createSecureRuntime,\n configureComponentScopeApi as configureComponentScope,\n bootApi as boot,\n attachComponentDisposerApi as attachComponentDisposer,\n SlexKitSyntaxErrorApi as SlexKitSyntaxError,\n SlexKitRuntimeErrorApi as SlexKitRuntimeError,\n SLEX_PROTOCOL_VERSION,\n SLEXKIT_VERSION,\n SLEXKIT_COMPONENTS_VERSION\n};\n"
5
+ "#!/usr/bin/env node\nimport { createInterface } from \"node:readline\";\nimport { readFile } from \"node:fs/promises\";\nimport { inspectSlexSource, validateSlexSource } from \"slexkit/runtime\";\n\ntype JsonRpcRequest = { jsonrpc?: \"2.0\"; id?: string | number | null; method: string; params?: Record<string, unknown> };\ntype ToolDefinition = { name: string; description: string; inputSchema: Record<string, unknown>; handler: (args: Record<string, unknown>) => Promise<unknown> | unknown };\ntype Manifest = {\n version: string;\n pages: Array<{ id: string; group: string; title: string; summary: string; href: string; rawHref: string; sourcePath: string; body: string }>;\n authoring: Record<string, unknown>;\n sandboxSdk: string[];\n staticPolicy: string[];\n standardArtifacts?: Record<string, { path: string; hash: string }>;\n components: Array<{ type: string; tagName: string; title: string; docsHref: string; rawHref: string; properties: unknown[]; slots: string[]; events: string[]; examples: Array<{ id: string; title: string; source: string }> }>;\n};\n\nconst dataBase = new URL(\"./data/\", import.meta.url);\nconst manifest = JSON.parse(await readFile(new URL(\"slexkit-ai-manifest.json\", dataBase), \"utf8\")) as Manifest;\nconst standardArtifactNames = Object.keys(manifest.standardArtifacts ?? {});\n\nfunction stringArg(args: Record<string, unknown>, key: string) { return typeof args[key] === \"string\" ? args[key] as string : \"\"; }\nfunction optionalStringArg(args: Record<string, unknown>, key: string) { const value = stringArg(args, key); return value || undefined; }\nfunction booleanArg(args: Record<string, unknown>, key: string) { return args[key] === true; }\nfunction jsonSchema(properties: Record<string, unknown>, required: string[] = []) { return { type: \"object\", properties, required, additionalProperties: false }; }\n\nfunction findPage(args: Record<string, unknown>) {\n const slug = optionalStringArg(args, \"slug\");\n const url = optionalStringArg(args, \"url\")?.replace(/^https?:\\/\\/[^/]+/, \"\");\n if (url) return manifest.pages.find((page) => page.href === url || page.rawHref === url);\n if (slug) return manifest.pages.find((page) => page.id === slug || page.id.endsWith(`/${slug}`));\n return undefined;\n}\n\nfunction searchPages(args: Record<string, unknown>) {\n const group = optionalStringArg(args, \"group\")?.toLowerCase();\n const query = optionalStringArg(args, \"query\")?.toLowerCase();\n return manifest.pages.filter((page) => !group || page.group.toLowerCase() === group).filter((page) => !query || [page.id, page.title, page.summary, page.body].some((value) => value.toLowerCase().includes(query))).map(({ body: _body, ...page }) => page);\n}\n\nfunction sourceFromTemplate(template: string) {\n if (template === \"calculator\") return `<slex-card title=\"Calculator\">\n <slex-input id=\"a\" label=\"A\" value=\"10\"></slex-input>\n <slex-input id=\"b\" label=\"B\" value=\"5\"></slex-input>\n <slex-stat id=\"sum\" label=\"Sum\"></slex-stat>\n</slex-card>\n<script type=\"module\">\n const a = slex.root.querySelector(\"#a\");\n const b = slex.root.querySelector(\"#b\");\n const sum = slex.root.querySelector(\"#sum\");\n const update = () => { sum.value = Number(a.value) + Number(b.value); };\n a.addEventListener(\"input\", update); b.addEventListener(\"input\", update); update();\n slex.onDispose(() => { a.removeEventListener(\"input\", update); b.removeEventListener(\"input\", update); });\n</script>`;\n if (template === \"secure-network-card\") return `<slex-card title=\"Approved request\">\n <slex-button id=\"load\" label=\"Load\"></slex-button><slex-text id=\"status\" text=\"Idle\"></slex-text>\n</slex-card>\n<script type=\"module\">\n const load = slex.root.querySelector(\"#load\"); const status = slex.root.querySelector(\"#status\");\n const run = async () => { status.text = \"Loading\"; const result = await slex.api.fetch(\"/status\"); status.text = String(result.status); };\n load.addEventListener(\"click\", run); slex.onDispose(() => load.removeEventListener(\"click\", run));\n</script>`;\n if (template === \"toolhost-form\") return `<form id=\"review\"><label><input name=\"approved\" type=\"checkbox\"> Approve</label><label>Reason <input name=\"reason\"></label><button type=\"submit\">Submit</button></form>`;\n return `<slex-card title=\"Status\"><slex-progress label=\"Complete\" value=\"75\"></slex-progress><slex-text text=\"3/4 complete\"></slex-text></slex-card>`;\n}\n\nconst tools: ToolDefinition[] = [\n {\n name: \"slexkitDocs\",\n description: \"Search or fetch HTML-first SlexKit documentation and standard metadata.\",\n inputSchema: jsonSchema({\n query: { type: \"string\" }, group: { type: \"string\" }, slug: { type: \"string\" }, url: { type: \"string\" },\n includeCapabilities: { type: \"boolean\" }, standardArtifact: { type: \"string\", enum: standardArtifactNames },\n }),\n async handler(args) {\n const standardArtifact = optionalStringArg(args, \"standardArtifact\");\n if (standardArtifact) {\n if (!standardArtifactNames.includes(standardArtifact)) return { error: \"standard_artifact_not_found\", available: standardArtifactNames };\n return { filename: standardArtifact, metadata: manifest.standardArtifacts?.[standardArtifact], content: JSON.parse(await readFile(new URL(`standard/${standardArtifact}`, dataBase), \"utf8\")) };\n }\n const capabilities = booleanArg(args, \"includeCapabilities\") ? { authoring: manifest.authoring, sandboxSdk: manifest.sandboxSdk, staticPolicy: manifest.staticPolicy } : undefined;\n const page = findPage(args);\n return page ? { version: manifest.version, page, capabilities } : { version: manifest.version, pages: searchPages(args), capabilities };\n },\n },\n {\n name: \"slexkitExamples\",\n description: \"Return HTML-first examples or actual custom-element metadata.\",\n inputSchema: jsonSchema({ type: { type: \"string\", description: \"Custom-element type without the slex- prefix.\" }, template: { type: \"string\", enum: [\"status\", \"calculator\", \"secure-network-card\", \"toolhost-form\"] } }),\n handler(args) {\n const template = optionalStringArg(args, \"template\");\n if (template) {\n const source = sourceFromTemplate(template);\n const inspection = inspectSlexSource(source);\n return { template, source, valid: inspection.ok };\n }\n const type = optionalStringArg(args, \"type\");\n const components = manifest.components.filter((component) => !type || component.type === type);\n if (type && !components.length) return { error: \"component_not_found\", type, available: manifest.components.map((component) => component.type) };\n return { components };\n },\n },\n {\n name: \"slexkitValidate\",\n description: \"Statically inspect SlexKit HTML and inline JavaScript without executing payload scripts.\",\n inputSchema: jsonSchema({ source: { type: \"string\", description: \"HTML fragment from a slex fence.\" } }, [\"source\"]),\n handler(args) { return validateSlexSource(stringArg(args, \"source\")); },\n },\n];\n\nconst toolByName = new Map(tools.map((tool) => [tool.name, tool]));\nfunction send(message: unknown) { process.stdout.write(`${JSON.stringify(message)}\\n`); }\nfunction respond(id: JsonRpcRequest[\"id\"], result: unknown) { if (id !== undefined) send({ jsonrpc: \"2.0\", id, result }); }\nfunction respondError(id: JsonRpcRequest[\"id\"], code: number, message: string, data?: unknown) { if (id !== undefined) send({ jsonrpc: \"2.0\", id, error: { code, message, data } }); }\n\nasync function handleRequest(request: JsonRpcRequest) {\n if (request.id === undefined && request.method.startsWith(\"notifications/\")) return;\n if (request.method === \"initialize\") return respond(request.id, { protocolVersion: \"2025-06-18\", capabilities: { tools: {} }, serverInfo: { name: \"@slexkit/mcp\", version: manifest.version } });\n if (request.method === \"tools/list\") return respond(request.id, { tools: tools.map(({ name, description, inputSchema }) => ({ name, description, inputSchema })) });\n if (request.method === \"tools/call\") {\n const name = typeof request.params?.name === \"string\" ? request.params.name : \"\";\n const args = request.params?.arguments && typeof request.params.arguments === \"object\" ? request.params.arguments as Record<string, unknown> : {};\n const tool = toolByName.get(name);\n if (!tool) return respondError(request.id, -32602, `Unknown tool: ${name}`, { available: [...toolByName.keys()] });\n const result = await tool.handler(args);\n return respond(request.id, { content: [{ type: \"text\", text: typeof result === \"string\" ? result : JSON.stringify(result, null, 2) }], structuredContent: result });\n }\n respondError(request.id, -32601, `Method not found: ${request.method}`);\n}\n\nconst rl = createInterface({ input: process.stdin, crlfDelay: Infinity });\nrl.on(\"line\", (line) => { if (line.trim()) void handleRequest(JSON.parse(line)).catch((error) => respondError(null, -32700, error instanceof Error ? error.message : String(error))); });\n",
6
+ "// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 31, 4, 33, 15, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 7, 0, 259, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 481, 1, 61, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 12, 2, 9, 1, 3, 0, 33, 1, 1357, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 13, 65, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 18, 21, 18, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 18, 0, 182, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 22, 0, 239, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 111, 6, 206, 13, 310, 2314, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7386, 37, 33, 96, 114, 14, 913, 15, 50, 7710, 3, 2, 6, 2, 1, 2, 296, 10, 0, 30, 2, 3, 0, 15, 4, 8, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 340, 2, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 129, 15, 6, 55, 50, 49, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4382, 2, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489, 39815, 11327];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7-\\u05c9\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b53-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1af0\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0558\\u0559\\u0560-\\u0588\\u058b\\u058c\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u208f-\\u209f\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dd\\ua7e2\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab6c\\uab6d\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n privateId: new TokenType(\"privateId\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n if ( end === void 0 ) end = code.length;\n\n for (var i = from; i < end; i++) {\n var next = code.charCodeAt(i);\n if (isNewLine(next))\n { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n }\n return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n var nextBreak = nextLineBreak(input, cur, offset);\n if (nextBreak < 0) { return new Position(line, offset - cur) }\n ++line;\n cur = nextBreak;\n }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n // (the latest version the library supports). This influences\n // support for strict mode, the set of reserved words, and support\n // for new syntax features.\n ecmaVersion: null,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"`, `\"module\"` or `\"commonjs\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // When set to true, enable strict parsing mode even if `sourceType`\n // is `\"script\"`.\n strict: false,\n // `onInsertedSemicolon` can be a callback that will be called when\n // a semicolon is automatically inserted. It will be passed the\n // position of the inserted semicolon as an offset, and if\n // `locations` is enabled, it is given the location as a `{line,\n // column}` object as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program, and an import.meta expression\n // in a script isn't considered an error.\n allowImportExportEverywhere: false,\n // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: null,\n // When enabled, super identifiers are not constrained to\n // appearing in methods and do not raise an error when they appear elsewhere.\n allowSuperOutsideMethod: null,\n // When enabled, hashbang directive in the beginning of file is\n // allowed and treated as a line comment. Enabled by default when\n // `ecmaVersion` >= 2023.\n allowHashBang: false,\n // By default, the parser will verify that private properties are\n // only used in places where they are valid and have been declared.\n // Set this to false to turn such checks off.\n checkPrivateFields: true,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // Pass an optional `{line, column}` object to use for the start of\n // the parse. This is mostly useful when using `parseExpressionAt`\n // with `locations: true`, to prevent the parser from having to\n // determine the line position at the start position.\n startLocation: null,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n // When this option has an array as value, objects representing the\n // comments are pushed to it.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion === \"latest\") {\n options.ecmaVersion = 1e8;\n } else if (options.ecmaVersion == null) {\n if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n warnedAboutEcmaVersion = true;\n console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n }\n options.ecmaVersion = 11;\n } else if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (!opts || opts.allowHashBang == null)\n { options.allowHashBang = options.ecmaVersion >= 14; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n if (options.sourceType === \"commonjs\" && options.allowAwaitOutsideFunction)\n { throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\") }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128,\n SCOPE_CLASS_STATIC_BLOCK = 256,\n SCOPE_CLASS_FIELD_INIT = 512,\n SCOPE_SWITCH = 1024,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n this.pos = startPos || 0;\n this.curLine = 1;\n if (options.startLocation) {\n this.lineStart = this.pos - options.startLocation.column;\n this.curLine = options.startLocation.line;\n } else if (startPos) {\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n if (this.options.locations)\n { this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; }\n } else {\n this.lineStart = 0;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types$1.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || options.strict === true || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n this.potentialArrowInForAwait = false;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = Object.create(null);\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(\n this.options.sourceType === \"commonjs\"\n // In commonjs, the top-level scope behaves like a function scope\n ? SCOPE_FUNCTION\n : SCOPE_TOP\n );\n\n // For RegExp validation\n this.regexpState = null;\n\n // The stack of private names.\n // Each element has two properties: 'declared' and 'used'.\n // When it exited from the outermost class definition, all used private names must be declared.\n this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var this$1$1 = this;\n\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.catchStackOverflow(function () { return this$1$1.parseTopLevel(node); })\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowReturn.get = function () {\n if (this.inFunction) { return true }\n if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }\n return false\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n }\n return false\n};\n\nprototypeAccessors.allowUsing.get = function () {\n var ref = this.currentScope();\n var flags = ref.flags;\n if (flags & SCOPE_SWITCH) { return false }\n if (!this.inModule && flags & SCOPE_TOP) { return false }\n return true\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n if (this.options.ecmaVersion < 5) { return false }\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) ||\n next === \"!\" && this.input.charAt(end + 1) === \"=\" ||\n next === \"i\" && keywordOpAt(this, end)))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Scan for `in` or `instanceof` at the given position, knowing that\n// there's an `i` there.\nfunction keywordOpAt(parser, pos) {\n var end = pos + 1, stop = Math.min(parser.input.length, pos + 11);\n while (end < stop) {\n var ch = parser.fullCharCodeAt(end);\n if (!isIdentifierChar(ch, true)) { break }\n end += ch <= 0xffff ? 1 : 2;\n }\n return end === pos + 2 && parser.input.slice(pos, end) === \"in\" ||\n end === pos + 10 && parser.input.slice(pos, end) === \"instanceof\"\n}\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\npp$9.catchStackOverflow = function(f) {\n try {\n return f()\n } catch (e) {\n if (e instanceof Error && (/\\bstack\\b.*\\b(exceeded|overflow)\\b/i.test(e.message) || /\\btoo much recursion\\b/i.test(e.message)))\n { this.raise(this.start, \"Not enough stack space to parse input\"); }\n else\n { throw e }\n }\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n return this.type === types$1.eof ||\n this.type === types$1.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n var exports$1 = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports$1);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType === \"commonjs\" ? \"script\" : this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.fullCharCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n if (context) { return false }\n\n if (nextCh === 123) { return true } // '{'\n if (isIdentifierStart(nextCh)) {\n var start = next;\n do { next += nextCh <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))\n if (nextCh === 92) { return true }\n var ident = this.input.slice(start, next);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, after;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length ||\n !(isIdentifierChar(after = this.fullCharCodeAt(next + 8)) || after === 92 /* '\\' */))\n};\n\npp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n\n if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n if (isAwaitUsing) {\n var usingEndPos = next + 5 /* using */, after;\n if (this.input.slice(next, usingEndPos) !== \"using\" ||\n usingEndPos === this.input.length ||\n isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||\n after === 92 /* '\\' */\n ) { return false }\n\n skipWhiteSpace.lastIndex = usingEndPos;\n var skipAfterUsing = skipWhiteSpace.exec(this.input);\n next = usingEndPos + skipAfterUsing[0].length;\n if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }\n }\n\n var ch = this.fullCharCodeAt(next);\n if (!isIdentifierStart(ch) && ch !== 92 /* '\\' */) { return false }\n var idStart = next;\n do { next += ch <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(ch = this.fullCharCodeAt(next)))\n if (ch === 92) { return true }\n var id = this.input.slice(idStart, next);\n if (keywordRelationalOperator.test(id)) { return false }\n if (isFor && !isAwaitUsing && id === \"of\") {\n // Look ahead for using declaration with initializer, i.e., `for (using of = ...)`\n skipWhiteSpace.lastIndex = next;\n var skipAfterOf = skipWhiteSpace.exec(this.input);\n next = next + skipAfterOf[0].length;\n if (this.input.charCodeAt(next) !== 61 /* '=' */ ||\n // Check for ==, === and => operators\n (ch = this.input.charCodeAt(next + 1)) === 61 /* '=' */ || ch === 62 /* '>' */) {\n return false\n }\n }\n return true\n};\n\npp$8.isAwaitUsing = function(isFor) {\n return this.isUsingKeyword(true, isFor)\n};\n\npp$8.isUsing = function(isFor) {\n return this.isUsingKeyword(false, isFor)\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports$1) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types$1._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types$1._debugger: return this.parseDebuggerStatement(node)\n case types$1._do: return this.parseDoStatement(node)\n case types$1._for: return this.parseForStatement(node)\n case types$1._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types$1._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types$1._if: return this.parseIfStatement(node)\n case types$1._return: return this.parseReturnStatement(node)\n case types$1._switch: return this.parseSwitchStatement(node)\n case types$1._throw: return this.parseThrowStatement(node)\n case types$1._try: return this.parseTryStatement(node)\n case types$1._const: case types$1._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types$1._while: return this.parseWhileStatement(node)\n case types$1._with: return this.parseWithStatement(node)\n case types$1.braceL: return this.parseBlock(true, node)\n case types$1.semi: return this.parseEmptyStatement(node)\n case types$1._export:\n case types$1._import:\n if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports$1)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n if (usingKind) {\n if (!this.allowUsing) {\n this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\");\n }\n if (context) {\n // Cases like `for (;;) using x = ...;`, `if (true) await using x = ...;`, etc. are not allowed.\n this.raise(this.start, \"Using declaration is not allowed in single-statement positions\");\n }\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.next();\n this.parseVar(node, false, usingKind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types$1.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types$1._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types$1.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types$1.parenL);\n if (this.type === types$1.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types$1._var || this.type === types$1._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$1, awaitAt)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n if (usingKind) {\n var init$2 = this.startNode();\n this.next();\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.parseVar(init$2, true, usingKind);\n this.finishNode(init$2, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$2, awaitAt)\n }\n var containsEsc = this.containsEsc;\n var refDestructuringErrors = new DestructuringErrors;\n var initPos = this.start;\n var init = awaitAt > -1\n ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n : this.parseExpression(true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n if (this.type === types$1._in) { this.unexpected(awaitAt); }\n node.await = true;\n } else if (isForOf && this.options.ecmaVersion >= 8) {\n if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n else if (this.options.ecmaVersion >= 9) { node.await = false; }\n }\n if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLValPattern(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\n// Helper method to parse for loop after variable initialization\npp$8.parseForAfterInit = function(node, init, awaitAt) {\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n if (this.type === types$1._in) {\n if ((init.kind === \"using\" || init.kind === \"await using\") && !init.declarations[0].init) {\n this.raise(this.start, \"Using declaration is not allowed in for-in loops\");\n }\n if (this.options.ecmaVersion >= 9 && awaitAt > -1) { this.unexpected(awaitAt); }\n } else if (this.options.ecmaVersion >= 9) { node.await = awaitAt > -1; }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n if (!this.allowReturn)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types$1.braceL);\n this.labels.push(switchLabel);\n this.enterScope(SCOPE_SWITCH);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types$1.braceR;) {\n if (this.type === types$1._case || this.type === types$1._default) {\n var isCase = this.type === types$1._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types$1.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n var param = this.parseBindingAtom();\n var simple = param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types$1.parenR);\n\n return param\n};\n\npp$8.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types$1._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types$1.parenL)) {\n clause.param = this.parseCatchClauseParam();\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types$1.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n node.init = init;\n this.expect(types$1.semi);\n node.test = this.type === types$1.semi ? null : this.parseExpression();\n this.expect(types$1.semi);\n node.update = this.type === types$1.parenR ? null : this.parseExpression();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n var isForIn = this.type === types$1._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types$1.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (!allowMissingInitializer && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\n } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types$1.comma)) { break }\n }\n return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n decl.id = kind === \"using\" || kind === \"await using\"\n ? this.parseIdent()\n : this.parseBindingAtom();\n\n this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types$1.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var privateNameMap = this.enterClassBody();\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types$1.braceL);\n while (this.type !== types$1.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n this.exitClassBody();\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(types$1.semi)) { return null }\n\n var ecmaVersion = this.options.ecmaVersion;\n var node = this.startNode();\n var keyName = \"\";\n var isGenerator = false;\n var isAsync = false;\n var kind = \"method\";\n var isStatic = false;\n\n if (this.eatContextual(\"static\")) {\n // Parse static init block\n if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n this.parseClassStaticBlock(node);\n return node\n }\n if (this.isClassElementNameStart() || this.type === types$1.star) {\n isStatic = true;\n } else {\n keyName = \"static\";\n }\n }\n node.static = isStatic;\n if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n isAsync = true;\n } else {\n keyName = \"async\";\n }\n }\n if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n isGenerator = true;\n }\n if (!keyName && !isAsync && !isGenerator) {\n var lastValue = this.value;\n if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n if (this.isClassElementNameStart()) {\n kind = lastValue;\n } else {\n keyName = lastValue;\n }\n }\n }\n\n // Parse element name\n if (keyName) {\n // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n // The last token is any of those. Make it the element name.\n node.computed = false;\n node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n node.key.name = keyName;\n this.finishNode(node.key, \"Identifier\");\n } else {\n this.parseClassElementName(node);\n }\n\n // Parse element value\n if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n node.kind = isConstructor ? \"constructor\" : kind;\n this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n } else {\n this.parseClassField(node);\n }\n\n return node\n};\n\npp$8.isClassElementNameStart = function() {\n return (\n this.type === types$1.name ||\n this.type === types$1.privateId ||\n this.type === types$1.num ||\n this.type === types$1.string ||\n this.type === types$1.bracketL ||\n this.type.keyword\n )\n};\n\npp$8.parseClassElementName = function(element) {\n if (this.type === types$1.privateId) {\n if (this.value === \"constructor\") {\n this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n }\n element.computed = false;\n element.key = this.parsePrivateIdent();\n } else {\n this.parsePropertyName(element);\n }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n // Check key and flags\n var key = method.key;\n if (method.kind === \"constructor\") {\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n } else if (method.static && checkKeyName(method, \"prototype\")) {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n\n // Parse value\n var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n // Check value\n if (method.kind === \"get\" && value.params.length !== 0)\n { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && value.params.length !== 1)\n { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n if (checkKeyName(field, \"constructor\")) {\n this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n } else if (field.static && checkKeyName(field, \"prototype\")) {\n this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n }\n\n if (this.eat(types$1.eq)) {\n // To raise SyntaxError if 'arguments' exists in the initializer.\n this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n field.value = this.parseMaybeAssign();\n this.exitScope();\n } else {\n field.value = null;\n }\n this.semicolon();\n\n return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n node.body = [];\n\n var oldLabels = this.labels;\n this.labels = [];\n this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n this.next();\n this.exitScope();\n this.labels = oldLabels;\n\n return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n if (this.type === types$1.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$8.parseClassSuper = function(node) {\n node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n var element = {declared: Object.create(null), used: []};\n this.privateNameStack.push(element);\n return element.declared\n};\n\npp$8.exitClassBody = function() {\n var ref = this.privateNameStack.pop();\n var declared = ref.declared;\n var used = ref.used;\n if (!this.options.checkPrivateFields) { return }\n var len = this.privateNameStack.length;\n var parent = len === 0 ? null : this.privateNameStack[len - 1];\n for (var i = 0; i < used.length; ++i) {\n var id = used[i];\n if (!hasOwn(declared, id.name)) {\n if (parent) {\n parent.used.push(id);\n } else {\n this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n }\n }\n }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n var name = element.key.name;\n var curr = privateNameMap[name];\n\n var next = \"true\";\n if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n next = (element.static ? \"s\" : \"i\") + element.kind;\n }\n\n // `class { get #a(){}; static set #a(_){} }` is also conflict.\n if (\n curr === \"iget\" && next === \"iset\" ||\n curr === \"iset\" && next === \"iget\" ||\n curr === \"sget\" && next === \"sset\" ||\n curr === \"sset\" && next === \"sget\"\n ) {\n privateNameMap[name] = \"true\";\n return false\n } else if (!curr) {\n privateNameMap[name] = next;\n return false\n } else {\n return true\n }\n}\n\nfunction checkKeyName(node, name) {\n var computed = node.computed;\n var key = node.key;\n return !computed && (\n key.type === \"Identifier\" && key.name === name ||\n key.type === \"Literal\" && key.value === name\n )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports$1) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports$1, node.exported, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports$1) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports$1)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports$1, \"default\", this.lastTokStart);\n node.declaration = this.parseExportDefaultDeclaration();\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseExportDeclaration(node);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports$1, node.declaration.declarations); }\n else\n { this.checkExport(exports$1, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports$1);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n\n if (spec.local.type === \"Literal\") {\n this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n }\n }\n\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n var isAsync;\n if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === types$1._class) {\n var cNode = this.startNode();\n return this.parseClass(cNode, \"nullableID\")\n } else {\n var declaration = this.parseMaybeAssign();\n this.semicolon();\n return declaration\n }\n};\n\npp$8.checkExport = function(exports$1, name, pos) {\n if (!exports$1) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports$1, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports$1[name] = true;\n};\n\npp$8.checkPatternExport = function(exports$1, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports$1, pat, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports$1, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports$1, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports$1, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports$1, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports$1, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports$1, decls) {\n if (!exports$1) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports$1, decl.id);\n }\n};\n\npp$8.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports$1) {\n var node = this.startNode();\n node.local = this.parseModuleExportName();\n\n node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n this.checkExport(\n exports$1,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports$1) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseExportSpecifier(exports$1));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n this.next();\n\n // import '...'\n if (this.type === types$1.string) {\n node.specifiers = empty$1;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n }\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n var node = this.startNode();\n node.imported = this.parseModuleExportName();\n\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n this.checkUnreserved(node.imported);\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, BIND_LEXICAL);\n\n return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types$1.name) {\n nodes.push(this.parseImportDefaultSpecifier());\n if (!this.eat(types$1.comma)) { return nodes }\n }\n if (this.type === types$1.star) {\n nodes.push(this.parseImportNamespaceSpecifier());\n return nodes\n }\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseImportSpecifier());\n }\n return nodes\n};\n\npp$8.parseWithClause = function() {\n var nodes = [];\n if (!this.eat(types$1._with)) {\n return nodes\n }\n this.expect(types$1.braceL);\n var attributeKeys = {};\n var first = true;\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var attr = this.parseImportAttribute();\n var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n if (hasOwn(attributeKeys, keyName))\n { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n attributeKeys[keyName] = true;\n nodes.push(attr);\n }\n return nodes\n};\n\npp$8.parseImportAttribute = function() {\n var node = this.startNode();\n node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n this.expect(types$1.colon);\n if (this.type !== types$1.string) {\n this.unexpected();\n }\n node.value = this.parseExprAtom();\n return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n var stringLiteral = this.parseLiteral(this.value);\n if (loneSurrogate.test(stringLiteral.value)) {\n this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n }\n return stringLiteral\n }\n return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$8.isDirectiveCandidate = function(statement) {\n return (\n this.options.ecmaVersion >= 5 &&\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types$1.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types$1.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types$1.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types$1.comma); }\n if (allowEmpty && this.type === types$1.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types$1.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n elts.push(this.parseAssignableListItem(allowModifiers));\n }\n }\n return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n// nothing other than identifiers and member expressions. Parenthesized\n// expressions are also correctly handled. This is generally appropriate for\n// constructs for which the spec says\n//\n// > It is a Syntax Error if AssignmentTargetType of [the production] is not\n// > simple.\n//\n// It is also appropriate for checking if an identifier is valid and not\n// defined elsewhere, like import declarations or function/class identifiers.\n//\n// Examples where this is used include:\n// a += …;\n// import a from '…';\n// where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n// anything checkLValSimple() supports, as well as object and array\n// destructuring patterns. This is generally appropriate for constructs for\n// which the spec says\n//\n// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n// > an ArrayLiteral and AssignmentTargetType of [the production] is not\n// > simple.\n//\n// Examples where this is used include:\n// (a = …);\n// const a = …;\n// try { … } catch (a) { … }\n// where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n// anything checkLValPattern() supports, as well as default assignment\n// patterns, rest elements, and other constructs that may appear within an\n// object or array destructuring pattern.\n//\n// As a special case, function parameters also use checkLValInnerPattern(),\n// as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n var isBind = bindingType !== BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (isBind) {\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (checkClashes) {\n if (hasOwn(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ParenthesizedExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n default:\n this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.checkLValInnerPattern(prop, bindingType, checkClashes);\n }\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n }\n break\n\n default:\n this.checkLValSimple(expr, bindingType, checkClashes);\n }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n break\n\n case \"AssignmentPattern\":\n this.checkLValPattern(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLValPattern(expr.argument, bindingType, checkClashes);\n break\n\n default:\n this.checkLValPattern(expr, bindingType, checkClashes);\n }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n return [types.b_stat]\n};\n\npp$6.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types.f_expr || parent === types.f_stat)\n { return true }\n if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n { return true }\n if (prevType === types$1.braceL)\n { return parent === types.b_stat }\n if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types$1.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n if (this.curContext() !== tokenCtx) {\n this.context[this.context.length - 1] = tokenCtx;\n }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types$1._else &&\n !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n { this.context.push(types.f_expr); }\n else\n { this.context.push(types.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n if (this.curContext().token === \"function\") { this.context.pop(); }\n this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n if (prevType === types$1._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types.f_expr)\n { this.context[index] = types.f_expr_gen; }\n else\n { this.context[index] = types.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n } else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n var this$1$1 = this;\n\n return this.catchStackOverflow(function () {\n var startPos = this$1$1.start, startLoc = this$1$1.startLoc;\n var expr = this$1$1.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this$1$1.type === types$1.comma) {\n var node = this$1$1.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this$1$1.eat(types$1.comma)) { node.expressions.push(this$1$1.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this$1$1.finishNode(node, \"SequenceExpression\")\n }\n return expr\n })\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(forInit) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldDoubleProto = refDestructuringErrors.doubleProto;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types$1.parenL || this.type === types$1.name) {\n this.potentialArrowAt = this.start;\n this.potentialArrowInForAwait = forInit === \"await\";\n }\n var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n if (this.type === types$1.eq)\n { left = this.toAssignable(left, false, refDestructuringErrors); }\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n // reset these when detected inside this expression\n if (refDestructuringErrors.shorthandAssign >= left.start) { refDestructuringErrors.shorthandAssign = -1; }\n if (refDestructuringErrors.doubleProto >= left.start) { refDestructuringErrors.doubleProto = -1; }\n }\n if (this.type === types$1.eq)\n { this.checkLValPattern(left); }\n else\n { this.checkLValSimple(left); }\n node.left = left;\n this.next();\n node.right = this.parseMaybeAssign(forInit);\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(forInit, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (!(expr.type === \"ArrowFunctionExpression\" && expr.start === startPos) && this.eat(types$1.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types$1.colon);\n node.alternate = this.parseMaybeAssign(forInit);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n var prec = this.type.binop;\n if (prec != null && (!forInit || this.type !== types$1._in)) {\n if (prec > minPrec) {\n var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n var coalesce = this.type === types$1.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types$1.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n }\n }\n return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && this.canAwait) {\n expr = this.parseAwait(forInit);\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types$1.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true, update, forInit);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLValSimple(node.argument); }\n else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else if (!sawUnary && this.type === types$1.privateId) {\n if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n expr = this.parsePrivateIdent();\n // only could be private fields in 'in', such as #x in obj\n if (this.type !== types$1._in) { this.unexpected(); }\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLValSimple(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!incDec && !(expr.type === \"ArrowFunctionExpression\" && expr.start === startPos) && this.eat(types$1.starstar)) {\n if (sawUnary)\n { this.unexpected(this.lastTokStart); }\n else\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n } else {\n return expr\n }\n};\n\nfunction isLocalVariableAccess(node) {\n return (\n node.type === \"Identifier\" ||\n node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n )\n}\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n var startPos = this.start, startLoc = this.startLoc;\n var oldDoubleProto = -1, oldShorthandAssign = -1;\n if (refDestructuringErrors) {\n oldDoubleProto = refDestructuringErrors.doubleProto;\n oldShorthandAssign = refDestructuringErrors.shorthandAssign;\n refDestructuringErrors.doubleProto = refDestructuringErrors.shorthandAssign = -1;\n }\n var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n if (refDestructuringErrors) {\n if (result.end > expr.end) {\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n }\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n if (oldShorthandAssign > -1) { refDestructuringErrors.shorthandAssign = oldShorthandAssign; }\n }\n return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n if (element.optional) { optionalChained = true; }\n if (element.end === base.end || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n maybeAsyncArrow = false;\n }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types$1.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types$1.bracketL);\n if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(types$1.bracketR);\n } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n node.property = this.parsePrivateIdent();\n } else {\n node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n }\n node.computed = !!computed;\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types$1.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types$1.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types$1.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types$1._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types$1.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types$1._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types$1.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n this.overrideContext(types.f_expr);\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types$1.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n }\n }\n return id\n\n case types$1.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types$1.num: case types$1.string:\n return this.parseLiteral(this.value)\n\n case types$1._null: case types$1._true: case types$1._false:\n node = this.startNode();\n node.value = this.type === types$1._null ? null : this.type === types$1._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types$1.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types$1.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types$1.braceL:\n this.overrideContext(types.b_expr);\n return this.parseObj(false, refDestructuringErrors)\n\n case types$1._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types$1._class:\n return this.parseClass(this.startNode(), false)\n\n case types$1._new:\n return this.parseNew()\n\n case types$1.backQuote:\n return this.parseTemplate()\n\n case types$1._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport(forNew)\n } else {\n return this.unexpected()\n }\n\n default:\n return this.parseExprAtomDefault()\n }\n};\n\npp$5.parseExprAtomDefault = function() {\n this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n this.next();\n\n if (this.type === types$1.parenL && !forNew) {\n return this.parseDynamicImport(node)\n } else if (this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"import\";\n node.meta = this.finishNode(meta, \"Identifier\");\n return this.parseImportMeta(node)\n } else {\n this.unexpected();\n }\n};\n\npp$5.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n if (this.options.ecmaVersion >= 16) {\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n node.options = this.parseMaybeAssign();\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n this.unexpected();\n }\n }\n } else {\n node.options = null;\n }\n } else {\n node.options = null;\n }\n } else {\n // Verify ending.\n if (!this.eat(types$1.parenR)) {\n var errorPos = this.start;\n if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110)\n { node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n this.expect(types$1.parenL);\n var val = this.parseExpression();\n this.expect(types$1.parenR);\n return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types$1.parenR) {\n first ? first = false : this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types$1.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types$1.comma) {\n this.raiseRecoverable(\n this.start,\n \"Comma is not permitted after the rest element\"\n );\n }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n this.expect(types$1.parenR);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$5.parseParenItem = function(item) {\n return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n this.next();\n if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"new\";\n node.meta = this.finishNode(meta, \"Identifier\");\n this.next();\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.allowNewDotTarget)\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n if (node.callee.type === \"Super\")\n { this.raiseRecoverable(startPos, \"Invalid use of 'super'\"); }\n if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types$1.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types$1.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types$1.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types$1.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types$1.comma) {\n this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types$1.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n var kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n prop.kind = kind;\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types$1.colon)\n { this.unexpected(); }\n\n if (this.eat(types$1.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n prop.kind = \"init\";\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.parseGetterSetter(prop);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else if (this.type === types$1.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else {\n prop.value = this.copyNode(prop.key);\n }\n prop.kind = \"init\";\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types$1.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types$1.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n var isExpression = isArrowFunction && this.type !== types$1.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign(forInit);\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n var nameHash = Object.create(null);\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types$1.comma)\n { elt = null; }\n else if (this.type === types$1.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n var node = this.parseIdentNode();\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\npp$5.parseIdentNode = function() {\n var node = this.startNode();\n if (this.type === types$1.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n this.type = types$1.name;\n } else {\n this.unexpected();\n }\n return node\n};\n\npp$5.parsePrivateIdent = function() {\n var node = this.startNode();\n if (this.type === types$1.privateId) {\n node.name = this.value;\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"PrivateIdentifier\");\n\n // For validating existence\n if (this.options.checkPrivateFields) {\n if (this.privateNameStack.length === 0) {\n this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n } else {\n this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n }\n }\n\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types$1.star);\n node.argument = this.parseMaybeAssign(forInit);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true, false, forInit);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n if (this.sourceFile) {\n message += \" in \" + this.sourceFile;\n }\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$3.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$2.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n var newNode = new Node(this, node.start, this.startLoc);\n for (var prop in node) { newNode[prop] = node[prop]; }\n return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties,\n 12: ecma12BinaryProperties,\n 13: ecma13BinaryProperties,\n 14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n 9: \"\",\n 10: \"\",\n 11: \"\",\n 12: \"\",\n 13: \"\",\n 14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues,\n 12: ecma12ScriptValues,\n 13: ecma13ScriptValues,\n 14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n var ecmaVersion = list[i];\n\n buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n // Parent disjunction branch\n this.parent = parent;\n // Identifies this set of sibling branches\n this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n // A branch is separate from another branch if they or any of\n // their parents are siblings in a given disjunction\n for (var self = this; self; self = self.parent) {\n for (var other = alt; other; other = other.parent) {\n if (self.base === other.base && self !== other) { return true }\n }\n }\n return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchV = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = Object.create(null);\n this.backReferenceNames = [];\n this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicodeSets = flags.indexOf(\"v\") !== -1;\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n this.switchU = true;\n this.switchV = true;\n this.switchN = true;\n } else {\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchV = false;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var pos = this.pos;\n for (var i = 0, list = chs; i < list.length; i += 1) {\n var ch = list[i];\n\n var current = this.at(pos, forceU);\n if (current === -1 || current !== ch) {\n return false\n }\n pos = this.nextIndex(pos, forceU);\n }\n this.pos = pos;\n return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n var u = false;\n var v = false;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n if (flag === \"u\") { u = true; }\n if (flag === \"v\") { v = true; }\n }\n if (this.options.ecmaVersion >= 15 && u && v) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n};\n\nfunction hasProp(obj) {\n for (var _ in obj) { return true }\n return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames = Object.create(null);\n state.backReferenceNames.length = 0;\n state.branchID = null;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (!state.groupNames[name]) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n var trackDisjunction = this.options.ecmaVersion >= 16;\n if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n this.regexp_alternative(state);\n }\n if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */)) {\n if (this.options.ecmaVersion >= 16) {\n var addModifiers = this.regexp_eatModifiers(state);\n var hasHyphen = state.eat(0x2D /* - */);\n if (addModifiers || hasHyphen) {\n for (var i = 0; i < addModifiers.length; i++) {\n var modifier = addModifiers.charAt(i);\n if (addModifiers.indexOf(modifier, i + 1) > -1) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n if (hasHyphen) {\n var removeModifiers = this.regexp_eatModifiers(state);\n if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n state.raise(\"Invalid regular expression modifiers\");\n }\n for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n var modifier$1 = removeModifiers.charAt(i$1);\n if (\n removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n addModifiers.indexOf(modifier$1) > -1\n ) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n }\n }\n }\n if (state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n// RegularExpressionModifiers ::\n// [empty]\n// RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n var modifiers = \"\";\n var ch = 0;\n while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n modifiers += codePointToString(ch);\n state.advance();\n }\n return modifiers\n};\n// RegularExpressionModifier :: one of\n// `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n var trackDisjunction = this.options.ecmaVersion >= 16;\n var known = state.groupNames[state.lastStringValue];\n if (known) {\n if (trackDisjunction) {\n for (var i = 0, list = known; i < list.length; i += 1) {\n var altID = list[i];\n\n if (!altID.separatedFrom(state.branchID))\n { state.raise(\"Duplicate capture group name\"); }\n }\n } else {\n state.raise(\"Duplicate capture group name\");\n }\n }\n if (trackDisjunction) {\n (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n } else {\n state.groupNames[state.lastStringValue] = true;\n }\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$1.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return CharSetOk\n }\n\n var negate = false;\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n var result;\n if (\n state.eat(0x7B /* { */) &&\n (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n state.eat(0x7D /* } */)\n ) {\n if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n return result\n }\n state.raise(\"Invalid property name\");\n }\n\n return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return CharSetOk\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n }\n return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!hasOwn(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (!state.eat(0x5D /* ] */))\n { state.raise(\"Unterminated character class\"); }\n if (negate && result === CharSetString)\n { state.raise(\"Negated character class may contain strings\"); }\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n if (state.current() === 0x5D /* ] */) { return CharSetOk }\n if (state.switchV) { return this.regexp_classSetExpression(state) }\n this.regexp_nonEmptyClassRanges(state);\n return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n var result = CharSetOk, subResult;\n if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n if (subResult === CharSetString) { result = CharSetString; }\n // https://tc39.es/ecma262/#prod-ClassIntersection\n var start = state.pos;\n while (state.eatChars([0x26, 0x26] /* && */)) {\n if (\n state.current() !== 0x26 /* & */ &&\n (subResult = this.regexp_eatClassSetOperand(state))\n ) {\n if (subResult !== CharSetString) { result = CharSetOk; }\n continue\n }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n // https://tc39.es/ecma262/#prod-ClassSubtraction\n while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n if (this.regexp_eatClassSetOperand(state)) { continue }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n } else {\n state.raise(\"Invalid character in character class\");\n }\n // https://tc39.es/ecma262/#prod-ClassUnion\n for (;;) {\n if (this.regexp_eatClassSetRange(state)) { continue }\n subResult = this.regexp_eatClassSetOperand(state);\n if (!subResult) { return result }\n if (subResult === CharSetString) { result = CharSetString; }\n }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n var start = state.pos;\n if (this.regexp_eatClassSetCharacter(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n var right = state.lastIntValue;\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n return true\n }\n state.pos = start;\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n var start = state.pos;\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (state.eat(0x5D /* ] */)) {\n if (negate && result === CharSetString) {\n state.raise(\"Negated character class may contain strings\");\n }\n return result\n }\n state.pos = start;\n }\n if (state.eat(0x5C /* \\ */)) {\n var result$1 = this.regexp_eatCharacterClassEscape(state);\n if (result$1) {\n return result$1\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n var start = state.pos;\n if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n if (state.eat(0x7B /* { */)) {\n var result = this.regexp_classStringDisjunctionContents(state);\n if (state.eat(0x7D /* } */)) {\n return result\n }\n } else {\n // Make the same message as V8.\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n var result = this.regexp_classString(state);\n while (state.eat(0x7C /* | */)) {\n if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n }\n return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n var count = 0;\n while (this.regexp_eatClassSetCharacter(state)) { count++; }\n return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (\n this.regexp_eatCharacterEscape(state) ||\n this.regexp_eatClassSetReservedPunctuator(state)\n ) {\n return true\n }\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n state.pos = start;\n return false\n }\n var ch = state.current();\n if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n if (isClassSetSyntaxCharacter(ch)) { return false }\n state.advance();\n state.lastIntValue = ch;\n return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n ch === 0x2E /* . */ ||\n ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n ch === 0x5E /* ^ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n return (\n ch === 0x28 /* ( */ ||\n ch === 0x29 /* ) */ ||\n ch === 0x2D /* - */ ||\n ch === 0x2F /* / */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n var ch = state.current();\n if (isClassSetReservedPunctuator(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch === 0x23 /* # */ ||\n ch === 0x25 /* % */ ||\n ch === 0x26 /* & */ ||\n ch === 0x2C /* , */ ||\n ch === 0x2D /* - */ ||\n ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n ch === 0x40 /* @ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp[Symbol.iterator] = function() {\n var this$1$1 = this;\n\n return {\n next: function () {\n var token = this$1$1.getToken();\n return {\n done: token.type === types$1.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAt = function(pos) {\n var code = this.input.charCodeAt(pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.fullCharCodeAtPos = function() {\n return this.fullCharCodeAt(this.pos)\n};\n\npp.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n ++this.curLine;\n pos = this.lineStart = nextBreak;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types$1.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types$1.dot)\n }\n};\n\npp.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types$1.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types$1.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(types$1.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types$1.arrow)\n }\n return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(types$1.coalesce, 2)\n }\n }\n return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n var ecmaVersion = this.options.ecmaVersion;\n var code = 35; // '#'\n if (ecmaVersion >= 13) {\n ++this.pos;\n code = this.fullCharCodeAtPos();\n if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n return this.finishToken(types$1.privateId, this.readWord1())\n }\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types$1.parenL)\n case 41: ++this.pos; return this.finishToken(types$1.parenR)\n case 59: ++this.pos; return this.finishToken(types$1.semi)\n case 44: ++this.pos; return this.finishToken(types$1.comma)\n case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n case 123: ++this.pos; return this.finishToken(types$1.braceL)\n case 125: ++this.pos; return this.finishToken(types$1.braceR)\n case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types$1.prefix, 1)\n\n case 35: // '#'\n return this.readToken_numberSign()\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\npp.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else if (ch === 0x2028 || ch === 0x2029) {\n if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n if (this.options.locations) {\n this.curLine++;\n this.lineStart = this.pos;\n }\n } else {\n if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types$1.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types$1.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") { break }\n // fall through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n case \"\\r\":\n if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n // fall through\n case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n ++this.curLine;\n this.lineStart = this.pos + 1;\n break\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (this.strict) {\n this.invalidStringToken(\n this.pos - 1,\n \"Invalid escape sequence\"\n );\n }\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n var word = this.readWord1();\n var type = types$1.name;\n if (this.keywords.test(word)) {\n type = keywords[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n\n\nvar version = \"8.19.0\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types$1,\n keywordTypes: keywords,\n TokContext: TokContext,\n tokContexts: types,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n",
7
+ "const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n",
8
+ "export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n",
9
+ "import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n",
10
+ "export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n",
11
+ "// Generated using scripts/write-decode-map.ts\nexport const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map",
12
+ "// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map",
13
+ "import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map",
14
+ "/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n",
15
+ "import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/decode';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === $.NULL) {\n return ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return ERR.characterReferenceOutsideUnicodeRange;\n }\n else if (isSurrogate(code)) {\n return ERR.surrogateCharacterReference;\n }\n else if (isUndefinedCodePoint(code)) {\n return ERR.noncharacterCharacterReference;\n }\n else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n return ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n",
16
+ "import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n $.APPLET,\n $.CAPTION,\n $.HTML,\n $.MARQUEE,\n $.OBJECT,\n $.TABLE,\n $.TD,\n $.TEMPLATE,\n $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n if (this.current && this.currentTagId !== undefined) {\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(Math.max(targetIdx, 0));\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(Math.max(idx, 0));\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== undefined &&\n this.currentTagId !== exclusionId &&\n IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n",
17
+ "//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex !== -1) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx === -1) {\n this.entries.length = 0;\n }\n else {\n this.entries.splice(0, markerIdx + 1);\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n",
18
+ "import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n",
19
+ "import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n",
20
+ "import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n",
21
+ "import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === NS.HTML);\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode =\n !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n currentTagId !== undefined &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return (this.fosterParentingEnabled &&\n this.openElements.currentTagId !== undefined &&\n this._isElementCausesFosterParenting(this.openElements.currentTagId));\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(Math.max(idx, 0));\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED:\n case $.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.HR: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n p.openElements.currentTagId !== undefined &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n",
22
+ "import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/escape';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n",
23
+ "import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n",
24
+ "import { parse as parseJavaScript } from \"acorn\";\nimport { parseFragment, type DefaultTreeAdapterMap, type ParserError } from \"parse5\";\nimport type { HtmlInspectionResult, HtmlSourceDiagnostic, HtmlSourcePosition, HtmlValidationResult } from \"./types\";\n\ntype P5Node = DefaultTreeAdapterMap[\"node\"] & {\n nodeName: string;\n tagName?: string;\n attrs?: { name: string; value: string }[];\n childNodes?: P5Node[];\n content?: P5Node;\n value?: string;\n sourceCodeLocation?: P5Location;\n};\ntype P5Location = {\n startOffset: number; endOffset: number; startLine: number; startCol: number; endLine: number; endCol: number;\n attrs?: Record<string, P5Location>; startTag?: P5Location; endTag?: P5Location;\n};\n\nconst blockedElements = new Set([\"iframe\", \"frame\", \"frameset\", \"object\", \"embed\", \"applet\", \"portal\"]);\nconst urlAttributes = new Set([\"href\", \"src\", \"action\", \"formaction\", \"poster\", \"xlink:href\"]);\nconst voidElements = new Set([\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"]);\nconst optionalEnd = new Set([\"html\", \"head\", \"body\", \"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"thead\", \"tbody\", \"tfoot\", \"tr\", \"td\", \"th\"]);\n\nfunction position(offset: number, line: number, column: number): HtmlSourcePosition { return { offset, line, column }; }\nfunction offsetPosition(source: string, offset: number): HtmlSourcePosition {\n const before = source.slice(0, offset);\n const lines = before.split(/\\r\\n?|\\n/);\n return position(offset, lines.length, (lines.at(-1)?.length ?? 0) + 1);\n}\nfunction diagnostic(code: string, message: string, severity: \"error\" | \"warning\", location?: P5Location,\n relative?: { pos: number; loc: { line: number; column: number } }): HtmlSourceDiagnostic {\n if (!location) return { code, message, severity };\n if (relative) {\n const contentStart = location.startTag?.endOffset ?? location.startOffset;\n const contentLine = location.startTag?.endLine ?? location.startLine;\n const contentCol = location.startTag?.endCol ?? location.startCol;\n return { code, message, severity, start: position(contentStart + relative.pos,\n contentLine + relative.loc.line - 1, relative.loc.line === 1 ? contentCol + relative.loc.column : relative.loc.column + 1) };\n }\n return { code, message, severity, start: position(location.startOffset, location.startLine, location.startCol),\n end: position(location.endOffset, location.endLine, location.endCol) };\n}\n\nexport function formatSlexKitDiagnostic(item: HtmlSourceDiagnostic): string {\n return `${item.code}: ${item.message}${item.start ? ` (${item.start.line}:${item.start.column})` : \"\"}`;\n}\nexport class SlexKitSyntaxError extends SyntaxError {\n readonly code: string;\n readonly diagnostic: HtmlSourceDiagnostic;\n constructor(item: HtmlSourceDiagnostic) {\n super(formatSlexKitDiagnostic(item)); this.name = \"SlexKitSyntaxError\"; this.code = item.code; this.diagnostic = item;\n }\n}\nexport class SlexKitRuntimeError extends Error {\n constructor(message: string) { super(message); this.name = \"SlexKitRuntimeError\"; }\n}\n\nfunction oldDslOffset(source: string): number | undefined {\n let offset = 0;\n while (offset < source.length) {\n const whitespace = /^[\\s]+/.exec(source.slice(offset));\n if (whitespace) { offset += whitespace[0].length; continue; }\n if (source.startsWith(\"//\", offset)) {\n const end = source.indexOf(\"\\n\", offset + 2); offset = end < 0 ? source.length : end + 1; continue;\n }\n if (source.startsWith(\"/*\", offset)) {\n const end = source.indexOf(\"*/\", offset + 2); if (end < 0) return undefined; offset = end + 2; continue;\n }\n break;\n }\n const candidate = source.slice(offset).trimEnd().replace(/;\\s*$/, \"\");\n if (!candidate || !/^[({[]/.test(candidate)) return undefined;\n try {\n const program = parseJavaScript(`(${candidate})`, { ecmaVersion: \"latest\", sourceType: \"module\" }) as unknown as {\n body: Array<{ type: string; expression?: { type: string; elements?: Array<{ type?: string } | null> } }>;\n };\n const expression = program.body[0]?.expression;\n if (expression?.type === \"ObjectExpression\"\n || (expression?.type === \"ArrayExpression\" && expression.elements?.some(item => item?.type === \"ObjectExpression\"))) return offset;\n } catch { /* HTML or incomplete JavaScript is handled by the HTML parser. */ }\n return undefined;\n}\n\nfunction scriptText(node: P5Node): string {\n return (node.childNodes ?? []).filter(child => child.nodeName === \"#text\").map(child => child.value ?? \"\").join(\"\");\n}\nfunction executableType(value: string | undefined): boolean {\n const type = (value ?? \"module\").trim().toLowerCase();\n return !type || type === \"module\" || /^(?:text|application)\\/(?:java|ecma)script$/.test(type);\n}\nfunction unsafeUrl(value: string): boolean {\n const colon = value.indexOf(\":\");\n if (colon < 0) return false;\n const scheme = value.slice(0, colon).replace(/[\\u0000-\\u0020\\u007f]+/g, \"\").toLowerCase();\n if (scheme === \"javascript\" || scheme === \"vbscript\") return true;\n if (scheme !== \"data\") return false;\n const header = value.slice(colon + 1, value.indexOf(\",\", colon + 1) < 0 ? undefined : value.indexOf(\",\", colon + 1))\n .replace(/[\\u0000-\\u0020\\u007f]+/g, \"\").toLowerCase();\n return /^(?:text\\/html|image\\/svg\\+xml|application\\/(?:xhtml\\+xml|javascript)|text\\/javascript)(?:;|$)/.test(header);\n}\n\nfunction walk(node: P5Node, diagnostics: HtmlSourceDiagnostic[]): void {\n const tag = node.tagName?.toLowerCase();\n const attrs = node.attrs ?? [];\n const attr = (name: string) => attrs.find(item => item.name.toLowerCase() === name)?.value;\n if (tag && blockedElements.has(tag)) diagnostics.push(diagnostic(\"active-embedded-content\", `<${tag}> is not allowed in SlexKit HTML.`, \"error\", node.sourceCodeLocation));\n if (tag === \"base\") diagnostics.push(diagnostic(\"base-element\", \"<base> is not allowed.\", \"error\", node.sourceCodeLocation));\n if (tag === \"meta\" && (attr(\"http-equiv\") ?? \"\").toLowerCase() === \"refresh\") diagnostics.push(diagnostic(\"meta-navigation\", \"Meta refresh navigation is not allowed.\", \"error\", node.sourceCodeLocation));\n if (tag === \"script\" && attr(\"src\") !== undefined) diagnostics.push(diagnostic(\"external-script\", \"External script src is not allowed.\", \"error\", node.sourceCodeLocation));\n if (tag === \"link\" && /^(?:modulepreload|import|stylesheet)$/i.test(attr(\"rel\") ?? \"\")) diagnostics.push(diagnostic(\"external-resource\", \"External link imports and stylesheets are not allowed.\", \"error\", node.sourceCodeLocation));\n for (const item of attrs) {\n const name = item.name.toLowerCase();\n if (name.startsWith(\"$\")) diagnostics.push(diagnostic(\"legacy-expression-attribute\", \"Slex expression attributes are no longer supported; use JavaScript properties and events.\", \"error\", node.sourceCodeLocation?.attrs?.[item.name] ?? node.sourceCodeLocation));\n const location = node.sourceCodeLocation?.attrs?.[item.name] ?? node.sourceCodeLocation;\n if (/^on[a-z]/i.test(name)) diagnostics.push(diagnostic(\"inline-event-handler\", `Inline event attribute '${item.name}' is not allowed.`, \"error\", location));\n if (urlAttributes.has(name) && unsafeUrl(item.value)) diagnostics.push(diagnostic(\"executable-url\", `Executable URL in '${item.name}' is not allowed.`, \"error\", location));\n }\n if (tag && node.sourceCodeLocation?.startTag && !node.sourceCodeLocation.endTag && !voidElements.has(tag) && !optionalEnd.has(tag)) {\n diagnostics.push(diagnostic(tag === \"script\" && executableType(attr(\"type\")) ? \"incomplete-script\" : \"unclosed-html-element\",\n tag === \"script\" ? \"Inline script is incomplete; a closing </script> is required.\" : `<${tag}> has no explicit closing tag; the browser will recover it.`,\n tag === \"script\" && executableType(attr(\"type\")) ? \"error\" : \"warning\", node.sourceCodeLocation.startTag));\n }\n if (tag === \"script\" && attr(\"src\") === undefined && executableType(attr(\"type\"))) {\n try {\n const program = parseJavaScript(scriptText(node), { ecmaVersion: \"latest\", sourceType: \"module\", locations: true });\n const visit = (value: unknown): void => {\n if (!value || typeof value !== \"object\") return;\n const record = value as Record<string, unknown>;\n if (record.type === \"ImportDeclaration\" || record.type === \"ImportExpression\"\n || ((record.type === \"ExportNamedDeclaration\" || record.type === \"ExportAllDeclaration\") && record.source)) {\n const loc = record.loc as { start: { line: number; column: number } };\n diagnostics.push(diagnostic(\"external-import\", \"Module imports and re-exports are not allowed.\", \"error\", node.sourceCodeLocation,\n { pos: record.start as number, loc: loc.start })); return;\n }\n for (const child of Object.values(record)) {\n if (Array.isArray(child)) child.forEach(visit);\n else visit(child);\n }\n };\n visit(program);\n } catch (error) {\n const parseError = error as SyntaxError & { pos?: number; loc?: { line: number; column: number } };\n diagnostics.push(diagnostic(\"invalid-module-script\", parseError.message.replace(/\\s*\\(\\d+:\\d+\\)$/, \"\"), \"error\", node.sourceCodeLocation,\n parseError.pos !== undefined && parseError.loc ? { pos: parseError.pos, loc: parseError.loc } : undefined));\n }\n }\n for (const child of node.childNodes ?? []) walk(child, diagnostics);\n if (node.content) walk(node.content, diagnostics);\n}\n\nexport function inspectSlexSource(source: unknown): HtmlInspectionResult {\n if (typeof source !== \"string\") {\n const item: HtmlSourceDiagnostic = { code: \"source-type\", message: \"SlexKit HTML source must be a string.\", severity: \"error\" };\n return { ok: false, diagnostic: item, diagnostics: [item], warnings: [], error: new TypeError(item.message) };\n }\n const legacyOffset = oldDslOffset(source);\n if (legacyOffset !== undefined) {\n const item: HtmlSourceDiagnostic = { code: \"legacy-object-source\", message: \"Object-literal Slex source is no longer supported; provide an HTML fragment.\", severity: \"error\", start: offsetPosition(source, legacyOffset) };\n return { ok: false, diagnostic: item, diagnostics: [item], warnings: [], error: new SlexKitSyntaxError(item) };\n }\n const parseErrors: ParserError[] = [];\n const document = parseFragment(source, { sourceCodeLocationInfo: true, onParseError: error => parseErrors.push(error) }) as P5Node;\n const diagnostics: HtmlSourceDiagnostic[] = parseErrors.map(error => ({ code: `html-${error.code}`, message: `HTML parser recovery: ${error.code}.`, severity: \"warning\",\n start: position(error.startOffset, error.startLine, error.startCol), end: position(error.endOffset, error.endLine, error.endCol) }));\n walk(document, diagnostics);\n // Avoid duplicate parser-recovery warnings when a more useful incomplete-script diagnostic exists.\n if (diagnostics.some(item => item.code === \"incomplete-script\")) {\n for (let index = diagnostics.length - 1; index >= 0; index--) if (diagnostics[index].code.includes(\"eof-in-element\")) diagnostics.splice(index, 1);\n }\n const errors = diagnostics.filter(item => item.severity === \"error\");\n const warnings = diagnostics.filter(item => item.severity === \"warning\");\n if (errors.length) return { ok: false, diagnostic: errors[0], diagnostics, warnings, error: new SlexKitSyntaxError(errors[0]) };\n return { ok: true, value: source, diagnostics, warnings };\n}\n\nexport const parseSlexSource = inspectSlexSource;\nexport function validateSlexSource(source: unknown): HtmlValidationResult {\n const result = inspectSlexSource(source);\n const diagnostics = result.diagnostics ?? (result.diagnostic ? [result.diagnostic] : []);\n const warnings = diagnostics.filter(item => item.severity === \"warning\");\n const errors = diagnostics.filter(item => item.severity === \"error\");\n return { ok: result.ok, valid: errors.length === 0, diagnostics, warnings, errors };\n}\n"
7
25
  ],
8
- "mappings": "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",
9
- "debugId": "47E6ACD49C36F18A64756E2164756E21",
26
+ "mappings": ";;;;AACA;AACA;;;ACDA,IAAI,wBAAwB,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG;AAGjuC,IAAI,6BAA6B,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,GAAG,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,KAAK,MAAM,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,KAAK,MAAM,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAA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",
27
+ "debugId": "DDA25CD0F3BB27B864756E2164756E21",
10
28
  "names": []
11
29
  }