From b41e0b7580e9ae65ee2fa46d9b864da590a2f16c Mon Sep 17 00:00:00 2001 From: sverweij Date: Tue, 31 Dec 2024 11:16:54 +0100 Subject: [PATCH] chore: 2025 --- LICENSE | 2 +- dist/cli/actions.mjs | 2 +- docs/index.hbs | 2 +- docs/index.html | 2 +- docs/smcat-online-interpreter.min.js.map | 4 ++-- docs/state-machine-cat-inpage.min.js.map | 4 ++-- src/cli/actions.mts | 2 +- test/cli/cli.spec.mts | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/LICENSE b/LICENSE index 2c174e86..1eeccc65 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016-2024 Sander Verweij +Copyright (c) 2016-2025 Sander Verweij Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/dist/cli/actions.mjs b/dist/cli/actions.mjs index cda6eb43..beca1948 100644 --- a/dist/cli/actions.mjs +++ b/dist/cli/actions.mjs @@ -5,7 +5,7 @@ const LICENSE = ` The MIT License (MIT) -Copyright (c) 2016-2024 Sander Verweij +Copyright (c) 2016-2025 Sander Verweij Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/docs/index.hbs b/docs/index.hbs index 0156f767..1d0be20a 100644 --- a/docs/index.hbs +++ b/docs/index.hbs @@ -262,7 +262,7 @@ copyright sverweij 2016-2024 + rel="noopener noreferrer">sverweij 2016-2025 diff --git a/docs/index.html b/docs/index.html index e2a86cc8..dfae3d1d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -253,7 +253,7 @@ copyright sverweij 2016-2024 + rel="noopener noreferrer">sverweij 2016-2025 diff --git a/docs/smcat-online-interpreter.min.js.map b/docs/smcat-online-interpreter.min.js.map index ef96a049..527523a2 100644 --- a/docs/smcat-online-interpreter.min.js.map +++ b/docs/smcat-online-interpreter.min.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/ajv/lib/compile/codegen/code.ts", "../node_modules/ajv/lib/compile/codegen/scope.ts", "../node_modules/ajv/lib/compile/codegen/index.ts", "../node_modules/ajv/lib/compile/util.ts", "../node_modules/ajv/lib/compile/names.ts", "../node_modules/ajv/lib/compile/errors.ts", "../node_modules/ajv/lib/compile/validate/boolSchema.ts", "../node_modules/ajv/lib/compile/rules.ts", "../node_modules/ajv/lib/compile/validate/applicability.ts", "../node_modules/ajv/lib/compile/validate/dataType.ts", "../node_modules/ajv/lib/compile/validate/defaults.ts", "../node_modules/ajv/lib/vocabularies/code.ts", "../node_modules/ajv/lib/compile/validate/keyword.ts", "../node_modules/ajv/lib/compile/validate/subschema.ts", "../node_modules/fast-deep-equal/index.js", "../node_modules/json-schema-traverse/index.js", "../node_modules/ajv/lib/compile/resolve.ts", "../node_modules/ajv/lib/compile/validate/index.ts", "../node_modules/ajv/lib/runtime/validation_error.ts", "../node_modules/ajv/lib/compile/ref_error.ts", "../node_modules/ajv/lib/compile/index.ts", "../node_modules/ajv/dist/refs/data.json", "../node_modules/fast-uri/lib/scopedChars.js", "../node_modules/fast-uri/lib/utils.js", "../node_modules/fast-uri/lib/schemes.js", "../node_modules/fast-uri/index.js", "../node_modules/ajv/lib/runtime/uri.ts", "../node_modules/ajv/lib/core.ts", "../node_modules/ajv/lib/vocabularies/core/id.ts", "../node_modules/ajv/lib/vocabularies/core/ref.ts", "../node_modules/ajv/lib/vocabularies/core/index.ts", "../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts", "../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../node_modules/ajv/lib/runtime/ucs2length.ts", "../node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../node_modules/ajv/lib/vocabularies/validation/required.ts", "../node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../node_modules/ajv/lib/runtime/equal.ts", "../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../node_modules/ajv/lib/vocabularies/validation/const.ts", "../node_modules/ajv/lib/vocabularies/validation/enum.ts", "../node_modules/ajv/lib/vocabularies/validation/index.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items.ts", "../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items2020.ts", "../node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/not.ts", "../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/if.ts", "../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../node_modules/ajv/lib/vocabularies/applicator/index.ts", "../node_modules/ajv/lib/vocabularies/format/format.ts", "../node_modules/ajv/lib/vocabularies/format/index.ts", "../node_modules/ajv/lib/vocabularies/metadata.ts", "../node_modules/ajv/lib/vocabularies/draft7.ts", "../node_modules/ajv/lib/vocabularies/discriminator/types.ts", "../node_modules/ajv/lib/vocabularies/discriminator/index.ts", "../node_modules/ajv/dist/refs/json-schema-draft-07.json", "../node_modules/ajv/lib/ajv.ts", "../node_modules/fast-xml-parser/src/util.js", "../node_modules/fast-xml-parser/src/validator.js", "../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js", "../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js", "../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js", "../node_modules/strnum/strnum.js", "../node_modules/fast-xml-parser/src/ignoreAttributes.js", "../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js", "../node_modules/fast-xml-parser/src/xmlparser/node2json.js", "../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js", "../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js", "../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js", "../node_modules/fast-xml-parser/src/fxp.js", "../node_modules/he/he.js", "../node_modules/query-string/base.js", "../node_modules/decode-uri-component/index.js", "../node_modules/filter-obj/index.js", "../node_modules/split-on-first/index.js", "../node_modules/query-string/index.js", "../src/options.mts", "../src/parse/index.mts", "../src/counter.mts", "../src/state-machine-model.mts", "../src/parse/parser-helpers.mts", "../src/parse/smcat/smcat-parser.mjs", "../src/parse/smcat/parse.mts", "../src/parse/scxml/index.mjs", "../node_modules/neotraverse/dist/index.js", "../src/transform/utl.mts", "../src/parse/scxml/utl.mts", "../src/parse/scxml/normalize-machine.mts", "../src/parse/smcat-ast.schema.mts", "../src/transform/desugar.mts", "../src/render/smcat.mts", "../src/render/dot/index.mts", "../src/render/dot/attributebuilder.mts", "../src/render/dot/utl.mts", "../node_modules/@hpcc-js/wasm-graphviz/dist/index.js", "../src/render/vector/vector-with-wasm.mts", "../src/render/scjson/make-valid-xml-name.mts", "../src/render/scjson/make-valid-event-names.mts", "../src/render/scjson/index.mts", "../src/render/scxml/render-from-scjson.mts", "../src/render/scxml/index.mts", "../src/render/index.mts", "../src/version.mts", "../src/index.mts", "sitesrc/to-raster-uri.js", "sitesrc/theme-attribute-map.js", "smcat-online-interpreter.js"], - "sourcesContent": ["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record\n\ntype ScopeValues = {\n [Prefix in string]?: Map\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs): MergeEvaluatedFunc {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc\n items: MergeEvaluatedFunc\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n", "import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n", "import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n", "import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n", "{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n", "'use strict'\n\nconst HEX = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n a: 10,\n A: 10,\n b: 11,\n B: 11,\n c: 12,\n C: 12,\n d: 13,\n D: 13,\n e: 14,\n E: 14,\n f: 15,\n F: 15\n}\n\nmodule.exports = {\n HEX\n}\n", "'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n const [address] = matches\n if (address) {\n return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n } else {\n return { host, isIPV4: false }\n }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n let acc = ''\n let strip = true\n for (const c of input) {\n if (HEX[c] === undefined) return undefined\n if (c !== '0' && strip === true) strip = false\n if (!strip) acc += c\n }\n if (keepZero && acc.length === 0) acc = '0'\n return acc\n}\n\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n const address = []\n const buffer = []\n let isZone = false\n let endipv6Encountered = false\n let endIpv6 = false\n\n function consume () {\n if (buffer.length) {\n if (isZone === false) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== undefined) {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n }\n buffer.length = 0\n }\n return true\n }\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume()) { break }\n tokenCount++\n address.push(':')\n if (tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i - 1 >= 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n continue\n } else if (cursor === '%') {\n if (!consume()) { break }\n // switch to zone detection\n isZone = true\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (isZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, escapedHost, isIPV6: true }\n } else {\n return { host, isIPV6: false }\n }\n}\n\nfunction stripLeadingZeros (str, token) {\n let out = ''\n let skip = true\n const l = str.length\n for (let i = 0; i < l; i++) {\n const c = str[i]\n if (c === '0' && skip) {\n if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n out += c\n skip = false\n }\n } else {\n if (c === token) {\n skip = true\n } else {\n skip = false\n }\n out += c\n }\n }\n return out\n}\n\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n const output = []\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, '')\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, '/')\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, '/')\n output.pop()\n } else if (input === '.' || input === '..') {\n input = ''\n } else {\n const im = input.match(RDS5)\n if (im) {\n const s = im[0]\n input = input.slice(s.length)\n output.push(s)\n } else {\n throw new Error('Unexpected dot segment condition')\n }\n }\n }\n return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n const func = esc !== true ? escape : unescape\n if (components.scheme !== undefined) {\n components.scheme = func(components.scheme)\n }\n if (components.userinfo !== undefined) {\n components.userinfo = func(components.userinfo)\n }\n if (components.host !== undefined) {\n components.host = func(components.host)\n }\n if (components.path !== undefined) {\n components.path = func(components.path)\n }\n if (components.query !== undefined) {\n components.query = func(components.query)\n }\n if (components.fragment !== undefined) {\n components.fragment = func(components.fragment)\n }\n return components\n}\n\nfunction recomposeAuthority (components, options) {\n const uriTokens = []\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo)\n uriTokens.push('@')\n }\n\n if (components.host !== undefined) {\n let host = unescape(components.host)\n const ipV4res = normalizeIPv4(host)\n\n if (ipV4res.isIPV4) {\n host = ipV4res.host\n } else {\n const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = components.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof components.port === 'number' || typeof components.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(components.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n normalizeIPv4,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n", "'use strict'\n\nconst UUID_REG = /^[\\da-f]{8}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{12}$/iu\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nfunction isSecure (wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === 'wss'\n}\n\nfunction httpParse (components) {\n if (!components.host) {\n components.error = components.error || 'HTTP URIs must have a host.'\n }\n\n return components\n}\n\nfunction httpSerialize (components) {\n const secure = String(components.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === '') {\n components.port = undefined\n }\n\n // normalize the empty path\n if (!components.path) {\n components.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return components\n}\n\nfunction wsParse (wsComponents) {\n// indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents)\n\n // construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '')\n wsComponents.path = undefined\n wsComponents.query = undefined\n\n return wsComponents\n}\n\nfunction wsSerialize (wsComponents) {\n// normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === '') {\n wsComponents.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws')\n wsComponents.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponents.resourceName) {\n const [path, query] = wsComponents.resourceName.split('?')\n wsComponents.path = (path && path !== '/' ? path : undefined)\n wsComponents.query = query\n wsComponents.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponents.fragment = undefined\n\n return wsComponents\n}\n\nfunction urnParse (urnComponents, options) {\n if (!urnComponents.path) {\n urnComponents.error = 'URN can not be parsed'\n return urnComponents\n }\n const matches = urnComponents.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n urnComponents.nid = matches[1].toLowerCase()\n urnComponents.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponents.nid}`\n const schemeHandler = SCHEMES[urnScheme]\n urnComponents.path = undefined\n\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options)\n }\n } else {\n urnComponents.error = urnComponents.error || 'URN can not be parsed.'\n }\n\n return urnComponents\n}\n\nfunction urnSerialize (urnComponents, options) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n const nid = urnComponents.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = SCHEMES[urnScheme]\n\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options)\n }\n\n const uriComponents = urnComponents\n const nss = urnComponents.nss\n uriComponents.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponents\n}\n\nfunction urnuuidParse (urnComponents, options) {\n const uuidComponents = urnComponents\n uuidComponents.uuid = uuidComponents.nss\n uuidComponents.nss = undefined\n\n if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) {\n uuidComponents.error = uuidComponents.error || 'UUID is not valid.'\n }\n\n return uuidComponents\n}\n\nfunction urnuuidSerialize (uuidComponents) {\n const urnComponents = uuidComponents\n // normalize UUID\n urnComponents.nss = (uuidComponents.uuid || '').toLowerCase()\n return urnComponents\n}\n\nconst http = {\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst https = {\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst ws = {\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n}\n\nconst wss = {\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n}\n\nconst urn = {\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n}\n\nconst urnuuid = {\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n}\n\nconst SCHEMES = {\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n}\n\nmodule.exports = SCHEMES\n", "'use strict'\n\nconst { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require('./lib/utils')\nconst SCHEMES = require('./lib/schemes')\n\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = serialize(parse(uri, options), options)\n } else if (typeof uri === 'object') {\n uri = parse(serialize(uri, options), options)\n }\n return uri\n}\n\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = Object.assign({ scheme: 'null' }, options)\n const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n return serialize(resolved, { ...schemelessOptions, skipEscape: true })\n}\n\nfunction resolveComponents (base, relative, options, skipNormalization) {\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base components\n relative = parse(serialize(relative, options), options) // normalize relative components\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path.charAt(0) === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\nfunction serialize (cmpts, opts) {\n const components = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || components.scheme || '').toLowerCase()]\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options)\n\n if (components.path !== undefined) {\n if (!options.skipEscape) {\n components.path = escape(components.path)\n\n if (components.scheme !== undefined) {\n components.path = components.path.split('%3A').join(':')\n }\n } else {\n components.path = unescape(components.path)\n }\n }\n\n if (options.reference !== 'suffix' && components.scheme) {\n uriTokens.push(components.scheme, ':')\n }\n\n const authority = recomposeAuthority(components, options)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (components.path && components.path.charAt(0) !== '/') {\n uriTokens.push('/')\n }\n }\n if (components.path !== undefined) {\n let s = components.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (authority === undefined) {\n s = s.replace(/^\\/\\//u, '/%2F') // don't allow the path to start with \"//\"\n }\n\n uriTokens.push(s)\n }\n\n if (components.query !== undefined) {\n uriTokens.push('?', components.query)\n }\n\n if (components.fragment !== undefined) {\n uriTokens.push('#', components.fragment)\n }\n return uriTokens.join('')\n}\n\nconst hexLookUp = Array.from({ length: 127 }, (v, k) => /[^!\"$&'()*+,\\-.;=_`a-z{}~]/u.test(String.fromCharCode(k)))\n\nfunction nonSimpleDomain (value) {\n let code = 0\n for (let i = 0, len = value.length; i < len; ++i) {\n code = value.charCodeAt(i)\n if (code > 126 || hexLookUp[code]) {\n return true\n }\n }\n return false\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n const gotEncoding = uri.indexOf('%') !== -1\n let isIP = false\n if (options.reference === 'suffix') uri = (options.scheme ? options.scheme + ':' : '') + '//' + uri\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = normalizeIPv4(parsed.host)\n if (ipv4result.isIPV4 === false) {\n const ipv6result = normalizeIPv6(ipv4result.host, { isIPV4: false })\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n parsed.host = ipv4result.host\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && !parsed.path && parsed.query === undefined) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || '').toLowerCase()]\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (gotEncoding && parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (gotEncoding && parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n if (parsed.path !== undefined && parsed.path.length) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment !== undefined && parsed.fragment.length) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponents,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n", "import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n", "export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set = new Set()\n private readonly _loading: {[Ref in string]?: Promise} = {}\n private readonly _cache: Map = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise\n validate(schema: Schema | JSONSchemaType | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate(schema: JTDSchemaType, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate(\n schema: T,\n data: unknown\n ): data is JTDDataType\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate(schema: AsyncSchema, data: unknown | T): Promise\n validate(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise\n validate(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile(schema: Schema | JSONSchemaType, _meta?: boolean): ValidateFunction\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile(schema: JTDSchemaType, _meta?: boolean): ValidateFunction\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile(\n schema: T,\n _meta?: boolean\n ): ValidateFunction>\n compile(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction\n compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction\n compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync(\n schema: SchemaObject | JSONSchemaType,\n _meta?: boolean\n ): Promise>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync(schema: JTDSchemaType, _meta?: boolean): Promise>\n compileAsync(schema: AsyncSchema, meta?: boolean): Promise>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise>\n compileAsync(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef: string): AnyValidateFunction | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n", "import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n", "// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {data, $data, schema, schemaCode, it} = cxt\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n", "import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n", "import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n", "import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator\n | FormatValidator\n | AsyncFormatValidator\n | AsyncFormatValidator\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n", "import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n", "import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n", "import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n", "import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj | DiscrErrorObj\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n", "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n", "import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n", "'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n", "'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n", "\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;", "'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;", "const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n", "const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n", "function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn", "'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"\u00A2\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"\u00A3\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"\u00A5\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"\u20AC\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"\u00A9\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"\u00AE\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"\u20B9\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n", "'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n", "const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;", "const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n", "'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it\u2019s part of a tag or an\n\t\t// unquoted attribute value. We\u2019re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer \u2264 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// \u201COtherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.\u201D\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they\u2019re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we\u2019re still here, `if ($7)` is implied; it\u2019s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n", "import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n", "const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n", "export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n", "export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n", "import * as queryString from './base.js';\n\nexport default queryString;\n", "import type {\n IAllowedValues,\n IRenderOptions,\n} from \"types/state-machine-cat.mjs\";\n\nconst ALLOWED_VALUES: IAllowedValues = Object.freeze({\n inputType: {\n default: \"smcat\",\n values: [{ name: \"smcat\" }, { name: \"json\" }, { name: \"scxml\" }],\n },\n outputType: {\n default: \"svg\",\n values: [\n { name: \"ast\" },\n { name: \"dot\" },\n { name: \"eps\" },\n { name: \"json\" },\n { name: \"oldeps\" },\n { name: \"oldps\" },\n { name: \"oldps2\" },\n { name: \"oldsvg\" },\n { name: \"pdf\" },\n { name: \"png\" },\n { name: \"ps\" },\n { name: \"ps2\" },\n { name: \"scjson\" },\n { name: \"scxml\" },\n { name: \"smcat\" },\n { name: \"svg\" },\n ],\n },\n engine: {\n default: \"dot\",\n values: [\n { name: \"dot\" },\n { name: \"circo\" },\n { name: \"fdp\" },\n { name: \"neato\" },\n { name: \"osage\" },\n { name: \"twopi\" },\n ],\n },\n direction: {\n default: \"top-down\",\n values: [\n { name: \"top-down\" },\n { name: \"bottom-top\" },\n { name: \"left-right\" },\n { name: \"right-left\" },\n ],\n },\n desugar: {\n default: false,\n values: [{ name: true }, { name: false }],\n },\n});\n\nexport function getOptionValue(\n pOptions: IRenderOptions | null,\n pOptionName: keyof IAllowedValues,\n): string | boolean {\n // eslint-disable-next-line security/detect-object-injection\n return pOptions?.[pOptionName] ?? ALLOWED_VALUES[pOptionName].default;\n}\n\nexport function getAllowedValues(): IAllowedValues {\n return ALLOWED_VALUES;\n}\n\nexport default {\n getAllowedValues,\n getOptionValue,\n};\n", "import Ajv from \"ajv\";\nimport type {\n IRenderOptions,\n IStateMachine,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"../options.mjs\";\nimport { parse as parseSmCat } from \"./smcat/parse.mjs\";\nimport { parse as parseSCXML } from \"./scxml/index.mjs\";\nimport $schema from \"./smcat-ast.schema.mjs\";\n\n// @ts-expect-error using Ajv as a class/ constructor is as per the ajv documentation, but tsc seems to thing differently\nconst ajv = new Ajv();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction validateAgainstSchema(pSchema: typeof $schema, pObject: any): void {\n if (!ajv.validate(pSchema, pObject)) {\n throw new Error(\n `The provided JSON is not a valid state-machine-cat AST: ${ajv.errorsText()}.\\n`,\n );\n }\n}\n\nexport default {\n getAST(\n pScript: string | IStateMachine,\n pOptions: IRenderOptions,\n ): IStateMachine {\n let lReturnValue = pScript;\n\n if (options.getOptionValue(pOptions, \"inputType\") === \"smcat\") {\n lReturnValue = parseSmCat(pScript as string);\n } else if (options.getOptionValue(pOptions, \"inputType\") === \"scxml\") {\n // @ts-expect-error inputType scxml => it's a string\n lReturnValue = parseSCXML(pScript);\n } else if (typeof pScript === \"string\") {\n // json\n lReturnValue = JSON.parse(pScript);\n }\n\n validateAgainstSchema($schema, lReturnValue);\n\n // @ts-expect-error by here lReturnValue is bound to be an IStateMachine\n return lReturnValue;\n },\n};\n", "export class Counter {\n #lHWM = 0;\n\n constructor(pStart: number = 0) {\n this.#lHWM = pStart;\n }\n\n next(): number {\n // eslint-disable-next-line no-plusplus\n return ++this.#lHWM;\n }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n IState,\n IStateMachine,\n ITransition,\n StateType,\n} from \"types/state-machine-cat.mjs\";\n\ninterface IFlattenedState extends Omit {\n statemachine: boolean;\n parent: string;\n}\n\nfunction flattenStatesToMap(\n pStates: IState[],\n pMap: Map,\n pParent: string = \"\",\n): void {\n pStates\n .filter((pState) => Boolean(pState.statemachine))\n .forEach((pState) => {\n // @ts-expect-error ts2345 - typescript doesn't detect that one line above we\n // ensure pState.statemachine is not undefined\n if (Object.hasOwn(pState.statemachine, \"states\")) {\n // @ts-expect-error TS doesn't detect that after the call in the filter\n // the .statemachine is guaranteed to exist\n flattenStatesToMap(pState.statemachine.states, pMap, pState.name);\n }\n });\n\n pStates.forEach((pState) =>\n pMap.set(pState.name, {\n name: pState.name,\n type: pState.type,\n statemachine: Boolean(pState.statemachine),\n parent: pParent,\n }),\n );\n}\n\nfunction flattenTransitions(pStateMachine: IStateMachine): ITransition[] {\n let lTransitions: ITransition[] = [];\n\n if (Object.hasOwn(pStateMachine, \"transitions\")) {\n // @ts-expect-error TS doesn't detect that after the call in the if the\n // .transitions is guaranteed to exist\n lTransitions = structuredClone(pStateMachine.transitions);\n }\n if (Object.hasOwn(pStateMachine, \"states\")) {\n pStateMachine.states\n .filter((pState) => Boolean(pState.statemachine))\n .forEach((pState) => {\n lTransitions = lTransitions.concat(\n // @ts-expect-error TS doesn't detect that after the call in the filter\n // the .statemachine is guaranteed to exist\n flattenTransitions(pState.statemachine),\n );\n });\n }\n return lTransitions;\n}\n\nexport default class StateMachineModel {\n #flattenedTransitions: ITransition[];\n #flattenedStates: Map;\n\n constructor(pStateMachine: IStateMachine) {\n this.#flattenedStates = new Map();\n flattenStatesToMap(pStateMachine.states ?? [], this.#flattenedStates);\n this.#flattenedTransitions = flattenTransitions(pStateMachine);\n }\n\n get flattenedTransitions(): ITransition[] {\n return this.#flattenedTransitions;\n }\n\n findStateByName(pName: string): IFlattenedState | undefined {\n return this.#flattenedStates.get(pName);\n }\n\n findStatesByTypes(pTypes: StateType[]): any[] {\n return Array.from(this.#flattenedStates.values()).filter((pState) =>\n pTypes.includes(pState.type),\n );\n }\n\n findExternalSelfTransitions(pStateName: string): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) =>\n pTransition.from === pStateName &&\n pTransition.to === pStateName &&\n pTransition.type !== \"internal\",\n );\n }\n\n findTransitionsByFrom(pFromStateName: string): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) => pTransition.from === pFromStateName,\n );\n }\n\n findTransitionsByTo(pToStateName: string): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) => pTransition.to === pToStateName,\n );\n }\n\n getMaximumTransitionId(): number {\n return Math.max(...this.#flattenedTransitions.map(({ id }) => id));\n }\n\n findTransitionsToSiblings(\n pStateName: string,\n pExcludeIds: Set,\n ): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) =>\n !pExcludeIds.has(pTransition.id) &&\n pTransition.from === pStateName &&\n this.#flattenedStates.get(pTransition.to)?.parent ===\n this.#flattenedStates.get(pStateName)?.parent,\n );\n }\n}\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n IState,\n IStateMachine,\n StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\n\nconst TRIGGER_RE_AS_A_STRING =\n \"^(entry|activity|exit)\\\\s*/\\\\s*([^\\\\n$]*)(\\\\n|$)\";\n/* eslint security/detect-non-literal-regexp:0 */\nconst TRIGGER_RE = new RegExp(TRIGGER_RE_AS_A_STRING);\n\nfunction stateExists(pKnownStateNames: string[], pName: string): boolean {\n return pKnownStateNames.includes(pName);\n}\n\ntype RegExp2StateType = {\n re: RegExp;\n stateType: import(\"../../types/state-machine-cat.mjs\").StateType;\n};\n\nconst RE2STATE_TYPE: RegExp2StateType[] = [\n {\n re: /initial/,\n stateType: \"initial\",\n },\n {\n re: /final/,\n stateType: \"final\",\n },\n {\n re: /parallel/,\n stateType: \"parallel\",\n },\n {\n re: /(deep.*history)|(history.*deep)/,\n stateType: \"deephistory\",\n },\n {\n re: /history/,\n stateType: \"history\",\n },\n {\n re: /^\\^.*/,\n stateType: \"choice\",\n },\n {\n re: /^].*/,\n stateType: \"forkjoin\",\n },\n];\n\nfunction matches(pName: string) {\n return (pEntry: RegExp2StateType): boolean => pEntry.re.test(pName);\n}\n\nfunction getStateType(pName: string): StateType {\n return (RE2STATE_TYPE.find(matches(pName)) || { stateType: \"regular\" })\n .stateType;\n}\n\nfunction initState(pName: string): IState {\n return {\n name: pName,\n type: getStateType(pName),\n };\n}\n\nfunction isComposite(pState: IState): boolean {\n return Boolean(pState.statemachine);\n}\n\nfunction getAlreadyDeclaredStates(pStateMachine: IStateMachine): string[] {\n const lStates = pStateMachine?.states ?? [];\n\n return lStates.filter(isComposite).reduce(\n (pAllStateNames, pThisState) =>\n pAllStateNames.concat(\n // cast: because of the isComposite, we now pThisState has a .statemachine\n // attribute and it won't be undefined\n getAlreadyDeclaredStates(pThisState.statemachine as IStateMachine),\n ),\n lStates.map(({ name }) => name),\n );\n}\n\nfunction extractUndeclaredStates(\n pStateMachine: IStateMachine,\n pKnownStateNames: string[],\n): IState[] {\n pKnownStateNames =\n pKnownStateNames ?? getAlreadyDeclaredStates(pStateMachine);\n\n pStateMachine.states = pStateMachine?.states ?? [];\n const lTransitions = pStateMachine?.transitions ?? [];\n\n pStateMachine.states.filter(isComposite).forEach((pState) => {\n // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n pState.statemachine.states = extractUndeclaredStates(\n // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n pState.statemachine,\n pKnownStateNames,\n );\n });\n\n lTransitions.forEach((pTransition) => {\n if (!stateExists(pKnownStateNames, pTransition.from)) {\n pKnownStateNames.push(pTransition.from);\n pStateMachine.states.push(initState(pTransition.from));\n }\n if (!stateExists(pKnownStateNames, pTransition.to)) {\n pKnownStateNames.push(pTransition.to);\n pStateMachine.states.push(initState(pTransition.to));\n }\n });\n return pStateMachine.states;\n}\n\nfunction classifyForkJoin(\n pInComingCount: number,\n pOutGoingCount: number,\n): StateType {\n let lReturnValue: StateType = \"junction\";\n\n if (pInComingCount <= 1 && pOutGoingCount > 1) {\n lReturnValue = \"fork\";\n }\n if (pInComingCount > 1 && pOutGoingCount <= 1) {\n lReturnValue = \"join\";\n }\n\n return lReturnValue;\n}\n\nfunction classifyForkJoins(\n pStateMachine: IStateMachine,\n pFlattenedStateMachineModel = new StateMachineModel(pStateMachine),\n): IStateMachine {\n // TODO: mutates parameter\n pStateMachine.states = pStateMachine.states.map((pState) => {\n if (pState.type === \"forkjoin\" && !pState.typeExplicitlySet) {\n const lInComingCount = pFlattenedStateMachineModel.findTransitionsByTo(\n pState.name,\n ).length;\n const lOutGoingCount = pFlattenedStateMachineModel.findTransitionsByFrom(\n pState.name,\n ).length;\n\n pState.type = classifyForkJoin(lInComingCount, lOutGoingCount);\n }\n if (pState.statemachine) {\n pState.statemachine = classifyForkJoins(\n pState.statemachine,\n pFlattenedStateMachineModel,\n );\n }\n return pState;\n });\n\n return pStateMachine;\n}\n\nfunction stateEqual(pStateOne: IState, pStateTwo: IState): boolean {\n return pStateOne.name === pStateTwo.name;\n}\n\nfunction uniq(\n pArray: Array,\n pEqualFunction: (a: SomeType, b: SomeType) => boolean,\n) {\n return pArray.reduce((pBag: SomeType[], pMarble: SomeType) => {\n const lMarbleIndex = pBag.findIndex((pBagItem) =>\n pEqualFunction(pBagItem, pMarble),\n );\n\n if (lMarbleIndex > -1) {\n // ensures the _last_ marble we find is in the bag on that position\n pBag[lMarbleIndex] = pMarble;\n return pBag;\n }\n return pBag.concat(pMarble);\n }, []);\n}\n\nfunction parseTransitionExpression(pString: string): {\n event?: string;\n cond?: string;\n action?: string;\n} {\n // eslint-disable-next-line security/detect-unsafe-regex\n const lTransitionExpressionRe = /([^[/]+)?(\\[[^\\]]+\\])?[^/]*(\\/.+)?/;\n const lReturnValue: { event?: string; cond?: string; action?: string } = {};\n\n // @ts-expect-error match has no fallback because lTransitionExpressionRe will match\n // any string (every part is optional)\n const lMatchResult: RegExpMatchArray = lTransitionExpressionRe.exec(pString);\n const lEventPos = 1;\n const lConditionPos = 2;\n const lActionPos = 3;\n\n if (lMatchResult[lEventPos]) {\n lReturnValue.event = lMatchResult[lEventPos].trim();\n }\n if (lMatchResult[lConditionPos]) {\n lReturnValue.cond = lMatchResult[lConditionPos].slice(1, -1).trim();\n }\n if (lMatchResult[lActionPos]) {\n lReturnValue.action = lMatchResult[lActionPos]\n .slice(1, lMatchResult[lActionPos].length)\n .trim();\n }\n\n return lReturnValue;\n}\n\nfunction setIf(\n pObject: { [name: string]: string },\n pProperty: string,\n pValue: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pCondition: (pX: any) => boolean = Boolean,\n) {\n if (pCondition(pValue)) {\n pObject[pProperty] = pValue;\n }\n}\n\nfunction setIfNotEmpty(\n pObject: { [name: string]: string },\n pProperty: string,\n pValue: string,\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setIf(pObject, pProperty, pValue, (pX: Array) => pX && pX.length > 0);\n}\n\nfunction extractAction(pActivityCandidate: string): {\n type: string;\n body: string;\n} {\n const lMatch = TRIGGER_RE.exec(pActivityCandidate);\n const lTypePos = 1;\n const lBodyPos = 2;\n\n if (lMatch) {\n return {\n type: lMatch[lTypePos],\n body: lMatch[lBodyPos],\n };\n }\n return {\n type: \"activity\",\n body: pActivityCandidate,\n };\n}\n\nfunction extractActions(pString: string): { type: string; body: string }[] {\n return pString\n .split(/\\n\\s*/g)\n .map((pActivityCandidate) => pActivityCandidate.trim())\n .map(extractAction);\n}\n\nexport default {\n initState,\n extractUndeclaredStates,\n classifyForkJoins,\n getStateType,\n stateEqual,\n uniq,\n parseTransitionExpression,\n extractActions,\n setIf,\n setIfNotEmpty,\n};\n", "// @generated by Peggy 4.2.0.\n//\n// https://peggyjs.org/\n\nimport parserHelpers from \"../parser-helpers.mjs\";\n\n\nfunction peg$subclass(child, parent) {\n function C() { this.constructor = child; }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = \"SyntaxError\";\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || \" \";\n if (str.length > targetLength) { return str; }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n var str = \"Error: \" + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n + peg$padEnd(\"\", hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class: function(expectation) {\n var escapedParts = expectation.parts.map(function(part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n },\n\n any: function() {\n return \"any character\";\n },\n\n end: function() {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { program: peg$parseprogram };\n var peg$startRuleFunction = peg$parseprogram;\n\n var peg$c0 = \",\";\n var peg$c1 = \";\";\n var peg$c2 = \"[\";\n var peg$c3 = \"]\";\n var peg$c4 = \":\";\n var peg$c5 = \"{\";\n var peg$c6 = \"}\";\n var peg$c7 = \"=\";\n var peg$c8 = \"label\";\n var peg$c9 = \"color\";\n var peg$c10 = \"class\";\n var peg$c11 = \"active\";\n var peg$c12 = \"type\";\n var peg$c13 = \"regular\";\n var peg$c14 = \"initial\";\n var peg$c15 = \"terminate\";\n var peg$c16 = \"final\";\n var peg$c17 = \"parallel\";\n var peg$c18 = \"history\";\n var peg$c19 = \"deephistory\";\n var peg$c20 = \"choice\";\n var peg$c21 = \"forkjoin\";\n var peg$c22 = \"fork\";\n var peg$c23 = \"join\";\n var peg$c24 = \"junction\";\n var peg$c25 = \"width\";\n var peg$c26 = \"external\";\n var peg$c27 = \"internal\";\n var peg$c28 = \"->\";\n var peg$c29 = \"=>>\";\n var peg$c30 = \"=>\";\n var peg$c31 = \">>\";\n var peg$c32 = \":>\";\n var peg$c33 = \"--\";\n var peg$c34 = \"==\";\n var peg$c35 = \"<-\";\n var peg$c36 = \"<<=\";\n var peg$c37 = \"<=\";\n var peg$c38 = \"<<\";\n var peg$c39 = \"<:\";\n var peg$c40 = \"#\";\n var peg$c41 = \".\";\n var peg$c42 = \"\\\"\";\n var peg$c43 = \"\\\\\\\"\";\n var peg$c44 = \"/*\";\n var peg$c45 = \"*/\";\n var peg$c46 = \"//\";\n\n var peg$r0 = /^[0-9]/;\n var peg$r1 = /^[a-zA-Z0-9_\\- ]/;\n var peg$r2 = /^[,;{]/;\n var peg$r3 = /^[;{]/;\n var peg$r4 = /^[^;, \"\\t\\n\\r=\\-><:{[]/;\n var peg$r5 = /^[ \\t]/;\n var peg$r6 = /^[\\r\\n]/;\n var peg$r7 = /^[^\\r\\n]/;\n\n var peg$e0 = peg$otherExpectation(\"statemachine\");\n var peg$e1 = peg$literalExpectation(\",\", false);\n var peg$e2 = peg$literalExpectation(\";\", false);\n var peg$e3 = peg$otherExpectation(\"state\");\n var peg$e4 = peg$literalExpectation(\"[\", false);\n var peg$e5 = peg$literalExpectation(\"]\", false);\n var peg$e6 = peg$literalExpectation(\":\", false);\n var peg$e7 = peg$literalExpectation(\"{\", false);\n var peg$e8 = peg$literalExpectation(\"}\", false);\n var peg$e9 = peg$otherExpectation(\"extended state attributes\");\n var peg$e10 = peg$otherExpectation(\"extended state attribute\");\n var peg$e11 = peg$literalExpectation(\"=\", false);\n var peg$e12 = peg$otherExpectation(\"state attribute name\");\n var peg$e13 = peg$literalExpectation(\"label\", true);\n var peg$e14 = peg$literalExpectation(\"color\", true);\n var peg$e15 = peg$otherExpectation(\"class attribute\");\n var peg$e16 = peg$literalExpectation(\"class\", true);\n var peg$e17 = peg$otherExpectation(\"state flag\");\n var peg$e18 = peg$literalExpectation(\"active\", true);\n var peg$e19 = peg$otherExpectation(\"state type\");\n var peg$e20 = peg$literalExpectation(\"type\", true);\n var peg$e21 = peg$otherExpectation(\"state type type\");\n var peg$e22 = peg$literalExpectation(\"regular\", false);\n var peg$e23 = peg$literalExpectation(\"initial\", false);\n var peg$e24 = peg$literalExpectation(\"terminate\", false);\n var peg$e25 = peg$literalExpectation(\"final\", false);\n var peg$e26 = peg$literalExpectation(\"parallel\", false);\n var peg$e27 = peg$literalExpectation(\"history\", false);\n var peg$e28 = peg$literalExpectation(\"deephistory\", false);\n var peg$e29 = peg$literalExpectation(\"choice\", false);\n var peg$e30 = peg$literalExpectation(\"forkjoin\", false);\n var peg$e31 = peg$literalExpectation(\"fork\", false);\n var peg$e32 = peg$literalExpectation(\"join\", false);\n var peg$e33 = peg$literalExpectation(\"junction\", false);\n var peg$e34 = peg$otherExpectation(\"transition\");\n var peg$e35 = peg$otherExpectation(\"extended transition attributes\");\n var peg$e36 = peg$otherExpectation(\"extended transition attribute\");\n var peg$e37 = peg$otherExpectation(\"transition attribute name\");\n var peg$e38 = peg$otherExpectation(\"transition type name\");\n var peg$e39 = peg$otherExpectation(\"numeric transition attribute name\");\n var peg$e40 = peg$literalExpectation(\"width\", true);\n var peg$e41 = peg$otherExpectation(\"transition type value\");\n var peg$e42 = peg$literalExpectation(\"external\", false);\n var peg$e43 = peg$literalExpectation(\"internal\", false);\n var peg$e44 = peg$otherExpectation(\"left to right arrow\");\n var peg$e45 = peg$literalExpectation(\"->\", false);\n var peg$e46 = peg$literalExpectation(\"=>>\", false);\n var peg$e47 = peg$literalExpectation(\"=>\", false);\n var peg$e48 = peg$literalExpectation(\">>\", false);\n var peg$e49 = peg$literalExpectation(\":>\", false);\n var peg$e50 = peg$literalExpectation(\"--\", false);\n var peg$e51 = peg$literalExpectation(\"==\", false);\n var peg$e52 = peg$otherExpectation(\"right to left arrow\");\n var peg$e53 = peg$literalExpectation(\"<-\", false);\n var peg$e54 = peg$literalExpectation(\"<<=\", false);\n var peg$e55 = peg$literalExpectation(\"<=\", false);\n var peg$e56 = peg$literalExpectation(\"<<\", false);\n var peg$e57 = peg$literalExpectation(\"<:\", false);\n var peg$e58 = peg$literalExpectation(\"#\", false);\n var peg$e59 = peg$literalExpectation(\".\", false);\n var peg$e60 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$e61 = peg$otherExpectation(\"double quoted string\");\n var peg$e62 = peg$literalExpectation(\"\\\"\", false);\n var peg$e63 = peg$literalExpectation(\"\\\\\\\"\", false);\n var peg$e64 = peg$anyExpectation();\n var peg$e65 = peg$otherExpectation(\"valid class string\");\n var peg$e66 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\", \"-\", \" \"], false, false);\n var peg$e67 = peg$classExpectation([\",\", \";\", \"{\"], false, false);\n var peg$e68 = peg$classExpectation([\";\", \"{\"], false, false);\n var peg$e69 = peg$otherExpectation(\"identifier\");\n var peg$e70 = peg$classExpectation([\";\", \",\", \" \", \"\\\"\", \"\\t\", \"\\n\", \"\\r\", \"=\", \"-\", \">\", \"<\", \":\", \"{\", \"[\"], true, false);\n var peg$e71 = peg$otherExpectation(\"whitespace\");\n var peg$e72 = peg$classExpectation([\" \", \"\\t\"], false, false);\n var peg$e73 = peg$otherExpectation(\"line end\");\n var peg$e74 = peg$classExpectation([\"\\r\", \"\\n\"], false, false);\n var peg$e75 = peg$literalExpectation(\"/*\", false);\n var peg$e76 = peg$literalExpectation(\"*/\", false);\n var peg$e77 = peg$literalExpectation(\"//\", false);\n var peg$e78 = peg$classExpectation([\"\\r\", \"\\n\"], true, false);\n var peg$e79 = peg$otherExpectation(\"comment\");\n\n var peg$f0 = function(statemachine) {\n statemachine.states = parserHelpers.extractUndeclaredStates(statemachine);\n return parserHelpers.classifyForkJoins(statemachine);\n };\n var peg$f1 = function(states, transitions) {\n let lStateMachine = {};\n parserHelpers.setIf(lStateMachine, 'states', states);\n parserHelpers.setIfNotEmpty(lStateMachine, 'transitions', transitions);\n\n return lStateMachine;\n };\n var peg$f2 = function(state) {return state};\n var peg$f3 = function(state) {return state};\n var peg$f4 = function(states) {\n return parserHelpers.uniq(states[0].concat(states[1]), parserHelpers.stateEqual);\n };\n var peg$f5 = function(notes, id, attrs) {return attrs};\n var peg$f6 = function(notes, id, extended_state_attributes, act) {return act};\n var peg$f7 = function(notes, id, extended_state_attributes, actions, sm) {return sm;};\n var peg$f8 = function(notes, id, extended_state_attributes, actions, statemachine) {\n let lState = parserHelpers.initState(id);\n (extended_state_attributes || []).forEach(\n pExtendedAttribute => parserHelpers.setIf(lState, pExtendedAttribute.name, pExtendedAttribute.value)\n );\n parserHelpers.setIf(lState, 'typeExplicitlySet', (extended_state_attributes || []).some(pExtendedAttribute => pExtendedAttribute.typeExplicitlySet));\n parserHelpers.setIf(lState, 'statemachine', statemachine);\n parserHelpers.setIfNotEmpty(lState, 'note', notes);\n\n if (actions) {\n parserHelpers.setIfNotEmpty(\n lState,\n 'actions',\n parserHelpers.extractActions(actions)\n );\n }\n\n return lState;\n };\n var peg$f9 = function(name, value) {\n return {name, value};\n };\n var peg$f10 = function(name, value) {\n return {name, value}\n };\n var peg$f11 = function(name) {\n return {name, value:true}\n };\n var peg$f12 = function(name, value) {\n return {name, value, typeExplicitlySet:true}\n };\n var peg$f13 = function(name) {\n return name.toLowerCase();\n };\n var peg$f14 = function(name) {\n return name.toLowerCase();\n };\n var peg$f15 = function(name) {\n return name.toLowerCase();\n };\n var peg$f16 = function(name) {\n return name.toLowerCase();\n };\n var peg$f17 = function(notes, trans, attrs) {return attrs};\n var peg$f18 = function(notes, trans, extended_attributes, lbl) {return lbl};\n var peg$f19 = function(notes, trans, extended_attributes, label) {\n if (label) {\n trans.label = label;\n trans = Object.assign(\n trans,\n parserHelpers.parseTransitionExpression(label),\n );\n }\n (extended_attributes || []).forEach(\n pExtendedAttribute => parserHelpers.setIf(trans, pExtendedAttribute.name, pExtendedAttribute.value)\n );\n parserHelpers.setIfNotEmpty(trans, 'note', notes);\n\n trans.id=options.counter.next();\n return trans;\n };\n var peg$f20 = function(from_, to) {\n return {\n from: from_,\n to: to\n }\n };\n var peg$f21 = function(to, from_) {\n return {\n from: from_,\n to: to\n }\n };\n var peg$f22 = function(name, value) {\n return {name, value};\n };\n var peg$f23 = function(name, value) {\n return {name, value};\n };\n var peg$f24 = function(name, value) {\n return {name, value};\n };\n var peg$f25 = function(name, value) {\n return {name, value};\n };\n var peg$f26 = function(name) {\n return name.toLowerCase();\n };\n var peg$f27 = function(name) {\n return name.toLowerCase();\n };\n var peg$f28 = function(name) {\n return name\n };\n var peg$f29 = function(com) {\n return com.join(\"\").trim()\n };\n var peg$f30 = function(digits) { return parseFloat(digits.join(\"\")); };\n var peg$f31 = function(digits) { return parseInt(digits.join(\"\"), 10); };\n var peg$f32 = function(s) {return s.join(\"\").replace(/\\\\\\\"/g, \"\\\"\")};\n var peg$f33 = function(c) {return c};\n var peg$f34 = function(s) {return s.join(\"\")};\n var peg$f35 = function(c) {return c};\n var peg$f36 = function(s) {return s.join(\"\").trim()};\n var peg$f37 = function(s) {return s.join(\"\").trim()};\n var peg$f38 = function(c) {return c};\n var peg$f39 = function(c) {return c};\n var peg$f40 = function(chars) {return chars.join(\"\")};\n var peg$currPos = options.peg$currPos | 0;\n var peg$savedPos = peg$currPos;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = peg$currPos;\n var peg$maxFailExpected = options.peg$maxFailExpected || [];\n var peg$silentFails = options.peg$silentFails | 0;\n\n var peg$result;\n\n if (options.startRule) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parseprogram() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parsestatemachine();\n s3 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f0(s2);\n\n return s0;\n }\n\n function peg$parsestatemachine() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsestates();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = [];\n s3 = peg$parsetransition();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsetransition();\n }\n peg$savedPos = s0;\n s0 = peg$f1(s1, s2);\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n\n return s0;\n }\n\n function peg$parsestates() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parsestate();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s3 = peg$f2(s4);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parsestate();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s3 = peg$f2(s4);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n s3 = peg$currPos;\n s4 = peg$parsestate();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s3 = peg$f3(s4);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f4(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsestate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsenote();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsenote();\n }\n s2 = peg$parse_();\n s3 = peg$parseidentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s6 = peg$c2;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parseextended_state_attributes();\n if (input.charCodeAt(peg$currPos) === 93) {\n s8 = peg$c3;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s5;\n s5 = peg$f5(s1, s3, s7);\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n s6 = peg$parse_();\n s7 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s8 = peg$c4;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n s10 = peg$parsestring();\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n peg$savedPos = s7;\n s7 = peg$f6(s1, s3, s5, s10);\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n s8 = peg$parse_();\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s10 = peg$c5;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n s12 = peg$parsestatemachine();\n if (s12 !== peg$FAILED) {\n s13 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s14 = peg$c6;\n peg$currPos++;\n } else {\n s14 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s14 !== peg$FAILED) {\n peg$savedPos = s9;\n s9 = peg$f7(s1, s3, s5, s7, s12);\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n s10 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f8(s1, s3, s5, s7, s9);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_attributes() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n s1 = peg$parseextended_state_attribute();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseextended_state_attribute();\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n\n return s0;\n }\n\n function peg$parseextended_state_attribute() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_state_string_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parsequotedstring();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f9(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseclass_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseclass_string();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f10(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_state_boolean_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f11(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_state_type_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseextended_state_type_attribute_type();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f12(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_string_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c8) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s1 === peg$FAILED) {\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c9) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f13(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n\n return s0;\n }\n\n function peg$parseclass_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c10) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f14(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_boolean_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 6);\n if (s1.toLowerCase() === peg$c11) {\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f15(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_type_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 4);\n if (s1.toLowerCase() === peg$c12) {\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f16(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_type_attribute_type() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 7) === peg$c13) {\n s0 = peg$c13;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c14) {\n s0 = peg$c14;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c15) {\n s0 = peg$c15;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c16) {\n s0 = peg$c16;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c17) {\n s0 = peg$c17;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c18) {\n s0 = peg$c18;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 11) === peg$c19) {\n s0 = peg$c19;\n peg$currPos += 11;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c20) {\n s0 = peg$c20;\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c21) {\n s0 = peg$c21;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c22) {\n s0 = peg$c22;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c23) {\n s0 = peg$c23;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c24) {\n s0 = peg$c24;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n\n return s0;\n }\n\n function peg$parsetransition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsenote();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsenote();\n }\n s2 = peg$parsetransitionbase();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s4 = peg$c2;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseextended_transition_attributes();\n if (input.charCodeAt(peg$currPos) === 93) {\n s6 = peg$c3;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s3;\n s3 = peg$f17(s1, s2, s5);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s5 = peg$c4;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parsetransitionstring();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n peg$savedPos = s4;\n s4 = peg$f18(s1, s2, s3, s7);\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f19(s1, s2, s3, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n\n return s0;\n }\n\n function peg$parsetransitionbase() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parsefwdarrowtoken();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseidentifier();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f20(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parsebckarrowtoken();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseidentifier();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f21(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_attributes() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n s1 = peg$parseextended_transition_attribute();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseextended_transition_attribute();\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e35); }\n\n return s0;\n }\n\n function peg$parseextended_transition_attribute() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_transition_string_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parsequotedstring();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f22(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseclass_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseclass_string();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f23(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_transition_type_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseextended_transition_type_value();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f24(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_transition_numeric_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parsepositive_number();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f25(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e36); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_string_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c9) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f26(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e37); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_type_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 4);\n if (s1.toLowerCase() === peg$c12) {\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f27(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e38); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_numeric_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c25) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e40); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f28(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e39); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_type_value() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 8) === peg$c26) {\n s0 = peg$c26;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e42); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c27) {\n s0 = peg$c27;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e43); }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e41); }\n }\n\n return s0;\n }\n\n function peg$parsefwdarrowtoken() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c28) {\n s0 = peg$c28;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e45); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s0 = peg$c29;\n peg$currPos += 3;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e46); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c30) {\n s0 = peg$c30;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e47); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c31) {\n s0 = peg$c31;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e48); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c32) {\n s0 = peg$c32;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e49); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c33) {\n s0 = peg$c33;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e50); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c34) {\n s0 = peg$c34;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e51); }\n }\n }\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e44); }\n }\n\n return s0;\n }\n\n function peg$parsebckarrowtoken() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c35) {\n s0 = peg$c35;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e53); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c36) {\n s0 = peg$c36;\n peg$currPos += 3;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e54); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c37) {\n s0 = peg$c37;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e55); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c38) {\n s0 = peg$c38;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e56); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c39) {\n s0 = peg$c39;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e57); }\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e52); }\n }\n\n return s0;\n }\n\n function peg$parsenote() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 35) {\n s2 = peg$c40;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e58); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseslcomtok();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseslcomtok();\n }\n peg$savedPos = s0;\n s0 = peg$f29(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepositive_number() {\n var s0;\n\n s0 = peg$parsepositive_real();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecardinal();\n }\n\n return s0;\n }\n\n function peg$parsepositive_real() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsecardinal();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s3 = peg$c41;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e59); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsecardinal();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f30(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecardinal() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e60); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e60); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f31(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsetransitionstring() {\n var s0;\n\n s0 = peg$parsequotedstring();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunquotedtransitionstring();\n }\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0;\n\n s0 = peg$parsequotedstring();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunquotedstring();\n }\n\n return s0;\n }\n\n function peg$parsequotedstring() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsestringcontent();\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f32(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e61); }\n }\n\n return s0;\n }\n\n function peg$parsestringcontent() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c43) {\n s3 = peg$c43;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e63); }\n }\n if (s3 === peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f33(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c43) {\n s3 = peg$c43;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e63); }\n }\n if (s3 === peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f33(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseclass_string() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseclass_stringcontent();\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f34(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e65); }\n }\n\n return s0;\n }\n\n function peg$parseclass_stringcontent() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e66); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f35(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e66); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f35(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseunquotedtransitionstring() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsetransitionnonsep();\n peg$savedPos = s0;\n s1 = peg$f36(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseunquotedstring() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenonsep();\n peg$savedPos = s0;\n s1 = peg$f37(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsenonsep() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r2.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e67); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f38(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r2.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e67); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f38(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsetransitionnonsep() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r3.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e68); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f39(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r3.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e68); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f39(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r4.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e70); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r4.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e70); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f40(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsequotedstring();\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e69); }\n }\n\n return s0;\n }\n\n function peg$parsewhitespace() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = input.charAt(peg$currPos);\n if (peg$r5.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e72); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e71); }\n }\n\n return s0;\n }\n\n function peg$parselineend() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = input.charAt(peg$currPos);\n if (peg$r6.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e74); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e73); }\n }\n\n return s0;\n }\n\n function peg$parsemlcomstart() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c44) {\n s0 = peg$c44;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e75); }\n }\n\n return s0;\n }\n\n function peg$parsemlcomend() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c45) {\n s0 = peg$c45;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e76); }\n }\n\n return s0;\n }\n\n function peg$parsemlcomtok() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c45) {\n s2 = peg$c45;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e76); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsemlcomment() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsemlcomstart();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsemlcomtok();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsemlcomtok();\n }\n s3 = peg$parsemlcomend();\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseslcomstart() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c46) {\n s0 = peg$c46;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e77); }\n }\n\n return s0;\n }\n\n function peg$parseslcomtok() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r7.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e78); }\n }\n\n return s0;\n }\n\n function peg$parseslcomment() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseslcomstart();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseslcomtok();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseslcomtok();\n }\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecomment() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$parseslcomment();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemlcomment();\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e79); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parselineend();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parselineend();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos\n });\n }\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nconst peg$allowedStartRules = [\n \"program\"\n];\n\nexport {\n peg$allowedStartRules as StartRules,\n peg$SyntaxError as SyntaxError,\n peg$parse as parse\n};\n", "import type { IStateMachine } from \"types/state-machine-cat.mjs\";\nimport { Counter } from \"../../counter.mjs\";\nimport { parse as pegParse } from \"./smcat-parser.mjs\";\n\nexport function parse(pScript: string): IStateMachine {\n return pegParse(pScript, { counter: new Counter() });\n}\n", "/* eslint-disable security/detect-object-injection */\nimport fastxml from \"fast-xml-parser\";\nimport he from \"he\";\nimport traverse from \"neotraverse\";\nimport { Counter } from \"../../counter.mjs\";\nimport parserHelpers from \"../parser-helpers.mjs\";\nimport utl from \"../../transform/utl.mjs\";\nimport { castArray } from \"./utl.mjs\";\nimport { normalizeMachine } from \"./normalize-machine.mjs\";\n\nconst formatLabel = utl.formatLabel;\n\nfunction extractActions(pState, pActionType) {\n return castArray(pState[pActionType]).map((pAction) => ({\n type: pActionType === \"onexit\" ? \"exit\" : \"entry\",\n body: he.decode(pAction).trim(),\n }));\n}\n\nfunction extractActionsFromInvokes(pInvokeTriggers) {\n return castArray(pInvokeTriggers).map((pInvokeTrigger) => {\n const lId = he.decode(pInvokeTrigger.id || \"\").trim();\n\n return {\n type: \"activity\",\n body: lId || he.decode(pInvokeTrigger || \"\").trim(),\n };\n });\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @returns {any[]}\n */\nfunction deriveActions(pState) {\n let lReturnValue = [];\n\n if (pState.onentry) {\n lReturnValue = lReturnValue.concat(extractActions(pState, \"onentry\"));\n }\n if (pState.invoke) {\n lReturnValue = lReturnValue.concat(\n extractActionsFromInvokes(pState.invoke),\n );\n }\n if (pState.onexit) {\n lReturnValue = lReturnValue.concat(extractActions(pState, \"onexit\"));\n }\n return lReturnValue;\n}\n\n/**\n * @param {import(\"../../..\").StateType} pType\n * @param {import(\"./scxml\").ISCXMLHistoryState} pState\n * @param {any} pState\n * @returns {import(\"../../..\").StateType}\n */\nfunction deriveStateType(pType, pState) {\n return pType === \"history\" && pState.type === \"deep\" ? \"deephistory\" : pType;\n}\n\n/**\n * @param {import(\"../../../types/state-machine-cat\").StateType} pType\n * @returns {(any) => import(\"../../..\").IState}\n */\nfunction mapState(pType) {\n return (pState) => {\n /** @type {import(\"../../../types/state-machine-cat\").IState} */\n const lReturnValue = {\n name: pState.id,\n type: deriveStateType(pType, pState),\n };\n\n if (parserHelpers.getStateType(pState.id) !== lReturnValue.type) {\n lReturnValue.typeExplicitlySet = true;\n }\n if (pState.onentry || pState.onexit || pState.invoke) {\n lReturnValue.actions = deriveActions(pState);\n }\n if (\n Object.keys(pState).some((pKey) =>\n [\"initial\", \"state\", \"history\", \"parallel\", \"final\"].includes(pKey),\n )\n ) {\n // recursion, so ...\n // eslint-disable-next-line no-use-before-define\n lReturnValue.statemachine = mapMachine(pState);\n }\n return lReturnValue;\n };\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{event?: string; cond?: string; action?: string; type?: string;}}\n */\nfunction extractTransitionAttributesFromObject(pTransition) {\n const lReturnValue = {};\n\n if (pTransition.event) {\n // SCXML uses spaces to distinguish multiple events\n // the smcat ast uses linebreaks\n lReturnValue.event = pTransition.event.split(/\\s+/).join(\"\\n\");\n }\n if (pTransition.cond) {\n lReturnValue.cond = pTransition.cond;\n }\n if (pTransition[\"#text\"]) {\n lReturnValue.action = he.decode(pTransition[\"#text\"]).trim();\n }\n\n if (pTransition.type) {\n lReturnValue.type = pTransition.type;\n }\n\n return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{action?: string; label?: string;event?: string; cond?: string; type?: string}}\n */\nfunction extractTransitionAttributes(pTransition) {\n const lReturnValue = {};\n\n if (typeof pTransition === \"string\") {\n lReturnValue.action = he.decode(pTransition).trim();\n } else {\n Object.assign(\n lReturnValue,\n extractTransitionAttributesFromObject(pTransition),\n );\n }\n\n const lLabel = formatLabel(\n lReturnValue.event,\n lReturnValue.cond,\n lReturnValue.action,\n );\n\n if (lLabel) {\n lReturnValue.label = lLabel;\n }\n\n return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n */\nfunction reduceTransition(pState, pCounter) {\n /**\n * @param {import(\"./scxml\").ISCXMLTransition[]} pAllTransitions\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {import(\"../../..\").ITransition}\n */\n return (pAllTransitions, pTransition) => {\n // in SCXML spaces denote references to multiple states\n // => split into multiple transitions\n const lTargets = (pTransition?.target ?? pState.id).split(/\\s+/);\n const lTransitionAttributes = extractTransitionAttributes(pTransition);\n\n return pAllTransitions.concat(\n lTargets.map((pTarget) => ({\n id: pCounter.next(),\n from: pState.id,\n // a 'target-less transition' is typically\n // a self-transition\n to: pTarget,\n ...lTransitionAttributes,\n })),\n );\n };\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState[]} pStates\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n * @returns {import(\"../../../types/state-machine-cat\").ITransition[]}\n */\nfunction extractTransitions(pStates, pCounter) {\n return pStates\n .filter((pState) => Object.hasOwn(pState, \"transition\"))\n .reduce((pAllTransitions, pThisState) => {\n const lTransitionAsArray = castArray(pThisState.transition);\n return pAllTransitions.concat(\n lTransitionAsArray.reduce(reduceTransition(pThisState, pCounter), []),\n );\n }, []);\n}\n\n/**\n * @param {any} pSCXMLStateMachine\n * @returns {import(\"../../..\").IStateMachine}\n */\nfunction mapMachine(pSCXMLStateMachine) {\n const lNormalizedMachine = normalizeMachine(pSCXMLStateMachine);\n const lReturnValue = {\n states: lNormalizedMachine.initial\n .map(mapState(\"initial\"))\n .concat(lNormalizedMachine.state.map(mapState(\"regular\")))\n .concat(lNormalizedMachine.parallel.map(mapState(\"parallel\")))\n .concat(lNormalizedMachine.history.map(mapState(\"history\")))\n .concat(lNormalizedMachine.final.map(mapState(\"final\"))),\n };\n const lCounter = new Counter();\n\n const lTransitions = extractTransitions(lNormalizedMachine.initial, lCounter)\n .concat(extractTransitions(lNormalizedMachine.state, lCounter))\n .concat(extractTransitions(lNormalizedMachine.parallel, lCounter));\n\n if (lTransitions.length > 0) {\n lReturnValue.transitions = lTransitions;\n }\n\n return lReturnValue;\n}\n\n/**\n * This funky looking replace exists to make the output of the fast-xml-parser\n * backwards compatible with its version 3 that in case of conflicts between\n * attribute names and tag names gave preference to the attribute name (version 4\n * does the opposite). The previous behaviour was undocumented and for fast-xml-parser\n * likely a kind of edge case (normal people probably don't pass an empty attributeNamePrefix).\n *\n * @param {any} pObject\n * @param {string} pAttributeNamePrefix\n * @returns {any} the object, but\n * - with attributes that have the same name as tags in the same parent removed,\n * - attributes that don't have an equally named tag get their key renamed back\n * to the one without the pAttributeNamePrefix\n */\nfunction deDuplicateAttributesAndTags(pObject, pAttributeNamePrefix) {\n // - 'traverse' relies on the 'this' property a 'normal' function provides,\n // so this is not an arrow function.\n // - while it looks iffy to have a map function without a return statement\n // it's canonical traverse use (as per https://github.com/ljharb/js-traverse/blob/v0.6.7/README.md)\n // eslint-disable-next-line array-callback-return\n return traverse(pObject).map(function deDuplicate() {\n if (this.key?.startsWith(pAttributeNamePrefix)) {\n const pUnPrefixedAttributeName = this.key.slice(\n pAttributeNamePrefix.length,\n );\n if (this.parent.keys.includes(pUnPrefixedAttributeName)) {\n this.remove();\n } else {\n this.parent.node[pUnPrefixedAttributeName] = this.node;\n this.remove();\n }\n }\n });\n}\n\n/**\n * Parses SCXML into a state machine AST.\n *\n * @param {string} pSCXMLString The SCXML to parse\n * @returns {import(\"../../../types/state-machine-cat\").IStateMachine} state machine AST\n */\nexport function parse(pSCXMLString) {\n const lTrimmedSCXMLString = pSCXMLString.trim();\n const lAttributeNamePrefix = \"@_\";\n /** @type {import(\"./scxml\").ISCXMLAsJSON} */\n let lXMLAsJSON = {};\n\n const lXMLParser = new fastxml.XMLParser({\n attributeNamePrefix: lAttributeNamePrefix,\n ignoreAttributes: false,\n parseTagValue: true,\n processEntities: false,\n tagValueProcessor: (_pTagName, pTagValue) => he.decode(pTagValue),\n stopNodes: [\"*.onentry\", \"*.onexit\", \"*.transition\"],\n });\n\n try {\n lXMLAsJSON = deDuplicateAttributesAndTags(\n lXMLParser.parse(lTrimmedSCXMLString, true),\n lAttributeNamePrefix,\n );\n } catch (pError) {\n throw new Error(\"That doesn't look like valid xml ...\\n\");\n }\n return mapMachine(\n lXMLAsJSON?.scxml ?? {\n xmlns: \"http://www.w3.org/2005/07/scxml\",\n version: \"1.0\",\n },\n );\n}\n", "// src/index.ts\nvar to_string = (obj) => Object.prototype.toString.call(obj);\nvar is_typed_array = (value) => ArrayBuffer.isView(value) && !(value instanceof DataView);\nvar is_date = (obj) => to_string(obj) === \"[object Date]\";\nvar is_regexp = (obj) => to_string(obj) === \"[object RegExp]\";\nvar is_error = (obj) => to_string(obj) === \"[object Error]\";\nvar is_boolean = (obj) => to_string(obj) === \"[object Boolean]\";\nvar is_number = (obj) => to_string(obj) === \"[object Number]\";\nvar is_string = (obj) => to_string(obj) === \"[object String]\";\nvar is_array = Array.isArray;\nvar gopd = Object.getOwnPropertyDescriptor;\nvar is_property_enumerable = Object.prototype.propertyIsEnumerable;\nvar get_own_property_symbols = Object.getOwnPropertySymbols;\nvar has_own_property = Object.prototype.hasOwnProperty;\nfunction own_enumerable_keys(obj) {\n const res = Object.keys(obj);\n const symbols = get_own_property_symbols(obj);\n for (let i = 0; i < symbols.length; i++) {\n if (is_property_enumerable.call(obj, symbols[i])) {\n res.push(symbols[i]);\n }\n }\n return res;\n}\nfunction is_writable(object, key) {\n return !gopd(object, key)?.writable;\n}\nfunction copy(src, options) {\n if (typeof src === \"object\" && src !== null) {\n let dst;\n if (is_array(src)) {\n dst = [];\n } else if (is_date(src)) {\n dst = new Date(src.getTime ? src.getTime() : src);\n } else if (is_regexp(src)) {\n dst = new RegExp(src);\n } else if (is_error(src)) {\n dst = { message: src.message };\n } else if (is_boolean(src) || is_number(src) || is_string(src)) {\n dst = Object(src);\n } else if (is_typed_array(src)) {\n return src.slice();\n } else {\n dst = Object.create(Object.getPrototypeOf(src));\n }\n const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n for (const key of iterator_function(src)) {\n dst[key] = src[key];\n }\n return dst;\n }\n return src;\n}\nvar empty_null = {\n includeSymbols: false,\n immutable: false\n};\nfunction walk(root, cb, options = empty_null) {\n const path = [];\n const parents = [];\n let alive = true;\n const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n const immutable = !!options.immutable;\n return function walker(node_) {\n const node = immutable ? copy(node_, options) : node_;\n const modifiers = {};\n let keep_going = true;\n const state = {\n node,\n node_,\n path: [].concat(path),\n parent: parents[parents.length - 1],\n parents,\n key: path[path.length - 1],\n isRoot: path.length === 0,\n level: path.length,\n circular: void 0,\n isLeaf: false,\n notLeaf: true,\n notRoot: true,\n isFirst: false,\n isLast: false,\n update: function(x, stopHere = false) {\n if (!state.isRoot) {\n state.parent.node[state.key] = x;\n }\n state.node = x;\n if (stopHere) {\n keep_going = false;\n }\n },\n delete: function(stopHere) {\n delete state.parent.node[state.key];\n if (stopHere) {\n keep_going = false;\n }\n },\n remove: function(stopHere) {\n if (is_array(state.parent.node)) {\n state.parent.node.splice(state.key, 1);\n } else {\n delete state.parent.node[state.key];\n }\n if (stopHere) {\n keep_going = false;\n }\n },\n keys: null,\n before: function(f) {\n modifiers.before = f;\n },\n after: function(f) {\n modifiers.after = f;\n },\n pre: function(f) {\n modifiers.pre = f;\n },\n post: function(f) {\n modifiers.post = f;\n },\n stop: function() {\n alive = false;\n },\n block: function() {\n keep_going = false;\n }\n };\n if (!alive) {\n return state;\n }\n function update_state() {\n if (typeof state.node === \"object\" && state.node !== null) {\n if (!state.keys || state.node_ !== state.node) {\n state.keys = iterator_function(state.node);\n }\n state.isLeaf = state.keys.length === 0;\n for (let i = 0; i < parents.length; i++) {\n if (parents[i].node_ === node_) {\n state.circular = parents[i];\n break;\n }\n }\n } else {\n state.isLeaf = true;\n state.keys = null;\n }\n state.notLeaf = !state.isLeaf;\n state.notRoot = !state.isRoot;\n }\n update_state();\n const ret = cb.call(state, state.node);\n if (ret !== void 0 && state.update) {\n state.update(ret);\n }\n if (modifiers.before) {\n modifiers.before.call(state, state.node);\n }\n if (!keep_going) {\n return state;\n }\n if (typeof state.node === \"object\" && state.node !== null && !state.circular) {\n parents.push(state);\n update_state();\n for (const [index, key] of Object.entries(state.keys ?? [])) {\n path.push(key);\n if (modifiers.pre) {\n modifiers.pre.call(state, state.node[key], key);\n }\n const child = walker(state.node[key]);\n if (immutable && has_own_property.call(state.node, key) && !is_writable(state.node, key)) {\n state.node[key] = child.node;\n }\n child.isLast = state.keys?.length ? +index === state.keys.length - 1 : false;\n child.isFirst = +index === 0;\n if (modifiers.post) {\n modifiers.post.call(state, child);\n }\n path.pop();\n }\n parents.pop();\n }\n if (modifiers.after) {\n modifiers.after.call(state, state.node);\n }\n return state;\n }(root).node;\n}\nvar Traverse = class {\n // ! Have to keep these public as legacy mode requires them\n #value;\n #options;\n constructor(obj, options = empty_null) {\n this.#value = obj;\n this.#options = options;\n }\n /**\n * Get the element at the array `path`.\n */\n get(paths) {\n let node = this.#value;\n for (let i = 0; node && i < paths.length; i++) {\n const key = paths[i];\n if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n return void 0;\n }\n node = node[key];\n }\n return node;\n }\n /**\n * Return whether the element at the array `path` exists.\n */\n has(paths) {\n let node = this.#value;\n for (let i = 0; node && i < paths.length; i++) {\n const key = paths[i];\n if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n return false;\n }\n node = node[key];\n }\n return true;\n }\n /**\n * Set the element at the array `path` to `value`.\n */\n set(path, value) {\n let node = this.#value;\n let i = 0;\n for (i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (!has_own_property.call(node, key)) {\n node[key] = {};\n }\n node = node[key];\n }\n node[path[i]] = value;\n return value;\n }\n /**\n * Execute `fn` for each node in the object and return a new object with the results of the walk. To update nodes in the result use `this.update(value)`.\n */\n map(cb) {\n return walk(this.#value, cb, {\n immutable: true,\n includeSymbols: !!this.#options.includeSymbols\n });\n }\n /**\n * Execute `fn` for each node in the object but unlike `.map()`, when `this.update()` is called it updates the object in-place.\n */\n forEach(cb) {\n this.#value = walk(this.#value, cb, this.#options);\n return this.#value;\n }\n /**\n * For each node in the object, perform a [left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function)) with the return value of `fn(acc, node)`.\n *\n * If `init` isn't specified, `init` is set to the root object for the first step and the root element is skipped.\n */\n reduce(cb, init) {\n const skip = arguments.length === 1;\n let acc = skip ? this.#value : init;\n this.forEach(function(x) {\n if (!this.isRoot || !skip) {\n acc = cb.call(this, acc, x);\n }\n });\n return acc;\n }\n /**\n * Return an `Array` of every possible non-cyclic path in the object.\n * Paths are `Array`s of string keys.\n */\n paths() {\n const acc = [];\n this.forEach(function() {\n acc.push(this.path);\n });\n return acc;\n }\n /**\n * Return an `Array` of every node in the object.\n */\n nodes() {\n const acc = [];\n this.forEach(function() {\n acc.push(this.node);\n });\n return acc;\n }\n /**\n * Create a deep clone of the object.\n */\n clone() {\n const parents = [];\n const nodes = [];\n const options = this.#options;\n if (is_typed_array(this.#value)) {\n return this.#value.slice();\n }\n return function clone(src) {\n for (let i = 0; i < parents.length; i++) {\n if (parents[i] === src) {\n return nodes[i];\n }\n }\n if (typeof src === \"object\" && src !== null) {\n const dst = copy(src, options);\n parents.push(src);\n nodes.push(dst);\n const iteratorFunction = options.includeSymbols ? own_enumerable_keys : Object.keys;\n for (const key of iteratorFunction(src)) {\n dst[key] = clone(src[key]);\n }\n parents.pop();\n nodes.pop();\n return dst;\n }\n return src;\n }(this.#value);\n }\n};\nvar traverse = (obj, options) => {\n return new Traverse(obj, options);\n};\ntraverse.get = (obj, paths, options) => {\n return new Traverse(obj, options).get(paths);\n};\ntraverse.set = (obj, path, value, options) => {\n return new Traverse(obj, options).set(path, value);\n};\ntraverse.has = (obj, paths, options) => {\n return new Traverse(obj, options).has(paths);\n};\ntraverse.map = (obj, cb, options) => {\n return new Traverse(obj, options).map(cb);\n};\ntraverse.forEach = (obj, cb, options) => {\n return new Traverse(obj, options).forEach(cb);\n};\ntraverse.reduce = (obj, cb, init, options) => {\n return new Traverse(obj, options).reduce(cb, init);\n};\ntraverse.paths = (obj, options) => {\n return new Traverse(obj, options).paths();\n};\ntraverse.nodes = (obj, options) => {\n return new Traverse(obj, options).nodes();\n};\ntraverse.clone = (obj, options) => {\n return new Traverse(obj, options).clone();\n};\nvar src_default = traverse;\nexport {\n Traverse,\n src_default as default\n};\n", "function formatLabel(\n pEvent?: string,\n pCond?: string,\n pActions?: string,\n): string {\n let lReturnValue = \"\";\n\n if (pEvent) {\n lReturnValue += pEvent;\n }\n if (pCond) {\n lReturnValue += ` [${pCond}]`;\n }\n if (pActions) {\n lReturnValue += `/ ${pActions}`;\n }\n return lReturnValue.trim();\n}\n\nexport default {\n formatLabel,\n};\n", "export function castArray(pAThing: unknown): Array {\n return Array.isArray(pAThing) ? pAThing : [pAThing];\n}\n", "import { castArray } from \"./utl.mjs\";\nimport type { INormalizedSCXMLMachine, ISCXMLInitialState } from \"./scxml.js\";\n\nfunction normalizeInitialFromObject(\n pInitialObject: Partial,\n pId: string,\n): ISCXMLInitialState {\n const lReturnValue = {\n // ensure the 'initial' state has a unique name\n id: pId ? `${pId}.initial` : \"initial\",\n };\n\n if (pInitialObject.transition) {\n Object.assign(lReturnValue, {\n transition: [pInitialObject.transition],\n });\n }\n\n return lReturnValue;\n}\n\nfunction normalizeInitialFromString(pString: string): ISCXMLInitialState {\n return {\n id: \"initial\",\n transition: [\n {\n target: pString,\n },\n ],\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalizeInitial(pMachine: any): ISCXMLInitialState[] {\n const lReturnValue = [];\n\n if (pMachine.initial) {\n if (typeof pMachine.initial === \"string\") {\n lReturnValue.push(normalizeInitialFromString(pMachine.initial));\n } else {\n lReturnValue.push(\n normalizeInitialFromObject(pMachine.initial, pMachine.id),\n );\n }\n }\n return lReturnValue;\n}\n\n/**\n * Massages SCXML-as-json to be uniform:\n *\n * @param pMachine SCXML-as-json state machine\n * @returns Still an SCXML-as-json state machine,\n * but more consistent and easier to use\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nexport function normalizeMachine(pMachine: any): INormalizedSCXMLMachine {\n return {\n ...pMachine,\n initial: normalizeInitial(pMachine),\n state: castArray(pMachine?.state ?? []),\n parallel: castArray(pMachine?.parallel ?? []),\n history: castArray(pMachine?.history ?? []),\n final: castArray(pMachine?.final ?? []),\n };\n}\n", "export default {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n title: \"state-machine-cat abstract syntax tree schema\",\n $ref: \"#/definitions/StateMachineType\",\n $id: \"org.js.state-machine-cat/v7.4.0\",\n definitions: {\n StateType: {\n type: \"string\",\n enum: [\n \"regular\",\n \"initial\",\n \"terminate\",\n \"final\",\n \"parallel\",\n \"history\",\n \"deephistory\",\n \"choice\",\n \"forkjoin\",\n \"fork\",\n \"join\",\n \"junction\",\n ],\n },\n TransitionType: {\n type: \"string\",\n enum: [\"internal\", \"external\"],\n },\n NoteType: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n ActionTypeType: {\n type: \"string\",\n enum: [\"entry\", \"activity\", \"exit\"],\n },\n ActionType: {\n type: \"object\",\n required: [\"type\", \"body\"],\n additionalProperties: false,\n properties: {\n type: { $ref: \"#/definitions/ActionTypeType\" },\n body: { type: \"string\" },\n },\n },\n ClassType: {\n type: \"string\",\n pattern: \"^[a-zA-Z0-9_\\\\- ]*$\",\n },\n StateMachineType: {\n type: \"object\",\n additionalProperties: false,\n required: [\"states\"],\n properties: {\n states: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"name\", \"type\"],\n additionalProperties: false,\n properties: {\n name: {\n description:\n \"The name and identifier of the state. Unique within the root state machine.\",\n type: \"string\",\n },\n type: {\n description:\n \"What kind of state (or pseudo state) this state is. E.g. 'regular' for normal states or 'initial', 'final', 'choice' etc for pseudo states. Most UML (pseudo-) states are supported.\",\n $ref: \"#/definitions/StateType\",\n },\n label: {\n description:\n \"The display label of the state. If it's not present, most renderers will use the states' name in stead.\",\n type: \"string\",\n },\n color: {\n description:\n 'Color to use for rendering the state. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n type: \"string\",\n },\n class: {\n description:\n \"Class name to give the state in dot and svg output.\",\n $ref: \"#/definitions/ClassType\",\n },\n active: {\n description:\n \"If true the state is considered to be active and rendered as such.\",\n type: \"boolean\",\n },\n typeExplicitlySet: {\n description:\n \"The default parser derives the `type` from the `name` with inband signaling. The user can override that behavior by explicitly setting the `type`. This attribute is there to express that (and make sure that on next parses & processing it doesn't get accidentily re-derived from the name again).\",\n type: \"boolean\",\n },\n isComposite: {\n description:\n \"convenience, derived attribute - set to true if there's a state machine inside the state; false in all other cases. For internal use - @deprecated\",\n type: \"boolean\",\n },\n actions: {\n type: \"array\",\n description:\n \"A series of actions and their types. The type describe when the action takes place (on entry, exit, or otherwise ('activity'))\",\n items: { $ref: \"#/definitions/ActionType\" },\n },\n note: {\n description:\n \"Comments related to this state. Some renderers will use the note attribute to render a note (i.e. as a post-it) attached to the state.\",\n $ref: \"#/definitions/NoteType\",\n },\n statemachine: {\n description: \"state machine nested within the state.\",\n $ref: \"#/definitions/StateMachineType\",\n },\n },\n },\n },\n transitions: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"from\", \"to\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"number\",\n },\n from: {\n description:\n \"The name of the state this transition transitions from\",\n type: \"string\",\n },\n to: {\n description:\n \"The name of the state this transition transitions to\",\n type: \"string\",\n },\n label: {\n description:\n \"A display label to represent this transition. Parsers can parse this label into events conditions and actions.\",\n type: \"string\",\n },\n event: {\n description: \"Event triggering the transition\",\n type: \"string\",\n },\n cond: {\n description: \"Condition for the transition to occur.\",\n type: \"string\",\n },\n action: {\n description: \"Action to execute when the transition occurs.\",\n type: \"string\",\n },\n note: {\n description: \"Comments related to this transition\",\n $ref: \"#/definitions/NoteType\",\n },\n color: {\n description:\n 'Color to use for rendering the transition. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n type: \"string\",\n },\n width: {\n description:\n \"The line width to use for rendering the transition\",\n type: \"number\",\n minimum: 0,\n maximum: 30,\n },\n class: {\n description:\n \"Class name to give the state in dot and svg output.\",\n $ref: \"#/definitions/ClassType\",\n },\n type: {\n description:\n \"Whether the transition is external (default) or internal. See https://www.w3.org/TR/scxml/#transition for details.\",\n $ref: \"#/definitions/TransitionType\",\n },\n },\n },\n },\n },\n },\n },\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n IStateMachine,\n ITransition,\n StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\nimport { Counter } from \"../counter.mjs\";\nimport utl from \"./utl.mjs\";\n\ntype ITransitionMap = {\n [stateName: string]: ITransition[];\n};\n\nfunction fuseTransitionAttribute(\n pIncomingThing: string | undefined,\n pOutgoingThing: string,\n pJoinChar: string,\n): string {\n return pIncomingThing\n ? `${pIncomingThing}${pJoinChar}${pOutgoingThing}`\n : pOutgoingThing;\n}\n\nfunction fuseIncomingToOutgoing(\n pIncomingTransition: ITransition,\n pOutgoingTransition: ITransition,\n pCounter: Counter,\n): ITransition {\n // in:\n // a => ]: event [condition]/ action;\n // ] => b: event_to_b [condition_to_b]/ action to b;\n //\n // out:\n // a => b: event [condition]/ action\\naction to b;\n //\n // events and conditions are illegal on transitions outgoing\n // from forks, so we ignore them\n const lReturnValue = {\n ...pIncomingTransition,\n ...pOutgoingTransition,\n from: pIncomingTransition.from,\n to: pOutgoingTransition.to,\n id: pCounter.next(),\n };\n\n if (pOutgoingTransition.action) {\n lReturnValue.action = fuseTransitionAttribute(\n pIncomingTransition.action,\n pOutgoingTransition.action,\n \"\\n\",\n );\n }\n if (lReturnValue.event || lReturnValue.cond || lReturnValue.action) {\n lReturnValue.label = utl.formatLabel(\n lReturnValue.event,\n lReturnValue.cond,\n lReturnValue.action,\n );\n }\n\n return lReturnValue;\n}\n\nfunction fuseTransitions(\n pTransitions: ITransition[],\n pPseudoStateNames: string[],\n pOutgoingTransitionMap: ITransitionMap,\n pCounter: Counter,\n): ITransition[] {\n return pTransitions.reduce(\n (pAll: ITransition[], pTransition: ITransition) => {\n pPseudoStateNames.forEach((pStateName, pIndex) => {\n if (\n pStateName === pTransition.to &&\n pOutgoingTransitionMap[pStateName]\n ) {\n pAll = pAll.concat(\n pOutgoingTransitionMap[pStateName].map((pOutgoingTransition) =>\n fuseIncomingToOutgoing(\n pTransition,\n pOutgoingTransition,\n pCounter,\n ),\n ),\n );\n } else {\n pAll = pIndex === 0 ? pAll.concat(pTransition) : pAll;\n }\n });\n return pAll;\n },\n [],\n );\n}\n\nfunction deSugarPseudoStates(\n pMachine: IStateMachine,\n pPseudoStateNames: string[],\n pOutgoingTransitionMap: ITransitionMap,\n pCounter: Counter,\n): IStateMachine {\n const lMachine = structuredClone(pMachine);\n\n if (lMachine.transitions && pPseudoStateNames.length > 0) {\n lMachine.transitions = fuseTransitions(\n lMachine.transitions,\n pPseudoStateNames,\n pOutgoingTransitionMap,\n pCounter,\n );\n }\n\n lMachine.states = lMachine.states.map((pState) =>\n pState.statemachine\n ? {\n ...pState,\n statemachine: deSugarPseudoStates(\n pState.statemachine,\n pPseudoStateNames,\n pOutgoingTransitionMap,\n pCounter,\n ),\n }\n : pState,\n );\n\n return lMachine;\n}\n\nfunction removeStatesCascading(\n pMachine: IStateMachine,\n pStateNames: string[],\n): IStateMachine {\n const lMachine = structuredClone(pMachine);\n\n if (lMachine.transitions) {\n lMachine.transitions = lMachine.transitions.filter(\n (pTransition) =>\n !pStateNames.some(\n (pJunctionStateName) =>\n pJunctionStateName === pTransition.from ||\n pJunctionStateName === pTransition.to,\n ),\n );\n }\n\n lMachine.states = lMachine.states\n .filter((pState) => !pStateNames.includes(pState.name))\n .map((pState) =>\n pState.statemachine\n ? {\n ...pState,\n statemachine: removeStatesCascading(\n pState.statemachine,\n pStateNames,\n ),\n }\n : pState,\n );\n return lMachine;\n}\n\n/**\n * Takes a state machine and replaces all forks with transitions from its\n * respective inputs and outputs\n *\n * e.g.\n * ```smcat\n * a => ];\n * b => ];\n * ] => c;\n * ] => d;\n * ```\n *\n * will become\n * ```smcat\n * a => c;\n * a => d;\n * b => c;\n * b => d;\n * ```\n */\nexport default (\n pMachine: IStateMachine,\n pDesugarableStates: StateType[] = [\"fork\", \"junction\", \"choice\"],\n): IStateMachine => {\n const lModel = new StateMachineModel(pMachine);\n\n const lPseudoStateNames = lModel\n .findStatesByTypes(pDesugarableStates)\n .map(({ name }) => name);\n\n const lOutgoingTransitionMap: ITransitionMap = lPseudoStateNames.reduce(\n (pAll, pStateName) => {\n pAll[pStateName] = lModel.findTransitionsByFrom(pStateName);\n return pAll;\n },\n {},\n );\n const lMaximumTransitionId = lModel.getMaximumTransitionId();\n\n const lMachine = deSugarPseudoStates(\n pMachine,\n lPseudoStateNames,\n lOutgoingTransitionMap,\n new Counter(lMaximumTransitionId),\n );\n\n return removeStatesCascading(lMachine, lPseudoStateNames);\n};\n", "import type {\n IActionType,\n IState,\n IStateMachine,\n IRenderOptions,\n ITransition,\n} from \"../../types/state-machine-cat.mjs\";\n\nconst NAME_QUOTABLE = /[;,{[ ]/;\nconst ACTIONS_QUOTABLE = /[;,{}]/;\nconst LABEL_QUOTABLE = /[;{]/;\n\nconst RENDERABLE_STATE_ATTRIBUTES = [\n \"label\",\n \"type\",\n \"color\",\n \"active\",\n \"class\",\n];\n\nconst RENDERABLE_TRANSITION_ATTRIBUTES = [\"type\", \"color\", \"class\"];\n\nfunction quoteIfNecessary(pRegExp: RegExp, pString: string): string {\n return pRegExp.test(pString) ? `\"${pString}\"` : pString;\n}\n\nfunction stateHasExtendedAttributes(pState: IState): boolean {\n return (\n Object.hasOwn(pState, \"label\") ||\n Object.hasOwn(pState, \"typeExplicitlySet\") ||\n Object.hasOwn(pState, \"color\") ||\n Object.hasOwn(pState, \"active\") ||\n Object.hasOwn(pState, \"class\")\n );\n}\n\nfunction note(pNote: string[], pIndent: string = \"\"): string {\n return pNote.map((pNoteLine) => `${pIndent}# ${pNoteLine}`).join(\"\\n\");\n}\n\nfunction extendedAttribute(pKey: string, pValue: string): string {\n if (pKey === \"type\") {\n // looks a lot like the default return, but this guy's without quotes\n return `${pKey}=${pValue}`;\n }\n if (pKey === \"active\") {\n return pValue ? pKey : \"\";\n }\n return `${pKey}=\"${pValue}\"`;\n}\n\nfunction extendedStateAttributes(pState: IState): string {\n return Object.entries(pState)\n .filter(([pKey]) => RENDERABLE_STATE_ATTRIBUTES.includes(pKey))\n .filter(([pKey]) => pKey !== \"type\" || pState.typeExplicitlySet)\n .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n .join(\" \");\n}\n\nfunction actions(pActions: IActionType[]): string {\n return pActions\n .map(\n (pAction) =>\n `${pAction.type === \"activity\" ? \"\" : `${pAction.type}/ `}${pAction.body}`,\n )\n .map((pAction) => quoteIfNecessary(ACTIONS_QUOTABLE, pAction))\n .join(\"\\n \");\n}\n\nfunction state(pState: IState, pIndent: string = \"\"): string {\n let lReturnValue = pIndent + quoteIfNecessary(NAME_QUOTABLE, pState.name);\n if (pState.note) {\n lReturnValue = `${note(pState.note, pIndent)}\\n${lReturnValue}`;\n }\n if (stateHasExtendedAttributes(pState)) {\n lReturnValue += ` [${extendedStateAttributes(pState)}]`;\n }\n if (pState.actions) {\n lReturnValue += `: ${actions(pState.actions)}`;\n }\n if (pState.statemachine) {\n lReturnValue += \" {\\n\";\n // eslint-disable-next-line no-use-before-define\n lReturnValue += renderSmcat(pState.statemachine, null, `${pIndent} `);\n lReturnValue += `${pIndent}}`;\n }\n\n return lReturnValue;\n}\n\nfunction states(pStates: IState[], pIndent: string = \"\"): string {\n return pStates\n .map((pState) => state(pState, pIndent))\n .join(\",\\n\")\n .concat(pStates.length > 0 ? \";\\n\\n\" : \"\");\n}\n\nfunction transitionHasExtendedAttributes(pTransition: ITransition): boolean {\n return Object.entries(pTransition).some(([pKey]) =>\n RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey),\n );\n}\n\nfunction extendedTransitionAttributes(pTransition: ITransition): string {\n return (\n Object.entries(pTransition)\n .filter(([pKey]) => RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey))\n // lazily re-using the extendedStateAttribute function, even though it does\n // a little more than necessary\n .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n .join(\" \")\n );\n}\n\nfunction transition(pTransition: ITransition, pIndent: string = \"\"): string {\n let lReturnValue = `${pIndent}${quoteIfNecessary(NAME_QUOTABLE, pTransition.from)} => ${quoteIfNecessary(\n NAME_QUOTABLE,\n pTransition.to,\n )}`;\n if (pTransition.note) {\n lReturnValue = `${note(pTransition.note, pIndent)}\\n${lReturnValue}`;\n }\n if (transitionHasExtendedAttributes(pTransition)) {\n lReturnValue += ` [${extendedTransitionAttributes(pTransition)}]`;\n }\n if (pTransition.label) {\n lReturnValue += `: ${quoteIfNecessary(LABEL_QUOTABLE, pTransition.label)}`;\n }\n return lReturnValue;\n}\n\nfunction transitions(\n pTransitions: ITransition[],\n pIndent: string = \"\",\n): string {\n return pTransitions\n .map((pTransition) => `${transition(pTransition, pIndent)};\\n`)\n .join(\"\");\n}\n\nexport default function renderSmcat(\n pStateMachine: IStateMachine,\n _pOptions: IRenderOptions | null = {},\n pIndent: string = \"\",\n): string {\n return (\n states(pStateMachine.states, pIndent) +\n transitions(pStateMachine.transitions || [], pIndent)\n );\n}\n", "/* eslint-disable max-params */\n/* eslint-disable max-lines */\n/* eslint-disable no-use-before-define */\n/* eslint-disable complexity */\nimport he from \"he\";\nimport type {\n IStateMachine,\n IRenderOptions,\n IState,\n ITransition,\n StateType,\n IActionType,\n} from \"../../../types/state-machine-cat.mjs\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport {\n buildGraphAttributes,\n buildNodeAttributes,\n buildEdgeAttributes,\n} from \"./attributebuilder.mjs\";\nimport {\n escapeLabelString,\n formatActionType,\n getTransitionPorts,\n isCompositeSelf,\n isVertical,\n type IStateNormalized,\n noteToLabel,\n normalizeState,\n stateNote,\n} from \"./utl.mjs\";\n\nfunction initial(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction regularStateActions(pActions: IActionType[], pIndent: string): string {\n return pActions\n .map((pAction) =>\n he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n )\n .map((pActionString, pIndex) => {\n let lReturnValue = `${pActionString}`;\n if (pIndex === 0) {\n lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\n// TODO: regularStateActions and compositeStateActions differ by the 'cellpadding' attribute\n// - would it hurt to add it to the composite, so we can have just one function?\n// - if not - parametrize?\nfunction compositeStateActions(\n pActions: IActionType[],\n pIndent: string,\n): string {\n return pActions\n .map((pAction) =>\n he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n )\n .map((pActionString, pIndex) => {\n let lReturnValue = `${pActionString}`;\n if (pIndex === 0) {\n lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\nfunction atomicRegular(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=1 style=rounded\" : \"\";\n // eslint-disable-next-line no-magic-numbers\n const lCellPadding = (pState.actions?.length ?? 0) > 0 ? 2 : 7;\n const lActions = regularStateActions(pState?.actions ?? [], pIndent);\n\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `\n${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n return `${pIndent} \"${pState.name}\" [margin=0 class=\"${pState.class}\" label= <${lLabelTag}\n${pIndent} >${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction compositeRegular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n // eslint-disable-next-line no-nested-ternary\n const lPenWidth = pState.isParallelArea\n ? \"1.0\"\n : pState.active\n ? \"3.0\"\n : \"2.0\";\n const lStyle = pState.isParallelArea ? \"dashed\" : \"rounded\";\n const lActions = compositeStateActions(pState?.actions ?? [], pIndent);\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n const lSelfTransitionHelperPoints = pModel\n .findExternalSelfTransitions(pState.name)\n .map(\n (pTransition) =>\n `${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [shape=point style=invis width=0 height=0 fixedsize=true]\\n`,\n )\n .join(\"\");\n\n return `${lSelfTransitionHelperPoints}${pIndent} subgraph \"cluster_${pState.name}\" {\n${pIndent} class=\"${pState.class}\" label= <\n${lLabelTag}\n${pIndent} > style=${lStyle} penwidth=${lPenWidth}${pState.colorAttribute}${pState.fontColorAttribute}\n${pIndent} \"${pState.name}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n${states(pState?.statemachine?.states ?? [], `${pIndent} `, pOptions, pModel, pRenderedTransitions)}\n${pIndent} }${pState.noteText}`;\n}\n\nfunction regular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n if (pState.statemachine) {\n return compositeRegular(pState, pIndent, pOptions, pModel, pRenderedTransitions);\n }\n return atomicRegular(pState, pIndent);\n}\n\nfunction history(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction deepHistory(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H*\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction choiceActions(pActions: IActionType[], pActive: boolean): string {\n return pActions\n .map((pAction) => {\n let lReturnValue = he.escape(\n `${formatActionType(pAction.type)}${pAction.body}`,\n );\n if (pActive) {\n lReturnValue = `${lReturnValue}`;\n }\n return lReturnValue;\n })\n .join(\"\\\\n\");\n}\n\nfunction choice(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lActions = choiceActions(\n pState?.actions ?? [],\n pState?.active ?? false,\n );\n const lLabelTag = lActions;\n const lDiamond = `${pIndent} \"${pState.name}\" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 label=\" \" class=\"${pState.class}\"${pState.colorAttribute}${lActiveAttribute}]`;\n const lLabelConstruct = `${pIndent} \"${pState.name}\" -> \"${pState.name}\" [color=\"#FFFFFF01\" fontcolor=\"${pState.color}\" class=\"${pState.class}\" label=<${lLabelTag}>]`;\n\n return `${lDiamond}\\n${lLabelConstruct}${pState.noteText}`;\n}\n\nfunction forkjoin(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n const lSizingExtras = isVertical(lDirection) ? \" height=0.1\" : \" width=0.1\";\n\n return `${pIndent} \"${pState.name}\" [shape=rect fixedsize=true label=\" \" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}${lSizingExtras}]${pState.noteText}`;\n}\n\nfunction junction(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n const lNote = stateNote(pState, pIndent);\n\n return `${pIndent} \"${pState.name}\" [shape=circle fixedsize=true height=0.15 label=\"\" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}]${lNote}`;\n}\n\nfunction terminate(pState: IStateNormalized, pIndent: string): string {\n const lLabelTag = `\n${pIndent} \n${pIndent} \n${pIndent} \n${pIndent}
X
${pState.label}
`;\n\n return `${pIndent} \"${pState.name}\" [label= <${lLabelTag}\n${pIndent} > class=\"${pState.class}\"]${pState.noteText}`;\n}\n\nfunction final(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 peripheries=2 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n// @ts-expect-error - TS is yapping about something that just works :shrug:\nconst STATE_TYPE2FUNCTION = new Map<\n StateType,\n (\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel?: StateMachineModel,\n ) => string\n>([\n [\"initial\", initial],\n [\"regular\", regular],\n [\"history\", history],\n [\"deephistory\", deepHistory],\n [\"choice\", choice],\n [\"fork\", forkjoin],\n [\"forkjoin\", forkjoin],\n [\"join\", forkjoin],\n [\"junction\", junction],\n [\"terminate\", terminate],\n [\"final\", final],\n // parallel\n]);\n\nfunction state(\n pState: IState,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n const lState = normalizeState(pState, pOptions, pIndent);\n const lCandidateTransitions = pModel.findTransitionsToSiblings(\n pState.name,\n pRenderedTransitions,\n );\n lCandidateTransitions.forEach((pTransition) => {\n pRenderedTransitions.add(pTransition.id);\n });\n const lTransitions = transitions(\n lCandidateTransitions,\n pIndent,\n pOptions,\n pModel,\n );\n\n return (\n // eslint-disable-next-line prefer-template\n (STATE_TYPE2FUNCTION.get(pState.type) ?? regular)(\n lState,\n pIndent,\n pOptions,\n pModel,\n pRenderedTransitions\n ) +\n lTransitions +\n \"\\n\"\n );\n}\n\nfunction states(\n pStates: IState[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n return pStates\n .map((pState) => state(pState, pIndent, pOptions, pModel, pRenderedTransitions))\n .join(\"\");\n}\n\n// eslint-disable-next-line max-statements, max-lines-per-function\nfunction transition(\n pTransition: ITransition,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n // TODO: should also be he.escape'd?\n const lLabel = `${escapeLabelString(pTransition.label ?? \" \")}`;\n // using a default color (`pTransition.color ?? \"black\"`) makes the output\n // look more consistent and easier to check, but it also blocks the 'inheritance'\n //\n const lColorAttribute = pTransition.color\n ? ` color=\"${pTransition.color}\"`\n : \"\";\n const lFontColorAttribute = pTransition.color\n ? ` fontcolor=\"${pTransition.color}\"`\n : \"\";\n const lPenWidth = pTransition.width ? ` penwidth=${pTransition.width}` : \"\";\n const lClass = pTransition.class\n ? // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type + \" \" : \" \"}${pTransition.class}`\n : // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type : \"\"}`;\n // for transitions to/ from composite states put the _cluster_ as the head\n // instead of the state itself\n const lTail = pModel.findStateByName(pTransition.from)?.statemachine\n ? ` ltail=\"cluster_${pTransition.from}\"`\n : \"\";\n const lHead = pModel.findStateByName(pTransition.to)?.statemachine\n ? ` lhead=\"cluster_${pTransition.to}\"`\n : \"\";\n const lTransitionName = `tr_${pTransition.from}_${pTransition.to}_${pTransition.id}`;\n\n if (isCompositeSelf(pModel, pTransition)) {\n // for self-transitions to/ from composite states ensure the transition leaves\n // and enters to/ from the right side of the state\n const { lTailPorts, lHeadPorts } = getTransitionPorts(\n pOptions,\n pModel,\n pTransition,\n );\n // as for composite self-transitions the transition is already split, we just\n // have to connect any note to that same split point\n let lNoteAndLine = \"\";\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lLineToNote = `\\n${pIndent} \"${lNoteName}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n lNoteAndLine = lLineToNote + lNote;\n }\n\n // the invisible 'self' node is declared with the state (so not here). If we\n // do it later than in the state the transition is guaranteed to look ugly.\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [label=\"${lLabel}\" arrowhead=none class=\"${lClass}\"${lTailPorts}${lTail}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" -> \"${pTransition.to}\" [class=\"${lClass}\"${lHead}${lHeadPorts}${lColorAttribute}${lPenWidth}]`;\n return lTransitionFrom + lTransitionTo + lNoteAndLine;\n }\n\n // to attach a note, split the transition in half, reconnect them via an\n // in-between point and connect the note to that in-between point as well\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lNoteNodeName = `i_${lNoteName}`;\n const lNoteNode = `\\n${pIndent} \"${lNoteNodeName}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]`;\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"${lNoteNodeName}\" [arrowhead=none${lTail}${lColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${pTransition.to}\" [label=\"${lLabel}\"${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lLineToNote = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n return lNoteNode + lTransitionFrom + lTransitionTo + lLineToNote + lNote;\n }\n\n return `\\n${pIndent} \"${pTransition.from}\" -> \"${pTransition.to}\" [label=\"${lLabel}\" class=\"${lClass}\"${lTail}${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n}\n\nfunction transitions(\n pTransitions: ITransition[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n return pTransitions\n .map((pTransition) => transition(pTransition, pIndent, pOptions, pModel))\n .join(\"\");\n}\n\n// eslint-disable-next-line max-lines-per-function\nexport default function renderDot(\n pStateMachine: IStateMachine,\n pOptions: IRenderOptions = {},\n pIndent: string = \"\",\n): string {\n const lGraphAttributes = buildGraphAttributes(\n getOptionValue(pOptions, \"engine\") as string,\n getOptionValue(pOptions, \"direction\") as string,\n pOptions?.dotGraphAttrs || [],\n );\n const lNodeAttributes = buildNodeAttributes(pOptions.dotNodeAttrs || []);\n const lEdgeAttributes = buildEdgeAttributes(pOptions.dotEdgeAttrs || []);\n const lModel = new StateMachineModel(pStateMachine);\n const lRenderedTransitions:Set = new Set();\n const lStates = states(pStateMachine.states, pIndent, pOptions, lModel, lRenderedTransitions);\n // ideally, we render transitions together with the states. However, in graphviz\n // that only renders as we want to if we if the transition is _within_ the state.\n // In this guy 'a' is rendered within cluster_b, though\n // digraph {\n // a\n // subgraph \"cluster_b\" {\n // label=b\n // ba\n // ba -> a\n // }\n // }\n // This is documented and defined behavior in graphviz, so we will have to\n // work around that...\n // - one way is to render all transitions separately in one go which (accidentally)\n // did in the previous render engine. That is guaranteed to work, but\n // some transitions might look ugly (i.e. when attaching a note the note\n // and the intermediate node will be in the outer state)\n // - Another way would be to render the transitions in the most outer state of\n // the (to, from). This is a nice idea, but it's not guaranteed to work\n // because how the graphviz engine works. If there's a transition defined in\n // state A to substate BB of state B, it will only show up if BB is already\n // declared in the graph. If it's not, the transition will be ignored.\n // - The compromise we landed with is to\n // 1. Render transitions within a composite state if _both_ ends of the transition\n // are in that state (see the state function above). That means at least\n // comments on transitions for these will look a bit nicer.\n // 2. Render all other transitions separately (below)\n const lRemainingTransitions = transitions(\n lModel.flattenedTransitions.filter(\n (pTransition) => !lRenderedTransitions.has(pTransition.id),\n ),\n pIndent,\n pOptions,\n lModel,\n );\n\n return `digraph \"state transitions\" {\n ${lGraphAttributes}\n node [${lNodeAttributes}]\n edge [${lEdgeAttributes}]\n\n${lStates}${lRemainingTransitions}\n}\n`;\n}\n", "/* eslint-disable security/detect-object-injection */\ninterface INameValuePair {\n name: string;\n value: string | number;\n}\nconst GENERIC_GRAPH_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: '\"Helvetica\"' },\n { name: \"fontsize\", value: \"12\" },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst GRAPH_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n dot: [\n { name: \"splines\", value: \"true\" },\n { name: \"ordering\", value: \"out\" },\n { name: \"compound\", value: \"true\" },\n { name: \"overlap\", value: \"scale\" },\n { name: \"nodesep\", value: \"0.3\" },\n { name: \"ranksep\", value: \"0.1\" },\n ],\n fdp: [{ name: \"K\", value: \"0.9\" }],\n osage: [{ name: \"pack\", value: \"42\" }],\n neato: [{ name: \"epsilon\", value: \"0.9\" }],\n};\n\nconst DIRECTION_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n \"bottom-top\": [{ name: \"rankdir\", value: \"BT\" }],\n \"left-right\": [{ name: \"rankdir\", value: \"LR\" }],\n \"right-left\": [{ name: \"rankdir\", value: \"RL\" }],\n};\n\nconst NODE_ATTRIBUTES: INameValuePair[] = [\n { name: \"shape\", value: \"plaintext\" },\n { name: \"style\", value: \"filled\" },\n { name: \"fillcolor\", value: '\"#FFFFFF01\"' },\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 12 },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst EDGE_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 10 },\n];\n\nfunction toNameValueString(pAttribute: INameValuePair): string {\n return `${pAttribute.name}=${pAttribute.value}`;\n}\n\nexport function buildGraphAttributes(\n pEngine: string,\n pDirection: string,\n pDotGraphAttributes?: INameValuePair[],\n): string {\n return GENERIC_GRAPH_ATTRIBUTES.concat(GRAPH_ATTRIBUTES[pEngine] || [])\n .concat(DIRECTION_ATTRIBUTES[pDirection] || [])\n .concat(pDotGraphAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildNodeAttributes(\n pDotNodeAttributes?: INameValuePair[],\n): string {\n return NODE_ATTRIBUTES.concat(pDotNodeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildEdgeAttributes(\n pDotEdgeAttributes?: INameValuePair[],\n): string {\n return EDGE_ATTRIBUTES.concat(pDotEdgeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport default {\n buildGraphAttributes,\n buildNodeAttributes,\n buildEdgeAttributes,\n};\n", "import he from \"he\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport type {\n dotAttributesType,\n IRenderOptions,\n IState,\n ITransition,\n} from \"../../../types/state-machine-cat.mjs\";\nimport type StateMachineModel from \"../../state-machine-model.mjs\";\n\n// eslint-disable-next-line complexity\nfunction getStateColor(\n pState: IState,\n pNodeAttributes?: dotAttributesType,\n): string {\n const lNodeColor = (pNodeAttributes || []).find(\n (pAttribute) => pAttribute.name === \"color\",\n )?.value;\n\n if (\n lNodeColor &&\n !pState.color &&\n [\n \"initial\",\n \"fork\",\n \"join\",\n \"junction\",\n \"forkjoin\",\n \"terminate\",\n \"final\",\n ].includes(pState.type)\n ) {\n return lNodeColor;\n }\n return pState.color ?? \"black\";\n}\n\nexport function escapeString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \"\\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\"\\\\l\");\n}\n\nexport function escapeLabelString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \" \\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\" \\\\l\");\n}\n\n// TODO integrate this into the normalization\n\nexport function isVertical(pDirection: string): boolean {\n const lDirection = pDirection || \"top-down\";\n\n return lDirection === \"top-down\" || lDirection === \"bottom-top\";\n}\n\nexport function isCompositeSelf(\n pStateMachineModel: StateMachineModel,\n pTransition: ITransition,\n): boolean {\n return (\n pTransition.from === pTransition.to &&\n (pStateMachineModel.findStateByName(pTransition.from)?.statemachine ??\n false) &&\n pTransition.type !== \"internal\"\n );\n}\n\nexport interface IStateNormalized extends IState {\n colorAttribute: string;\n fontColorAttribute: string;\n class: string;\n label: string;\n noteText: string;\n isParallelArea: boolean;\n}\n\nexport function noteToLabel(pNote: string[]): string {\n return pNote.map(escapeString).join(\"\");\n}\n\nexport function stateNote(pState: IState, pIndent: string): string {\n if (pState.note) {\n const lNoteName = `note_${pState.name}`;\n let lReturnValue = `\\n${pIndent} \"${lNoteName}\" [color=black fontcolor=black label=\"${noteToLabel(pState.note)}\" shape=note fontsize=10 fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n lReturnValue += `\\n${pIndent} \"${pState.name}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none]`;\n\n return lReturnValue;\n }\n return \"\";\n}\n\n// eslint-disable-next-line complexity\nexport function normalizeState(\n pState: IState & Partial,\n pOptions: IRenderOptions,\n pIndent: string,\n): IStateNormalized {\n const lReturnValue = structuredClone(pState) as IStateNormalized;\n\n // TODO: this is kludgy\n // we use these in regular, composite and history states\n lReturnValue.colorAttribute = pState.color ? ` color=\"${pState.color}\"` : \"\";\n lReturnValue.fontColorAttribute = pState.color\n ? ` fontcolor=\"${pState.color}\"`\n : \"\";\n // we use these in initial, fork, join, junction, forkjoin, terminal and final states\n lReturnValue.color = getStateColor(pState, pOptions.dotNodeAttrs);\n\n lReturnValue.class = pState.class\n ? `state ${pState.type} ${pState.class}`\n : `state ${pState.type}`;\n lReturnValue.label = he.escape(pState.label ?? pState.name);\n lReturnValue.noteText = stateNote(pState, pIndent);\n if (\n !pState.isParallelArea &&\n pState.type === \"parallel\" &&\n (pState.statemachine?.states ?? []).length > 0\n ) {\n // @ts-expect-error as lReturnValue is a clone of pStates statemachine && states\n // are bound to exist on there as well.\n lReturnValue.statemachine.states = pState.statemachine.states.map(\n (pChildState) => ({\n ...pChildState,\n isParallelArea: pChildState.type === \"regular\",\n }),\n );\n }\n\n return lReturnValue;\n}\n\nexport function formatActionType(pString: string): string {\n return pString === \"activity\" ? \"\" : `${pString}/ `;\n}\n\nexport function getTransitionPorts(\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pTransition: ITransition,\n) {\n let lTailPorts = ' tailport=\"n\" headport=\"n\"';\n let lHeadPorts = ' tailport=\"n\"';\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n if (isVertical(lDirection)) {\n lTailPorts = ' tailport=\"e\" headport=\"e\"';\n lHeadPorts = ' tailport=\"w\"';\n } else if (pModel.findStateByName(pTransition.from)?.parent ?? false) {\n lTailPorts = ' tailport=\"n\" headport=\"n\"';\n lHeadPorts = ' tailport=\"s\"';\n }\n return { lTailPorts, lHeadPorts };\n}\n", "var un=ArrayBuffer,$=Uint8Array,$e=Uint16Array,cn=Int16Array;var Ve=Int32Array,cr=function(c,_,l){if($.prototype.slice)return $.prototype.slice.call(c,_,l);(_==null||_<0)&&(_=0),(l==null||l>c.length)&&(l=c.length);var s=new $(l-_);return s.set(c.subarray(_,l)),s},Ue=function(c,_,l,s){if($.prototype.fill)return $.prototype.fill.call(c,_,l,s);for((l==null||l<0)&&(l=0),(s==null||s>c.length)&&(s=c.length);lc.length)&&(s=c.length);l2046MB)\",\"invalid block type\",\"FSE accuracy too high\",\"match distance too far back\",\"unexpected EOF\"],V=function(c,_,l){var s=new Error(_||_n[c]);if(s.code=c,Error.captureStackTrace&&Error.captureStackTrace(s,V),!l)throw s;return s},Hr=function(c,_,l){for(var s=0,d=0;s>>0},dn=function(c,_){var l=c[0]|c[1]<<8|c[2]<<16;if(l==3126568&&c[3]==253){var s=c[4],d=s>>5&1,h=s>>2&1,p=s&3,E=s>>6;s&8&&V(0);var G=6-d,j=p==3?4:p,q=Hr(c,G,j);G+=j;var U=E?1<>3);K=J+(J>>3)*(c[5]&7)}K>2145386496&&V(1);var L=new $((_==1?H||K:_?0:K)+12);return L[0]=1,L[4]=4,L[8]=8,{b:G+U,y:0,l:0,d:q,w:_&&_!=1?_:L.subarray(12),e:K,o:new Ve(L.buffer,0,3),u:H,c:h,m:Math.min(131072,K)}}else if((l>>4|c[3]<<20)==25481893)return ln(c,4)+8;V(0)},Le=function(c){for(var _=0;1<<_<=c;++_);return _-1},He=function(c,_,l){var s=(_<<3)+4,d=(c[_]&15)+5;d>l&&V(3);for(var h=1<0;){var X=Le(p+1),W=s>>3,fe=(1<>(s&7)&fe,m=(1<m&&(C-=Q)),H[++E]=--C,C==-1?(p+=C,T[--q]=E):p-=C,!C)do{var ie=s>>3;G=(c[ie]|c[ie+1]<<8)>>(s&7)&3,s+=2,E+=G}while(G==3)}(E>255||p)&&V(0);for(var B=0,R=(h>>1)+(h>>3)+3,ae=h-1,ne=0;ne<=E;++ne){var Z=H[ne];if(Z<1){K[ne]=-Z;continue}for(j=0;j=q)}}for(B&&V(0),j=0;j>3,{b:d,s:T,n:te,t:J}]},vn=function(c,_){var l=0,s=-1,d=new $(292),h=c[_],p=d.subarray(0,256),E=d.subarray(256,268),G=new $e(d.buffer,268);if(h<128){var j=He(c,_+1,6),q=j[0],U=j[1];_+=h;var H=q<<3,K=c[_];K||V(0);for(var J=0,L=0,T=U.b,te=T,X=(++_<<3)-8+Le(K);X-=T,!(X>3;if(J+=(c[W]|c[W+1]<<8)>>(X&7)&(1<>3,L+=(c[W]|c[W+1]<<8)>>(X&7)&(1<255&&V(0)}else{for(s=h-127;l>4,p[l+1]=fe&15}++_}var C=0;for(l=0;l11&&V(0),C+=m&&1<0;--l){var ne=G[l];Ue(ae,l,ne,G[l-1]=ne+E[l]*(1<E&&U>3,K=(c[H]|c[H+1]<<8|c[H+2]<<16)>>(q&7);G=(G<>2,p=h<<1,E=h+p;je(c.subarray(s,s+=c[0]|c[1]<<8),_.subarray(0,h),l),je(c.subarray(s,s+=c[2]|c[3]<<8),_.subarray(h,p),l),je(c.subarray(s,s+=c[4]|c[5]<<8),_.subarray(p,E),l),je(c.subarray(s),_.subarray(E),l)},Bn=function(c,_,l){var s,d=_.b,h=c[d],p=h>>1&3;_.l=h&1;var E=h>>3|c[d+1]<<5|c[d+2]<<13,G=(d+=3)+E;if(p==1)return d>=c.length?void 0:(_.b=d+1,l?(Ue(l,c[d],_.y,_.y+=E),l):Ue(new $(E),c[d]));if(!(G>c.length)){if(p==0)return _.b=G,l?(l.set(c.subarray(d,G),_.y),_.y+=E,l):cr(c,d,G);if(p==2){var j=c[d],q=j&3,U=j>>2&3,H=j>>4,K=0,J=0;q<2?U&1?H|=c[++d]<<4|(U&2&&c[++d]<<12):H=j>>3:(J=U,U<2?(H|=(c[++d]&63)<<4,K=c[d]>>6|c[++d]<<2):U==2?(H|=c[++d]<<4|(c[++d]&3)<<12,K=c[d]>>2|c[++d]<<6):(H|=c[++d]<<4|(c[++d]&63)<<12,K=c[d]>>6|c[++d]<<2|c[++d]<<10)),++d;var L=l?l.subarray(_.y,_.y+_.m):new $(_.m),T=L.length-H;if(q==0)L.set(c.subarray(d,d+=H),T);else if(q==1)Ue(L,c[d++],T);else{var te=_.h;if(q==2){var X=vn(c,d);K+=d-(d=X[0]),_.h=te=X[1]}else te||V(0);(J?wn:je)(c.subarray(d,d+=K),L.subarray(T),te)}var W=c[d++];if(W){W==255?W=(c[d++]|c[d++]<<8)+32512:W>127&&(W=W-128<<8|c[d++]);var fe=c[d++];fe&3&&V(0);for(var C=[pn,yn,hn],m=2;m>-1;--m){var Q=fe>>(m<<1)+2&3;if(Q==1){var k=new $([0,0,c[d++]]);C[m]={s:k.subarray(2,3),n:k.subarray(0,1),t:new $e(k.buffer,0,1),b:0}}else Q==2?(s=He(c,d,9-(m&1)),d=s[0],C[m]=s[1]):Q==3&&(_.t||V(0),C[m]=_.t[m])}var ie=_.t=C,B=ie[0],R=ie[1],ae=ie[2],ne=c[G-1];ne||V(0);var Z=(G<<3)-8+Le(ne)-ae.b,I=Z>>3,A=0,Ie=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var xe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var Oe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var qe=1<>>(Z&7)&qe-1);I=(Z-=_r[Te])>>3;var he=mn[Te]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<<_r[Te])-1);I=(Z-=fr[Pe])>>3;var pe=En[Pe]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<>3,Ie=ae.t[Ie]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,Oe=B.t[Oe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,xe=R.t[xe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<3)_.o[2]=_.o[1],_.o[1]=_.o[0],_.o[0]=_e-=3;else{var Me=_e-(pe!=0);Me?(_e=Me==3?_.o[0]-1:_.o[Me],Me>1&&(_.o[2]=_.o[1]),_.o[1]=_.o[0],_.o[0]=_e):_e=_.o[0]}for(var m=0;mhe&&(Fe=he);for(var m=0;m{var c=typeof document<\"u\"?document.currentScript?.src:void 0;return function(_={}){var l,s=_,d,h,p=new Promise((e,r)=>{d=e,h=r}),E=!1,G=Object.assign({},s),j=\"./this.program\",q=(e,r)=>{throw r},U=\"\";function H(e){return U+e}var K,J,L=console.log.bind(console),T=console.error.bind(console);Object.assign(s,G),G=null;var te=s.wasmBinary,X,W=!1,fe;function C(e,r){e||pe(r)}var m,Q,k,ie,B,R,ae,ne;function Z(){var e=X.buffer;s.HEAP8=m=new Int8Array(e),s.HEAP16=k=new Int16Array(e),s.HEAPU8=Q=new Uint8Array(e),s.HEAPU16=ie=new Uint16Array(e),s.HEAP32=B=new Int32Array(e),s.HEAPU32=R=new Uint32Array(e),s.HEAPF32=ae=new Float32Array(e),s.HEAPF64=ne=new Float64Array(e)}var I=[],A=[],Ie=[],xe=!1;function Oe(){ke(I)}function Pe(){xe=!0,!s.noFSInit&&!n.initialized&&n.init(),n.ignorePermissions=!1,Ge.init(),ke(A)}function Qe(){ke(Ie)}function Te(e){A.unshift(e)}var me=0,be=null,we=null;function qe(e){return e}function _e(e){me++}function he(e){if(me--,me==0&&(be!==null&&(clearInterval(be),be=null),we)){var r=we;we=null,r()}}function pe(e){e=\"Aborted(\"+e+\")\",T(e),W=!0,e+=\". Build with -sASSERTIONS for more info.\";var r=new WebAssembly.RuntimeError(e);throw h(r),r}var Me=\"data:application/octet-stream;base64,\",Be=e=>e.startsWith(Me),Fe=e=>e.startsWith(\"file://\");function Je(){var e=\"graphvizlib.wasm\";return Be(e)?e:H(e)}var Ne;function dr(e){if(e==Ne&&te)return new Uint8Array(te);if(J)return J(e);throw\"both async and sync fetching of the wasm failed\"}function Vr(e){return te?Promise.resolve().then(()=>dr(e)):K(e).then(r=>new Uint8Array(r),()=>dr(e))}function vr(e,r,t){return Vr(e).then(o=>WebAssembly.instantiate(o,r)).then(t,o=>{T(`failed to asynchronously prepare wasm: ${o}`),pe(o)})}function qr(e,r,t,o){return!e&&typeof WebAssembly.instantiateStreaming==\"function\"&&!Be(r)&&!Fe(r)&&typeof fetch==\"function\"?fetch(r,{credentials:\"same-origin\"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(o,function(u){return T(`wasm streaming compile failed: ${u}`),T(\"falling back to ArrayBuffer instantiation\"),vr(r,t,o)})}):vr(r,t,o)}function Jr(){return{a:Jt}}function Nr(){function e(o,i){return z=o.exports,X=z.B,Z(),Te(z.C),he(\"wasm-instantiate\"),z}_e(\"wasm-instantiate\");function r(o){e(o.instance)}var t=Jr();return Ne??=Je(),qr(te,Ne,t,r).catch(h),{}}var O,N,kr={173064:(e,r)=>{var t=se(e),o=se(r);n.createPath(\"/\",S.dirname(t)),n.writeFile(S.join(\"/\",t),o)}};class Ar{name=\"ExitStatus\";constructor(r){this.message=`Program terminated with exit(${r})`,this.status=r}}var ke=e=>{for(;e.length>0;)e.shift()(s)};class et{constructor(r){this.excPtr=r,this.ptr=r-24}set_type(r){R[this.ptr+4>>2]=r}get_type(){return R[this.ptr+4>>2]}set_destructor(r){R[this.ptr+8>>2]=r}get_destructor(){return R[this.ptr+8>>2]}set_caught(r){r=r?1:0,m[this.ptr+12]=r}get_caught(){return m[this.ptr+12]!=0}set_rethrown(r){r=r?1:0,m[this.ptr+13]=r}get_rethrown(){return m[this.ptr+13]!=0}init(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)}set_adjusted_ptr(r){R[this.ptr+16>>2]=r}get_adjusted_ptr(){return R[this.ptr+16>>2]}}var hr=0,rt=0,tt=(e,r,t)=>{var o=new et(e);throw o.init(r,t),hr=e,rt++,hr},S={isAbs:e=>e.charAt(0)===\"/\",splitPath:e=>{var r=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return r.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,o=e.length-1;o>=0;o--){var i=e[o];i===\".\"?e.splice(o,1):i===\"..\"?(e.splice(o,1),t++):t&&(e.splice(o,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:e=>{var r=S.isAbs(e),t=e.substr(-1)===\"/\";return e=S.normalizeArray(e.split(\"/\").filter(o=>!!o),!r).join(\"/\"),!e&&!r&&(e=\".\"),e&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:e=>{var r=S.splitPath(e),t=r[0],o=r[1];return!t&&!o?\".\":(o&&(o=o.substr(0,o.length-1)),t+o)},basename:e=>{if(e===\"/\")return\"/\";e=S.normalize(e),e=e.replace(/\\/$/,\"\");var r=e.lastIndexOf(\"/\");return r===-1?e:e.substr(r+1)},join:(...e)=>S.normalize(e.join(\"/\")),join2:(e,r)=>S.normalize(e+\"/\"+r)},nt=()=>{if(typeof crypto==\"object\"&&typeof crypto.getRandomValues==\"function\")return e=>crypto.getRandomValues(e);pe(\"initRandomDevice\")},pr=e=>(pr=nt())(e),ge={resolve:(...e)=>{for(var r=\"\",t=!1,o=e.length-1;o>=-1&&!t;o--){var i=o>=0?e[o]:n.cwd();if(typeof i!=\"string\")throw new TypeError(\"Arguments to path.resolve must be strings\");if(!i)return\"\";r=i+\"/\"+r,t=S.isAbs(i)}return r=S.normalizeArray(r.split(\"/\").filter(a=>!!a),!t).join(\"/\"),(t?\"/\":\"\")+r||\".\"},relative:(e,r)=>{e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);function t(F){for(var b=0;b=0&&F[Y]===\"\";Y--);return b>Y?[]:F.slice(b,Y-b+1)}for(var o=t(e.split(\"/\")),i=t(r.split(\"/\")),a=Math.min(o.length,i.length),u=a,f=0;f{for(var o=r+t,i=r;e[i]&&!(i>=o);)++i;if(i-r>16&&e.buffer&&yr)return yr.decode(e.subarray(r,i));for(var a=\"\";r>10,56320|F&1023)}}return a},Ae=[],er=e=>{for(var r=0,t=0;t=55296&&o<=57343?(r+=4,++t):r+=3}return r},rr=(e,r,t,o)=>{if(!(o>0))return 0;for(var i=t,a=t+o-1,u=0;u=55296&&f<=57343){var v=e.charCodeAt(++u);f=65536+((f&1023)<<10)|v&1023}if(f<=127){if(t>=a)break;r[t++]=f}else if(f<=2047){if(t+1>=a)break;r[t++]=192|f>>6,r[t++]=128|f&63}else if(f<=65535){if(t+2>=a)break;r[t++]=224|f>>12,r[t++]=128|f>>6&63,r[t++]=128|f&63}else{if(t+3>=a)break;r[t++]=240|f>>18,r[t++]=128|f>>12&63,r[t++]=128|f>>6&63,r[t++]=128|f&63}}return r[t]=0,t-i};function tr(e,r,t){var o=t>0?t:er(e)+1,i=new Array(o),a=rr(e,i,0,i.length);return r&&(i.length=a),i}var ot=()=>{if(!Ae.length){var e=null;if(!e)return null;Ae=tr(e,!0)}return Ae.shift()},Ge={ttys:[],init(){},shutdown(){},register(e,r){Ge.ttys[e]={input:[],output:[],ops:r},n.registerDevice(e,Ge.stream_ops)},stream_ops:{open(e){var r=Ge.ttys[e.node.rdev];if(!r)throw new n.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,o,i){if(!e.tty||!e.tty.ops.get_char)throw new n.ErrnoError(60);for(var a=0,u=0;u0&&(L(Re(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){r===null||r===10?(T(Re(e.output)),e.output=[]):r!=0&&e.output.push(r)},fsync(e){e.output&&e.output.length>0&&(T(Re(e.output)),e.output=[])}}},it=(e,r)=>{Q.fill(0,e,e+r)},nr=(e,r)=>Math.ceil(e/r)*r,Er=e=>{e=nr(e,65536);var r=jr(65536,e);return r&&it(r,e),r},g={ops_table:null,mount(e){return g.createNode(null,\"/\",16895,0)},createNode(e,r,t,o){if(n.isBlkdev(t)||n.isFIFO(t))throw new n.ErrnoError(63);g.ops_table||={dir:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,lookup:g.node_ops.lookup,mknod:g.node_ops.mknod,rename:g.node_ops.rename,unlink:g.node_ops.unlink,rmdir:g.node_ops.rmdir,readdir:g.node_ops.readdir,symlink:g.node_ops.symlink},stream:{llseek:g.stream_ops.llseek}},file:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:{llseek:g.stream_ops.llseek,read:g.stream_ops.read,write:g.stream_ops.write,allocate:g.stream_ops.allocate,mmap:g.stream_ops.mmap,msync:g.stream_ops.msync}},link:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,readlink:g.node_ops.readlink},stream:{}},chrdev:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:n.chrdev_stream_ops}};var i=n.createNode(e,r,t,o);return n.isDir(i.mode)?(i.node_ops=g.ops_table.dir.node,i.stream_ops=g.ops_table.dir.stream,i.contents={}):n.isFile(i.mode)?(i.node_ops=g.ops_table.file.node,i.stream_ops=g.ops_table.file.stream,i.usedBytes=0,i.contents=null):n.isLink(i.mode)?(i.node_ops=g.ops_table.link.node,i.stream_ops=g.ops_table.link.stream):n.isChrdev(i.mode)&&(i.node_ops=g.ops_table.chrdev.node,i.stream_ops=g.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){var o=1024*1024;r=Math.max(r,t*(t>>0),t!=0&&(r=Math.max(r,256));var i=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,r){if(e.usedBytes!=r)if(r==0)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr(e){var r={};return r.dev=n.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,n.isDir(e.mode)?r.size=4096:n.isFile(e.mode)?r.size=e.usedBytes:n.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){r.mode!==void 0&&(e.mode=r.mode),r.timestamp!==void 0&&(e.timestamp=r.timestamp),r.size!==void 0&&g.resizeFileStorage(e,r.size)},lookup(e,r){throw g.doesNotExistError},mknod(e,r,t,o){return g.createNode(e,r,t,o)},rename(e,r,t){if(n.isDir(e.mode)){var o;try{o=n.lookupNode(r,t)}catch{}if(o)for(var i in o.contents)throw new n.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp},unlink(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir(e,r){var t=n.lookupNode(e,r);for(var o in t.contents)throw new n.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir(e){var r=[\".\",\"..\"];for(var t of Object.keys(e.contents))r.push(t);return r},symlink(e,r,t){var o=g.createNode(e,r,41471,0);return o.link=t,o},readlink(e){if(!n.isLink(e.mode))throw new n.ErrnoError(28);return e.link}},stream_ops:{read(e,r,t,o,i){var a=e.node.contents;if(i>=e.node.usedBytes)return 0;var u=Math.min(e.node.usedBytes-i,o);if(u>8&&a.subarray)r.set(a.subarray(i,i+u),t);else for(var f=0;f0||t+r{var i=o?\"\":`al ${e}`;K(e).then(a=>{r(new Uint8Array(a)),i&&he(i)},a=>{if(t)t();else throw`Loading data file \"${e}\" failed.`}),i&&_e(i)},st=(e,r,t,o,i,a)=>{n.createDataFile(e,r,t,o,i,a)},ut=[],ct=(e,r,t,o)=>{typeof Browser<\"u\"&&Browser.init();var i=!1;return ut.forEach(a=>{i||a.canHandle(r)&&(a.handle(e,r,t,o),i=!0)}),i},ft=(e,r,t,o,i,a,u,f,v,F)=>{var b=r?ge.resolve(S.join2(e,r)):e,Y=`cp ${b}`;function x(w){function M(ee){F?.(),f||st(e,r,ee,o,i,v),a?.(),he(Y)}ct(w,b,M,()=>{u?.(),he(Y)})||M(w)}_e(Y),typeof t==\"string\"?at(t,x,u):x(t)},_t=e=>{var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090},t=r[e];if(typeof t>\"u\")throw new Error(`Unknown file open mode: ${e}`);return t},or=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},n={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,ErrnoError:class{name=\"ErrnoError\";constructor(e){this.errno=e}},filesystems:null,syncFSRequests:0,FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,o){e||(e=this),this.parent=e,this.mount=e.mount,this.id=n.nextInode++,this.name=r,this.mode=t,this.rdev=o}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return n.isDir(this.mode)}get isDevice(){return n.isChrdev(this.mode)}},lookupPath(e,r={}){if(e=ge.resolve(e),!e)return{path:\"\",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new n.ErrnoError(32);for(var o=e.split(\"/\").filter(Y=>!!Y),i=n.root,a=\"/\",u=0;u40)throw new n.ErrnoError(32)}}return{path:a,node:i}},getPath(e){for(var r;;){if(n.isRoot(e)){var t=e.mount.mountpoint;return r?t[t.length-1]!==\"/\"?`${t}/${r}`:t+r:t}r=r?`${e.name}/${r}`:e.name,e=e.parent}},hashName(e,r){for(var t=0,o=0;o>>0)%n.nameTable.length},hashAddNode(e){var r=n.hashName(e.parent.id,e.name);e.name_next=n.nameTable[r],n.nameTable[r]=e},hashRemoveNode(e){var r=n.hashName(e.parent.id,e.name);if(n.nameTable[r]===e)n.nameTable[r]=e.name_next;else for(var t=n.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=n.mayLookup(e);if(t)throw new n.ErrnoError(t);for(var o=n.hashName(e.id,r),i=n.nameTable[o];i;i=i.name_next){var a=i.name;if(i.parent.id===e.id&&a===r)return i}return n.lookup(e,r)},createNode(e,r,t,o){var i=new n.FSNode(e,r,t,o);return n.hashAddNode(i),i},destroyNode(e){n.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var r=[\"r\",\"w\",\"rw\"][e&3];return e&512&&(r+=\"w\"),r},nodePermissions(e,r){return n.ignorePermissions?0:r.includes(\"r\")&&!(e.mode&292)||r.includes(\"w\")&&!(e.mode&146)||r.includes(\"x\")&&!(e.mode&73)?2:0},mayLookup(e){if(!n.isDir(e.mode))return 54;var r=n.nodePermissions(e,\"x\");return r||(e.node_ops.lookup?0:2)},mayCreate(e,r){try{var t=n.lookupNode(e,r);return 20}catch{}return n.nodePermissions(e,\"wx\")},mayDelete(e,r,t){var o;try{o=n.lookupNode(e,r)}catch(a){return a.errno}var i=n.nodePermissions(e,\"wx\");if(i)return i;if(t){if(!n.isDir(o.mode))return 54;if(n.isRoot(o)||n.getPath(o)===n.cwd())return 10}else if(n.isDir(o.mode))return 31;return 0},mayOpen(e,r){return e?n.isLink(e.mode)?32:n.isDir(e.mode)&&(n.flagsToPermissionString(r)!==\"r\"||r&512)?31:n.nodePermissions(e,n.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=n.MAX_OPEN_FDS;e++)if(!n.streams[e])return e;throw new n.ErrnoError(33)},getStreamChecked(e){var r=n.getStream(e);if(!r)throw new n.ErrnoError(8);return r},getStream:e=>n.streams[e],createStream(e,r=-1){return e=Object.assign(new n.FSStream,e),r==-1&&(r=n.nextfd()),e.fd=r,n.streams[r]=e,e},closeStream(e){n.streams[e]=null},dupStream(e,r=-1){var t=n.createStream(e,r);return t.stream_ops?.dup?.(t),t},chrdev_stream_ops:{open(e){var r=n.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new n.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,r)=>e<<8|r,registerDevice(e,r){n.devices[e]={stream_ops:r}},getDevice:e=>n.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var o=t.pop();r.push(o),t.push(...o.mounts)}return r},syncfs(e,r){typeof e==\"function\"&&(r=e,e=!1),n.syncFSRequests++,n.syncFSRequests>1&&T(`warning: ${n.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=n.getMounts(n.root.mount),o=0;function i(u){return n.syncFSRequests--,r(u)}function a(u){if(u)return a.errored?void 0:(a.errored=!0,i(u));++o>=t.length&&i(null)}t.forEach(u=>{if(!u.type.syncfs)return a(null);u.type.syncfs(u,e,a)})},mount(e,r,t){var o=t===\"/\",i=!t,a;if(o&&n.root)throw new n.ErrnoError(10);if(!o&&!i){var u=n.lookupPath(t,{follow_mount:!1});if(t=u.path,a=u.node,n.isMountpoint(a))throw new n.ErrnoError(10);if(!n.isDir(a.mode))throw new n.ErrnoError(54)}var f={type:e,opts:r,mountpoint:t,mounts:[]},v=e.mount(f);return v.mount=f,f.root=v,o?n.root=v:a&&(a.mounted=f,a.mount&&a.mount.mounts.push(f)),v},unmount(e){var r=n.lookupPath(e,{follow_mount:!1});if(!n.isMountpoint(r.node))throw new n.ErrnoError(28);var t=r.node,o=t.mounted,i=n.getMounts(o);Object.keys(n.nameTable).forEach(u=>{for(var f=n.nameTable[u];f;){var v=f.name_next;i.includes(f.mount)&&n.destroyNode(f),f=v}}),t.mounted=null;var a=t.mount.mounts.indexOf(o);t.mount.mounts.splice(a,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var o=n.lookupPath(e,{parent:!0}),i=o.node,a=S.basename(e);if(!a||a===\".\"||a===\"..\")throw new n.ErrnoError(28);var u=n.mayCreate(i,a);if(u)throw new n.ErrnoError(u);if(!i.node_ops.mknod)throw new n.ErrnoError(63);return i.node_ops.mknod(i,a,r,t)},statfs(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:n.nextInode,ffree:n.nextInode-1,fsid:42,flags:2,namelen:255},t=n.lookupPath(e,{follow:!0}).node;return t?.node_ops.statfs&&Object.assign(r,t.node_ops.statfs(t.mount.opts.root)),r},create(e,r=438){return r&=4095,r|=32768,n.mknod(e,r,0)},mkdir(e,r=511){return r&=1023,r|=16384,n.mknod(e,r,0)},mkdirTree(e,r){for(var t=e.split(\"/\"),o=\"\",i=0;i\"u\"&&(t=r,r=438),r|=8192,n.mknod(e,r,t)},symlink(e,r){if(!ge.resolve(e))throw new n.ErrnoError(44);var t=n.lookupPath(r,{parent:!0}),o=t.node;if(!o)throw new n.ErrnoError(44);var i=S.basename(r),a=n.mayCreate(o,i);if(a)throw new n.ErrnoError(a);if(!o.node_ops.symlink)throw new n.ErrnoError(63);return o.node_ops.symlink(o,i,e)},rename(e,r){var t=S.dirname(e),o=S.dirname(r),i=S.basename(e),a=S.basename(r),u,f,v;if(u=n.lookupPath(e,{parent:!0}),f=u.node,u=n.lookupPath(r,{parent:!0}),v=u.node,!f||!v)throw new n.ErrnoError(44);if(f.mount!==v.mount)throw new n.ErrnoError(75);var F=n.lookupNode(f,i),b=ge.relative(e,o);if(b.charAt(0)!==\".\")throw new n.ErrnoError(28);if(b=ge.relative(r,t),b.charAt(0)!==\".\")throw new n.ErrnoError(55);var Y;try{Y=n.lookupNode(v,a)}catch{}if(F!==Y){var x=n.isDir(F.mode),w=n.mayDelete(f,i,x);if(w)throw new n.ErrnoError(w);if(w=Y?n.mayDelete(v,a,x):n.mayCreate(v,a),w)throw new n.ErrnoError(w);if(!f.node_ops.rename)throw new n.ErrnoError(63);if(n.isMountpoint(F)||Y&&n.isMountpoint(Y))throw new n.ErrnoError(10);if(v!==f&&(w=n.nodePermissions(f,\"w\"),w))throw new n.ErrnoError(w);n.hashRemoveNode(F);try{f.node_ops.rename(F,v,a),F.parent=v}catch(M){throw M}finally{n.hashAddNode(F)}}},rmdir(e){var r=n.lookupPath(e,{parent:!0}),t=r.node,o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!0);if(a)throw new n.ErrnoError(a);if(!t.node_ops.rmdir)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.rmdir(t,o),n.destroyNode(i)},readdir(e){var r=n.lookupPath(e,{follow:!0}),t=r.node;if(!t.node_ops.readdir)throw new n.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var r=n.lookupPath(e,{parent:!0}),t=r.node;if(!t)throw new n.ErrnoError(44);var o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!1);if(a)throw new n.ErrnoError(a);if(!t.node_ops.unlink)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.unlink(t,o),n.destroyNode(i)},readlink(e){var r=n.lookupPath(e),t=r.node;if(!t)throw new n.ErrnoError(44);if(!t.node_ops.readlink)throw new n.ErrnoError(28);return t.node_ops.readlink(t)},stat(e,r){var t=n.lookupPath(e,{follow:!r}),o=t.node;if(!o)throw new n.ErrnoError(44);if(!o.node_ops.getattr)throw new n.ErrnoError(63);return o.node_ops.getattr(o)},lstat(e){return n.stat(e,!0)},chmod(e,r,t){var o;if(typeof e==\"string\"){var i=n.lookupPath(e,{follow:!t});o=i.node}else o=e;if(!o.node_ops.setattr)throw new n.ErrnoError(63);o.node_ops.setattr(o,{mode:r&4095|o.mode&-4096,timestamp:Date.now()})},lchmod(e,r){n.chmod(e,r,!0)},fchmod(e,r){var t=n.getStreamChecked(e);n.chmod(t.node,r)},chown(e,r,t,o){var i;if(typeof e==\"string\"){var a=n.lookupPath(e,{follow:!o});i=a.node}else i=e;if(!i.node_ops.setattr)throw new n.ErrnoError(63);i.node_ops.setattr(i,{timestamp:Date.now()})},lchown(e,r,t){n.chown(e,r,t,!0)},fchown(e,r,t){var o=n.getStreamChecked(e);n.chown(o.node,r,t)},truncate(e,r){if(r<0)throw new n.ErrnoError(28);var t;if(typeof e==\"string\"){var o=n.lookupPath(e,{follow:!0});t=o.node}else t=e;if(!t.node_ops.setattr)throw new n.ErrnoError(63);if(n.isDir(t.mode))throw new n.ErrnoError(31);if(!n.isFile(t.mode))throw new n.ErrnoError(28);var i=n.nodePermissions(t,\"w\");if(i)throw new n.ErrnoError(i);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate(e,r){var t=n.getStreamChecked(e);if(!(t.flags&2097155))throw new n.ErrnoError(28);n.truncate(t.node,r)},utime(e,r,t){var o=n.lookupPath(e,{follow:!0}),i=o.node;i.node_ops.setattr(i,{timestamp:Math.max(r,t)})},open(e,r,t=438){if(e===\"\")throw new n.ErrnoError(44);r=typeof r==\"string\"?_t(r):r,r&64?t=t&4095|32768:t=0;var o;if(typeof e==\"object\")o=e;else{e=S.normalize(e);try{var i=n.lookupPath(e,{follow:!(r&131072)});o=i.node}catch{}}var a=!1;if(r&64)if(o){if(r&128)throw new n.ErrnoError(20)}else o=n.mknod(e,t,0),a=!0;if(!o)throw new n.ErrnoError(44);if(n.isChrdev(o.mode)&&(r&=-513),r&65536&&!n.isDir(o.mode))throw new n.ErrnoError(54);if(!a){var u=n.mayOpen(o,r);if(u)throw new n.ErrnoError(u)}r&512&&!a&&n.truncate(o,0),r&=-131713;var f=n.createStream({node:o,path:n.getPath(o),flags:r,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return f.stream_ops.open&&f.stream_ops.open(f),f},close(e){if(n.isClosed(e))throw new n.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(r){throw r}finally{n.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new n.ErrnoError(70);if(t!=0&&t!=1&&t!=2)throw new n.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,o,i){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if((e.flags&2097155)===1)throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.read)throw new n.ErrnoError(28);var a=typeof i<\"u\";if(!a)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var u=e.stream_ops.read(e,r,t,o,i);return a||(e.position+=u),u},write(e,r,t,o,i,a){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.write)throw new n.ErrnoError(28);e.seekable&&e.flags&1024&&n.llseek(e,0,2);var u=typeof i<\"u\";if(!u)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var f=e.stream_ops.write(e,r,t,o,i,a);return u||(e.position+=f),f},allocate(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(r<0||t<=0)throw new n.ErrnoError(28);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(!n.isFile(e.node.mode)&&!n.isDir(e.node.mode))throw new n.ErrnoError(43);if(!e.stream_ops.allocate)throw new n.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap(e,r,t,o,i){if(o&2&&!(i&2)&&(e.flags&2097155)!==2)throw new n.ErrnoError(2);if((e.flags&2097155)===1)throw new n.ErrnoError(2);if(!e.stream_ops.mmap)throw new n.ErrnoError(43);if(!r)throw new n.ErrnoError(28);return e.stream_ops.mmap(e,r,t,o,i)},msync(e,r,t,o,i){return e.stream_ops.msync?e.stream_ops.msync(e,r,t,o,i):0},ioctl(e,r,t){if(!e.stream_ops.ioctl)throw new n.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||\"binary\",r.encoding!==\"utf8\"&&r.encoding!==\"binary\")throw new Error(`Invalid encoding type \"${r.encoding}\"`);var t,o=n.open(e,r.flags),i=n.stat(e),a=i.size,u=new Uint8Array(a);return n.read(o,u,0,a,0),r.encoding===\"utf8\"?t=Re(u):r.encoding===\"binary\"&&(t=u),n.close(o),t},writeFile(e,r,t={}){t.flags=t.flags||577;var o=n.open(e,t.flags,t.mode);if(typeof r==\"string\"){var i=new Uint8Array(er(r)+1),a=rr(r,i,0,i.length);n.write(o,i,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))n.write(o,r,0,r.byteLength,void 0,t.canOwn);else throw new Error(\"Unsupported data type\");n.close(o)},cwd:()=>n.currentPath,chdir(e){var r=n.lookupPath(e,{follow:!0});if(r.node===null)throw new n.ErrnoError(44);if(!n.isDir(r.node.mode))throw new n.ErrnoError(54);var t=n.nodePermissions(r.node,\"x\");if(t)throw new n.ErrnoError(t);n.currentPath=r.path},createDefaultDirectories(){n.mkdir(\"/tmp\"),n.mkdir(\"/home\"),n.mkdir(\"/home/web_user\")},createDefaultDevices(){n.mkdir(\"/dev\"),n.registerDevice(n.makedev(1,3),{read:()=>0,write:(o,i,a,u,f)=>u,llseek:()=>0}),n.mkdev(\"/dev/null\",n.makedev(1,3)),Ge.register(n.makedev(5,0),Ge.default_tty_ops),Ge.register(n.makedev(6,0),Ge.default_tty1_ops),n.mkdev(\"/dev/tty\",n.makedev(5,0)),n.mkdev(\"/dev/tty1\",n.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(r===0&&(r=pr(e).byteLength),e[--r]);n.createDevice(\"/dev\",\"random\",t),n.createDevice(\"/dev\",\"urandom\",t),n.mkdir(\"/dev/shm\"),n.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){n.mkdir(\"/proc\");var e=n.mkdir(\"/proc/self\");n.mkdir(\"/proc/self/fd\"),n.mount({mount(){var r=n.createNode(e,\"fd\",16895,73);return r.node_ops={lookup(t,o){var i=+o,a=n.getStreamChecked(i),u={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>a.path}};return u.parent=u,u}},r}},{},\"/proc/self/fd\")},createStandardStreams(e,r,t){e?n.createDevice(\"/dev\",\"stdin\",e):n.symlink(\"/dev/tty\",\"/dev/stdin\"),r?n.createDevice(\"/dev\",\"stdout\",null,r):n.symlink(\"/dev/tty\",\"/dev/stdout\"),t?n.createDevice(\"/dev\",\"stderr\",null,t):n.symlink(\"/dev/tty1\",\"/dev/stderr\");var o=n.open(\"/dev/stdin\",0),i=n.open(\"/dev/stdout\",1),a=n.open(\"/dev/stderr\",1)},staticInit(){n.nameTable=new Array(4096),n.mount(g,{},\"/\"),n.createDefaultDirectories(),n.createDefaultDevices(),n.createSpecialDirectories(),n.filesystems={MEMFS:g}},init(e,r,t){n.initialized=!0,n.createStandardStreams(e,r,t)},quit(){n.initialized=!1;for(var e=0;ethis.length-1||w<0)){var M=w%this.chunkSize,ee=w/this.chunkSize|0;return this.getter(ee)[M]}}setDataGetter(w){this.getter=w}cacheLength(){var w=new XMLHttpRequest;if(w.open(\"HEAD\",t,!1),w.send(null),!(w.status>=200&&w.status<300||w.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+w.status);var M=Number(w.getResponseHeader(\"Content-length\")),ee,le=(ee=w.getResponseHeader(\"Accept-Ranges\"))&&ee===\"bytes\",oe=(ee=w.getResponseHeader(\"Content-Encoding\"))&&ee===\"gzip\",de=1024*1024;le||(de=M);var ve=(ye,Ye)=>{if(ye>Ye)throw new Error(\"invalid range (\"+ye+\", \"+Ye+\") or no bytes requested!\");if(Ye>M-1)throw new Error(\"only \"+M+\" bytes available! programmer error!\");var re=new XMLHttpRequest;if(re.open(\"GET\",t,!1),M!==de&&re.setRequestHeader(\"Range\",\"bytes=\"+ye+\"-\"+Ye),re.responseType=\"arraybuffer\",re.overrideMimeType&&re.overrideMimeType(\"text/plain; charset=x-user-defined\"),re.send(null),!(re.status>=200&&re.status<300||re.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+re.status);return re.response!==void 0?new Uint8Array(re.response||[]):tr(re.responseText||\"\",!0)},Se=this;Se.setDataGetter(ye=>{var Ye=ye*de,re=(ye+1)*de-1;if(re=Math.min(re,M-1),typeof Se.chunks[ye]>\"u\"&&(Se.chunks[ye]=ve(Ye,re)),typeof Se.chunks[ye]>\"u\")throw new Error(\"doXHR failed!\");return Se.chunks[ye]}),(oe||!M)&&(de=M=1,M=this.getter(0).length,de=M,L(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=M,this._chunkSize=de,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<\"u\"){if(!E)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var u=new a,f={isDevice:!1,contents:u}}else var f={isDevice:!1,url:t};var v=n.createFile(e,r,f,o,i);f.contents?v.contents=f.contents:f.url&&(v.contents=null,v.url=f.url),Object.defineProperties(v,{usedBytes:{get:function(){return this.contents.length}}});var F={},b=Object.keys(v.stream_ops);b.forEach(x=>{var w=v.stream_ops[x];F[x]=(...M)=>(n.forceLoadFile(v),w(...M))});function Y(x,w,M,ee,le){var oe=x.node.contents;if(le>=oe.length)return 0;var de=Math.min(oe.length-le,ee);if(oe.slice)for(var ve=0;ve(n.forceLoadFile(v),Y(x,w,M,ee,le)),F.mmap=(x,w,M,ee,le)=>{n.forceLoadFile(v);var oe=Er(w);if(!oe)throw new n.ErrnoError(48);return Y(x,m,oe,w,M),{ptr:oe,allocated:!0}},v.stream_ops=F,v}},se=(e,r)=>e?Re(Q,e,r):\"\",P={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(S.isAbs(r))return r;var o;if(e===-100)o=n.cwd();else{var i=P.getStreamFromFD(e);o=i.path}if(r.length==0){if(!t)throw new n.ErrnoError(44);return o}return S.join2(o,r)},doStat(e,r,t){var o=e(r);B[t>>2]=o.dev,B[t+4>>2]=o.mode,R[t+8>>2]=o.nlink,B[t+12>>2]=o.uid,B[t+16>>2]=o.gid,B[t+20>>2]=o.rdev,N=[o.size>>>0,(O=o.size,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+24>>2]=N[0],B[t+28>>2]=N[1],B[t+32>>2]=4096,B[t+36>>2]=o.blocks;var i=o.atime.getTime(),a=o.mtime.getTime(),u=o.ctime.getTime();return N=[Math.floor(i/1e3)>>>0,(O=Math.floor(i/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+40>>2]=N[0],B[t+44>>2]=N[1],R[t+48>>2]=i%1e3*1e3*1e3,N=[Math.floor(a/1e3)>>>0,(O=Math.floor(a/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+56>>2]=N[0],B[t+60>>2]=N[1],R[t+64>>2]=a%1e3*1e3*1e3,N=[Math.floor(u/1e3)>>>0,(O=Math.floor(u/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+72>>2]=N[0],B[t+76>>2]=N[1],R[t+80>>2]=u%1e3*1e3*1e3,N=[o.ino>>>0,(O=o.ino,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+88>>2]=N[0],B[t+92>>2]=N[1],0},doMsync(e,r,t,o,i){if(!n.isFile(r.node.mode))throw new n.ErrnoError(43);if(o&2)return 0;var a=Q.slice(e,e+t);n.msync(r,a,i,t,o)},getStreamFromFD(e){var r=n.getStreamChecked(e);return r},varargs:void 0,getStr(e){var r=se(e);return r}};function lt(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),t&-8)return-28;var i=n.lookupPath(r,{follow:!0}),a=i.node;if(!a)return-44;var u=\"\";return t&4&&(u+=\"r\"),t&2&&(u+=\"w\"),t&1&&(u+=\"x\"),u&&n.nodePermissions(a,u)?-2:0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}var We=()=>{var e=B[+P.varargs>>2];return P.varargs+=4,e},De=We;function dt(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 0:{var i=We();if(i<0)return-28;for(;n.streams[i];)i++;var a;return a=n.dupStream(o,i),a.fd}case 1:case 2:return 0;case 3:return o.flags;case 4:{var i=We();return o.flags|=i,0}case 12:{var i=De(),u=0;return k[i+u>>1]=2,0}case 13:case 14:return 0}return-28}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function vt(e,r){try{var t=P.getStreamFromFD(e);return P.doStat(n.stat,t.path,r)}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}function ht(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 21509:return o.tty?0:-59;case 21505:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcgets){var i=o.tty.ops.ioctl_tcgets(o),a=De();B[a>>2]=i.c_iflag||0,B[a+4>>2]=i.c_oflag||0,B[a+8>>2]=i.c_cflag||0,B[a+12>>2]=i.c_lflag||0;for(var u=0;u<32;u++)m[a+u+17]=i.c_cc[u]||0;return 0}return 0}case 21510:case 21511:case 21512:return o.tty?0:-59;case 21506:case 21507:case 21508:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcsets){for(var a=De(),f=B[a>>2],v=B[a+4>>2],F=B[a+8>>2],b=B[a+12>>2],Y=[],u=0;u<32;u++)Y.push(m[a+u+17]);return o.tty.ops.ioctl_tcsets(o.tty,r,{c_iflag:f,c_oflag:v,c_cflag:F,c_lflag:b,c_cc:Y})}return 0}case 21519:{if(!o.tty)return-59;var a=De();return B[a>>2]=0,0}case 21520:return o.tty?-28:-59;case 21531:{var a=De();return n.ioctl(o,r,a)}case 21523:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tiocgwinsz){var x=o.tty.ops.ioctl_tiocgwinsz(o.tty),a=De();k[a>>1]=x[0],k[a+2>>1]=x[1]}return 0}case 21524:return o.tty?0:-59;case 21515:return o.tty?0:-59;default:return-28}}catch(w){if(typeof n>\"u\"||w.name!==\"ErrnoError\")throw w;return-w.errno}}function pt(e,r,t,o){try{r=P.getStr(r);var i=o&256,a=o&4096;return o=o&-6401,r=P.calculateAt(e,r,a),P.doStat(i?n.lstat:n.stat,r,t)}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return-u.errno}}function yt(e,r,t,o){P.varargs=o;try{r=P.getStr(r),r=P.calculateAt(e,r);var i=o?We():0;return n.open(r,t,i).fd}catch(a){if(typeof n>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}var Ze=(e,r,t)=>rr(e,Q,r,t);function Et(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),o<=0)return-28;var i=n.readlink(r),a=Math.min(o,er(i)),u=m[t+a];return Ze(i,t,o+1),m[t+a]=u,a}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function mt(e){try{return e=P.getStr(e),n.rmdir(e),0}catch(r){if(typeof n>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}function wt(e,r){try{return e=P.getStr(e),P.doStat(n.stat,e,r)}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return-t.errno}}function Bt(e,r,t){try{return r=P.getStr(r),r=P.calculateAt(e,r),t===0?n.unlink(r):t===512?n.rmdir(r):pe(\"Invalid flags passed to unlinkat\"),0}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}var gt=()=>pe(\"\"),Gt=1,Ft=()=>Gt,Lt=(e,r,t)=>Q.copyWithin(e,r,r+t),ir=(e,r)=>r+2097152>>>0<4194305-!!e?(e>>>0)+r*4294967296:NaN;function It(e,r,t,o,i,a,u,f){var v=ir(i,a);try{if(isNaN(v))return 61;var F=P.getStreamFromFD(o),b=n.mmap(F,e,v,r,t),Y=b.ptr;return B[u>>2]=b.allocated,R[f>>2]=Y,0}catch(x){if(typeof n>\"u\"||x.name!==\"ErrnoError\")throw x;return-x.errno}}function xt(e,r,t,o,i,a,u){var f=ir(a,u);try{var v=P.getStreamFromFD(i);t&2&&P.doMsync(e,v,r,o,f)}catch(F){if(typeof n>\"u\"||F.name!==\"ErrnoError\")throw F;return-F.errno}}var Ot=(e,r,t,o)=>{var i=new Date().getFullYear(),a=new Date(i,0,1),u=new Date(i,6,1),f=a.getTimezoneOffset(),v=u.getTimezoneOffset(),F=Math.max(f,v);R[e>>2]=F*60,B[r>>2]=+(f!=v);var b=w=>{var M=w>=0?\"-\":\"+\",ee=Math.abs(w),le=String(Math.floor(ee/60)).padStart(2,\"0\"),oe=String(ee%60).padStart(2,\"0\");return`UTC${M}${le}${oe}`},Y=b(f),x=b(v);v{ar.length=0;for(var t;t=Q[e++];){var o=t!=105;o&=t!=112,r+=o&&r%8?4:0,ar.push(t==112?R[r>>2]:t==105?B[r>>2]:ne[r>>3]),r+=o?8:4}return ar},Mt=(e,r,t)=>{var o=bt(r,t);return kr[e](...o)},Rt=(e,r,t)=>Mt(e,r,t),Dt=()=>Date.now(),Yt=()=>2147483648,Pt=e=>{var r=X.buffer,t=(e-r.byteLength+65535)/65536|0;try{return X.grow(t),Z(),1}catch{}},Tt=e=>{var r=Q.length;e>>>=0;var t=Yt();if(e>t)return!1;for(var o=1;o<=4;o*=2){var i=r*(1+.2/o);i=Math.min(i,e+100663296);var a=Math.min(t,nr(Math.max(e,i),65536)),u=Pt(a);if(u)return!0}return!1},sr={},Zt=()=>j||\"./this.program\",ze=()=>{if(!ze.strings){var e=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",r={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:e,_:Zt()};for(var t in sr)sr[t]===void 0?delete r[t]:r[t]=sr[t];var o=[];for(var t in r)o.push(`${t}=${r[t]}`);ze.strings=o}return ze.strings},zt=(e,r)=>{for(var t=0;t{var t=0;return ze().forEach((o,i)=>{var a=r+t;R[e+i*4>>2]=a,zt(o,a),t+=o.length+1}),0},jt=(e,r)=>{var t=ze();R[e>>2]=t.length;var o=0;return t.forEach(i=>o+=i.length+1),R[r>>2]=o,0},Ut=()=>!0,Ht=e=>{fe=e,Ut()||(W=!0),q(e,new Ar(e))},Kt=(e,r)=>{fe=e,Ht(e)},Qt=Kt;function Wt(e){try{var r=P.getStreamFromFD(e);return n.close(r),0}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return t.errno}}var Ct=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.read(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}function $t(e,r,t,o,i){var a=ir(r,t);try{if(isNaN(a))return 61;var u=P.getStreamFromFD(e);return n.llseek(u,a,o),N=[u.position>>>0,(O=u.position,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[i>>2]=N[0],B[i+4>>2]=N[1],u.getdents&&a===0&&o===0&&(u.getdents=null),0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return f.errno}}var Vt=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.write(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}n.createPreloadedFile=ft,n.staticInit(),g.doesNotExistError=new n.ErrnoError(44),g.doesNotExistError.stack=\"\";var Jt={a:tt,i:lt,f:dt,x:vt,k:ht,v:pt,h:yt,q:Et,r:mt,w:wt,s:Bt,j:gt,y:Ft,z:Lt,l:It,m:xt,o:Ot,A:Rt,c:Dt,p:Tt,t:St,u:jt,g:Qt,b:Wt,e:Xt,n:$t,d:qt},z=Nr(),Nt=()=>(Nt=z.C)(),kt=s._webidl_free=e=>(kt=s._webidl_free=z.D)(e),At=s._free=e=>(At=s._free=z.E)(e),en=s._webidl_malloc=e=>(en=s._webidl_malloc=z.F)(e),rn=s._malloc=e=>(rn=s._malloc=z.G)(e),mr=s._emscripten_bind_VoidPtr___destroy___0=e=>(mr=s._emscripten_bind_VoidPtr___destroy___0=z.H)(e),wr=s._emscripten_bind_Graphviz_Graphviz_2=(e,r)=>(wr=s._emscripten_bind_Graphviz_Graphviz_2=z.I)(e,r),Br=s._emscripten_bind_Graphviz_version_0=()=>(Br=s._emscripten_bind_Graphviz_version_0=z.J)(),gr=s._emscripten_bind_Graphviz_lastError_0=()=>(gr=s._emscripten_bind_Graphviz_lastError_0=z.K)(),Gr=s._emscripten_bind_Graphviz_createFile_2=(e,r,t)=>(Gr=s._emscripten_bind_Graphviz_createFile_2=z.L)(e,r,t),Fr=s._emscripten_bind_Graphviz_layout_3=(e,r,t,o)=>(Fr=s._emscripten_bind_Graphviz_layout_3=z.M)(e,r,t,o),Lr=s._emscripten_bind_Graphviz_acyclic_3=(e,r,t,o)=>(Lr=s._emscripten_bind_Graphviz_acyclic_3=z.N)(e,r,t,o),Ir=s._emscripten_bind_Graphviz_tred_3=(e,r,t,o)=>(Ir=s._emscripten_bind_Graphviz_tred_3=z.O)(e,r,t,o),xr=s._emscripten_bind_Graphviz_unflatten_4=(e,r,t,o,i)=>(xr=s._emscripten_bind_Graphviz_unflatten_4=z.P)(e,r,t,o,i),Or=s._emscripten_bind_Graphviz_get_layout_result_0=e=>(Or=s._emscripten_bind_Graphviz_get_layout_result_0=z.Q)(e),br=s._emscripten_bind_Graphviz_set_layout_result_1=(e,r)=>(br=s._emscripten_bind_Graphviz_set_layout_result_1=z.R)(e,r),Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=e=>(Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=z.S)(e),Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=(e,r)=>(Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=z.T)(e,r),Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=e=>(Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=z.U)(e),Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=(e,r)=>(Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=z.V)(e,r),Pr=s._emscripten_bind_Graphviz_get_tred_out_0=e=>(Pr=s._emscripten_bind_Graphviz_get_tred_out_0=z.W)(e),Tr=s._emscripten_bind_Graphviz_set_tred_out_1=(e,r)=>(Tr=s._emscripten_bind_Graphviz_set_tred_out_1=z.X)(e,r),Zr=s._emscripten_bind_Graphviz_get_tred_err_0=e=>(Zr=s._emscripten_bind_Graphviz_get_tred_err_0=z.Y)(e),zr=s._emscripten_bind_Graphviz_set_tred_err_1=(e,r)=>(zr=s._emscripten_bind_Graphviz_set_tred_err_1=z.Z)(e,r),Sr=s._emscripten_bind_Graphviz___destroy___0=e=>(Sr=s._emscripten_bind_Graphviz___destroy___0=z._)(e),jr=(e,r)=>(jr=z.aa)(e,r);s.UTF8ToString=se;var Ce;we=function e(){Ce||Ur(),Ce||(we=e)};function Ur(){if(me>0||(Oe(),me>0))return;function e(){Ce||(Ce=!0,s.calledRun=!0,!W&&(Pe(),d(s),Qe()))}e()}Ur();function ue(){}ue.prototype=Object.create(ue.prototype),ue.prototype.constructor=ue,ue.prototype.__class__=ue,ue.__cache__={},s.WrapperObject=ue;function Xe(e){return(e||ue).__cache__}s.getCache=Xe;function ur(e,r){var t=Xe(r),o=t[e];return o||(o=Object.create((r||ue).prototype),o.ptr=e,t[e]=o)}s.wrapPointer=ur;function tn(e,r){return ur(e.ptr,r)}s.castObject=tn,s.NULL=ur(0);function nn(e){if(!e.__destroy__)throw\"Error: Cannot destroy object. (Did you create it yourself?)\";e.__destroy__(),delete Xe(e.__class__)[e.ptr]}s.destroy=nn;function on(e,r){return e.ptr===r.ptr}s.compare=on;function an(e){return e.ptr}s.getPointer=an;function sn(e){return e.__class__}s.getClass=sn;var D={buffer:0,size:0,pos:0,temps:[],needed:0,prepare(){if(D.needed){for(var e=0;e=D.size?(C(o>0),D.needed+=o,i=s._webidl_malloc(o),D.temps.push(i)):(i=D.buffer+D.pos,D.pos+=o),i},copy(e,r,t){t/=r.BYTES_PER_ELEMENT;for(var o=0;o88?13:14;do l.push(s&255),s>>=8,d-=8;while(d>7);h=-1}}return h>-1&&l.push((s|h<\n\n`}}function On(c){return c.map(xn)}function bn(c,_){let l={images:[],files:[],..._};[...l.files,...On(l.images)].forEach(s=>c.createFile(s.path,s.data))}var $r=class c{constructor(_){this._module=_}static load(){return Cr().then(_=>new c(_))}static unload(){Xr()}version(){return this._module.Graphviz.prototype.version()}layout(_,l=\"svg\",s=\"dot\",d){if(!_)return\"\";let h=new this._module.Graphviz(d?.yInvert?1:0,d?.nop?d?.nop:0),p=\"\",E=\"\";try{bn(h,d);try{p=h.layout(_,l,s)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}acyclic(_,l=!1,s=!1){if(!_)return{acyclic:!1,num_rev:0,outFile:\"\"};let d=new this._module.Graphviz,h=!1,p=0,E=\"\",G=\"\";try{try{h=d.acyclic(_,l,s),p=d.acyclic_num_rev,E=d.acyclic_outFile}catch(j){G=j.message}G=d.lastError()||G}finally{this._module.destroy(d)}if(G)throw c.unload(),new Error(G);return{acyclic:h,num_rev:p,outFile:E}}tred(_,l=!1,s=!1){if(!_)return{out:\"\",err:\"\"};let d=new this._module.Graphviz,h=\"\",p=\"\",E=\"\";try{try{d.tred(_,l,s),h=d.tred_out,p=d.tred_err}catch(G){E=G.message}E=d.lastError()||E}finally{this._module.destroy(d)}if(!h&&E)throw c.unload(),new Error(E);return{out:h,err:p}}unflatten(_,l=0,s=!1,d=0){if(!_)return\"\";let h=new this._module.Graphviz,p=\"\",E=\"\";try{try{p=h.unflatten(_,l,s,d)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}circo(_,l=\"svg\",s){return this.layout(_,l,\"circo\",s)}dot(_,l=\"svg\",s){return this.layout(_,l,\"dot\",s)}fdp(_,l=\"svg\",s){return this.layout(_,l,\"fdp\",s)}sfdp(_,l=\"svg\",s){return this.layout(_,l,\"sfdp\",s)}neato(_,l=\"svg\",s){return this.layout(_,l,\"neato\",s)}osage(_,l=\"svg\",s){return this.layout(_,l,\"osage\",s)}patchwork(_,l=\"svg\",s){return this.layout(_,l,\"patchwork\",s)}twopi(_,l=\"svg\",s){return this.layout(_,l,\"twopi\",s)}nop(_){return this.layout(_,\"dot\",\"nop\")}nop2(_){return this.layout(_,\"dot\",\"nop2\")}};export{$r as Graphviz};\n", "import type {\n IRenderOptions,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport { type Engine, type Format, Graphviz } from \"@hpcc-js/wasm-graphviz\";\nimport options from \"../../options.mjs\";\nimport ast2dot from \"../dot/index.mjs\";\n\nconst OUTPUT_TYPE2FORMAT: { [name: string]: string } = {\n oldsvg: \"svg\",\n oldps2: \"ps2\",\n oldeps: \"eps\",\n};\nconst gGraphViz = await Graphviz.load();\n\nfunction getFormat(pOptions?: IRenderOptions): Format {\n return (OUTPUT_TYPE2FORMAT[\n options.getOptionValue(pOptions as IRenderOptions, \"outputType\") as string\n ] || \"svg\") as Format;\n}\n\nfunction getEngine(pOptions?: IRenderOptions): Engine {\n return options.getOptionValue(pOptions as IRenderOptions, \"engine\") as Engine;\n}\n\nconst renderVectorWithWasm: StringRenderFunctionType = (\n pStateMachine,\n pOptions,\n) =>\n gGraphViz.layout(\n ast2dot(pStateMachine, pOptions),\n getFormat(pOptions),\n getEngine(pOptions),\n );\n\nexport default renderVectorWithWasm;\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\nconst NAME_CHAR_FORBIDDEN_RE =\n /[\\u0000-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_NAME_CHAR_FORBIDDEN_EXTRA_RE =\n /[-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/g;\n\nfunction makeValidNameChars(pCandidateNameTail: string): string {\n return pCandidateNameTail.replace(NAME_CHAR_FORBIDDEN_RE, \"_\");\n}\n\n/**\n * if it's an invalid NameStartChar but a valid NameChar smack a '_' in front of it\n * if it's an invalid NameChar as well - run it through the makeValidNameChars replacer\n */\nfunction makeValidNameStartChar(pCandidateChar: string): string {\n let lReturnValue = makeValidNameChars(pCandidateChar);\n\n if (lReturnValue.match(START_NAME_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateChar}`;\n }\n return lReturnValue;\n}\n\n/**\n * Takes any string and returns a valid XMLName using these rules:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string '__empty'\n */\nexport default (pCandidateName: string): string => {\n pCandidateName = pCandidateName || \"\";\n\n if (pCandidateName.length === 0) {\n return `__empty`;\n }\n return makeValidNameStartChar(pCandidateName[0]).concat(\n makeValidNameChars(pCandidateName.slice(1)),\n );\n};\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\n// EVENT_CHAR_FORBIDDEN_RE === forbidden for NameStartChar, except \"-\" and [0-9]\n// The SCXML xsd doesn't seem to mention '*' (\\u002A) as an allowed character. But\n// they _are_ used in event descriptors in the SCXML spec. So we've excluded\n// them from forbidden characters\nconst EVENT_CHAR_FORBIDDEN_RE =\n /[\\u00B7\\u0300-\\u036F\\u203F-\\u2040\\u0000-\\u0029\\u002B-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_EVENT_CHAR_FORBIDDEN_EXTRA_RE = /[.]/g;\n\nfunction makeValidEventChar(pCandidateEventStringTail: string): string {\n return pCandidateEventStringTail.replace(EVENT_CHAR_FORBIDDEN_RE, \"_\");\n}\n\nfunction makeValidEventStartChar(pCandidateEventStringStart: string): string {\n let lReturnValue = makeValidEventChar(pCandidateEventStringStart);\n\n if (lReturnValue.match(START_EVENT_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateEventStringStart}`;\n }\n return lReturnValue;\n}\n\nfunction makeValidEventName(pCandidateEventName: string): string {\n pCandidateEventName = pCandidateEventName.replace(/\\s+/g, \" \").trim();\n\n return makeValidEventStartChar(pCandidateEventName[0]).concat(\n makeValidEventChar(pCandidateEventName.slice(1)),\n );\n}\n/**\n * Takes any string and returns a valid SCXML events string:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string 'empty'\n * *\n * @returns a valid SCXML events string\n */\nexport default (pCandidateEventNames?: string): string => {\n const lCandidateEventNames = pCandidateEventNames ?? \"\";\n\n if (lCandidateEventNames.length === 0) {\n return \"empty\";\n }\n\n return lCandidateEventNames\n .split(/[\\n\\r]+/)\n .filter((pCandidateEventName) => pCandidateEventName.length > 0)\n .map(makeValidEventName)\n .join(\" \");\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n ActionTypeType,\n IActionType,\n IRenderOptions,\n IState,\n IStateMachine,\n ITransition,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"./scjson.js\";\nimport makeValidXMLName from \"./make-valid-xml-name.mjs\";\nimport makeValidEventNames from \"./make-valid-event-names.mjs\";\n\nconst STATE_TYPE2SCXML_STATE_KIND: { [stateType: string]: string } = {\n regular: \"state\",\n initial: \"initial\",\n final: \"final\",\n terminate: \"final\",\n parallel: \"parallel\",\n history: \"history\",\n deephistory: \"history\",\n};\n\nfunction stateType2SCXMLStateKind(pStateType: string): string {\n return STATE_TYPE2SCXML_STATE_KIND[pStateType] || \"state\";\n}\n\nfunction transformTransition(pTransition: ITransition): ISCJSONTransition {\n const lReturnValue: ISCJSONTransition = {\n target: makeValidXMLName(pTransition.to),\n };\n\n if (pTransition.event) {\n lReturnValue.event = makeValidEventNames(pTransition.event);\n }\n if (pTransition.cond) {\n lReturnValue.cond = pTransition.cond;\n }\n if (pTransition.action) {\n lReturnValue.action = pTransition.action;\n }\n if (pTransition.type) {\n lReturnValue.type = pTransition.type;\n }\n return lReturnValue;\n}\n\nfunction extractTriggers(\n pTriggers: IActionType[],\n pTriggerType: ActionTypeType,\n): string[] {\n return pTriggers\n .filter((pTrigger) => pTrigger.type === pTriggerType)\n .map((pTrigger) => pTrigger.body);\n}\n\nfunction pullOutActionType(\n pReturnValue: ISCJSONState,\n pTriggersType: \"onentries\" | \"onexits\",\n pActions: IActionType[],\n pActionType: ActionTypeType,\n): void {\n const lTriggerArray: string[] = extractTriggers(pActions, pActionType);\n\n if (lTriggerArray.length > 0) {\n pReturnValue[pTriggersType] = (pReturnValue[pTriggersType] || []).concat(\n lTriggerArray,\n );\n }\n}\n\nfunction transformTriggers(pReturnValue: ISCJSONState, pState: IState): void {\n if (pState.actions) {\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"entry\");\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"activity\");\n pullOutActionType(pReturnValue, \"onexits\", pState.actions, \"exit\");\n }\n}\n\nfunction transformTransitions(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n const lTransitions = pTransitions\n .filter((pTransition) => pTransition.from === pState.name)\n .map(transformTransition);\n\n if (lTransitions.length > 0) {\n pReturnValue.transitions = lTransitions;\n }\n}\n\nfunction transformCompositeState(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n if (pState.statemachine) {\n // recursion, so ...\n // eslint-disable-next-line no-use-before-define, no-undefined\n const lRenderedState = render(pState.statemachine, undefined, pTransitions);\n\n pReturnValue.states = (pReturnValue.states || []).concat(\n lRenderedState.states,\n );\n if (lRenderedState.initial) {\n pReturnValue.initial = lRenderedState.initial;\n }\n }\n}\n\nfunction transformState(pTransitions: ITransition[]) {\n pTransitions = pTransitions || [];\n\n return (pState: IState): ISCJSONState => {\n const lReturnValue: ISCJSONState = {\n kind: stateType2SCXMLStateKind(pState.type),\n id: makeValidXMLName(pState.name),\n };\n\n if (pState.type === \"deephistory\") {\n // as 'shallow' is the default anyway, we leave it out\n lReturnValue.type = \"deep\";\n }\n\n transformTriggers(lReturnValue, pState);\n\n transformTransitions(lReturnValue, pState, pTransitions);\n\n transformCompositeState(lReturnValue, pState, pTransitions);\n return lReturnValue;\n };\n}\n\nfunction findInitialPseudoStateName(\n pStateMachine: IStateMachine,\n): string | undefined {\n const lInitial = pStateMachine.states.filter(\n (pState) => pState.type === \"initial\",\n );\n\n if (lInitial.length > 0) {\n return lInitial[0].name;\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n}\n\nfunction findInitialStateName(\n pStateMachine: IStateMachine,\n pInitialPseudoStateName?: string,\n): string | undefined {\n let lReturnValue = pInitialPseudoStateName;\n\n if (pInitialPseudoStateName && pStateMachine.transitions) {\n const lInitialTransitions = pStateMachine.transitions.filter(\n (pTransition) => pTransition.from === pInitialPseudoStateName,\n );\n\n if (lInitialTransitions.length > 0 && !lInitialTransitions[0].action) {\n lReturnValue = lInitialTransitions[0].to;\n }\n }\n return lReturnValue;\n}\n\nexport default function render(\n pStateMachine: IStateMachine,\n _pOptions?: IRenderOptions,\n pTransitions?: ITransition[],\n): ISCJSONMachine {\n const lInitialPseudoStateName = findInitialPseudoStateName(pStateMachine);\n const lInitialStateName = findInitialStateName(\n pStateMachine,\n lInitialPseudoStateName,\n );\n const lReturnValue: ISCJSONMachine = {\n states: pStateMachine.states\n .filter((pState) => {\n if (\n lInitialStateName &&\n lInitialStateName !== lInitialPseudoStateName\n ) {\n return pState.type !== \"initial\";\n }\n return true;\n })\n .map(\n transformState(\n pTransitions ||\n new StateMachineModel(pStateMachine).flattenedTransitions,\n ),\n ),\n };\n\n if (lInitialStateName) {\n lReturnValue.initial = makeValidXMLName(lInitialStateName);\n }\n return lReturnValue;\n}\n", "import he from \"he\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"../scjson/scjson.js\";\n\nconst INDENT_LENGTH = 4;\n\nfunction indentString(pString: string, pCount: number): string {\n const lRegex = /^(?!\\s*$)/gm;\n\n return pString.replace(lRegex, \" \".repeat(pCount));\n}\n\nfunction renderTransitionAttributes(pTransition: ISCJSONTransition): string {\n let lReturnValue = \"\";\n if (pTransition.event) {\n lReturnValue += ` event=\"${he.escape(pTransition.event)}\"`;\n }\n if (pTransition.cond) {\n lReturnValue += ` cond=\"${he.escape(pTransition.cond)}\"`;\n }\n if (pTransition.type) {\n lReturnValue += ` type=\"${he.escape(pTransition.type)}\"`;\n }\n lReturnValue += ` target=\"${he.escape(pTransition.target)}\"`;\n return lReturnValue;\n}\n\nfunction renderRegularTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n const lReturnValue = `\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderActionTransition(\n pTransition: ISCJSONTransition & { action: string },\n pDepth: number,\n): string {\n const lReturnValue = `\n\n ${he.escape(pTransition.action)}\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n if (pTransition.action) {\n return renderActionTransition(\n pTransition as ISCJSONTransition & { action: string },\n pDepth,\n );\n }\n\n return renderRegularTransition(pTransition, pDepth);\n}\n\nfunction renderTransitions(\n pTransitions?: ISCJSONTransition[],\n // @ts-expect-error Yes. pDepth follows optional parameter. So What?\n pDepth: number,\n): string {\n return (pTransitions ?? [])\n .map((pTransition) => renderTransition(pTransition, pDepth))\n .join(\"\");\n}\n\nfunction renderSimpleTag(\n pOnExit: string,\n pTag: string,\n pDepth: number,\n): string {\n const lReturnValue = `\n<${pTag}>${he.escape(pOnExit)}`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnEntries(pOnEntries?: string[], pDepth: number): string {\n return (pOnEntries ?? [])\n .map((pOnEntry) => renderSimpleTag(pOnEntry, \"onentry\", pDepth))\n .join(\"\");\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnExits(pOnExits?: string[], pDepth: number): string {\n return (pOnExits ?? [])\n .map((pOnExit) => renderSimpleTag(pOnExit, \"onexit\", pDepth))\n .join(\"\");\n}\n\nfunction renderStateAttributes(pState: ISCJSONState): string {\n let lReturnValue = ` id=\"${he.escape(pState.id)}\"`;\n if (pState.initial) {\n lReturnValue += ` initial=\"${he.escape(pState.initial)}\"`;\n }\n if (pState.type) {\n lReturnValue += ` type=\"${he.escape(pState.type)}\"`;\n }\n return lReturnValue;\n}\n\nfunction renderState(pState: ISCJSONState, pDepth: number): string {\n let lReturnValue = `\\n<${pState.kind}${renderStateAttributes(pState)}>`;\n // eslint-disable-next-line no-use-before-define -- recursion\n lReturnValue += renderStates(pState.states, pDepth);\n lReturnValue += renderOnEntries(pState.onentries, pDepth);\n lReturnValue += renderOnExits(pState.onexits, pDepth);\n lReturnValue += renderTransitions(pState.transitions, pDepth);\n lReturnValue += `\\n`;\n\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderStates(pStates?: ISCJSONState[], pDepth = 1): string {\n return (pStates ?? []).map((pState) => renderState(pState, pDepth)).join(\"\");\n}\n\nfunction renderInitialAttribute(pInitialString?: string): string {\n return pInitialString ? `initial=\"${pInitialString}\" ` : \"\";\n}\n\nexport default function renderSCXML(pSCJSON: ISCJSONMachine): string {\n return `\n${renderStates(pSCJSON.states)}\n\n`;\n}\n", "import type { StringRenderFunctionType } from \"types/state-machine-cat.mjs\";\nimport ast2scjson from \"../scjson/index.mjs\";\nimport renderFomSCJSON from \"./render-from-scjson.mjs\";\n\nconst renderSCXML: StringRenderFunctionType = (pStateMachine) =>\n renderFomSCJSON(ast2scjson(pStateMachine));\n\nexport default renderSCXML;\n", "import type {\n OutputType,\n RenderFunctionType,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport smcatRendererAsImported from \"./smcat.mjs\";\nimport renderDot from \"./dot/index.mjs\";\nimport svg from \"./vector/vector-with-wasm.mjs\";\nimport scjson from \"./scjson/index.mjs\";\nimport scxml from \"./scxml/index.mjs\";\n\n// tsc doesn't recognize the function that smcat/index.js exports as\n// StringRenderFunctionType, so we hack around it\nconst smcat = smcatRendererAsImported as StringRenderFunctionType;\n\nexport default function getRenderFunction(\n pOutputType: OutputType,\n): RenderFunctionType {\n const lOutputType2RenderFunctionMap: Map =\n // @ts-expect-error - now renderDot is typed, typescript seems to have an issue\n // with it. Works perfectly fine, though, so we're ignoring it for now.\n new Map([\n [\"smcat\", smcat],\n [\"dot\", renderDot],\n [\"svg\", svg],\n [\"oldsvg\", svg],\n [\"scjson\", scjson],\n [\"scxml\", scxml],\n ]);\n\n return lOutputType2RenderFunctionMap.get(pOutputType) ?? ((pX) => pX);\n}\n", "// generated by tools/get-version.mts - edits will be overwritten\nexport const version = \"12.0.20\";\n", "/* eslint-disable budapestian/global-constant-pattern */\nimport type {\n IAllowedValues,\n IRenderOptions,\n IStateMachine,\n OutputType,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"./options.mjs\";\nimport parse from \"./parse/index.mjs\";\nimport desugar from \"./transform/desugar.mjs\";\nimport getRenderFunction from \"./render/index.mjs\";\nimport { version as _version } from \"./version.mjs\";\n\n/**\n * Translates the input script to an output-script.\n *\n * @throws {Error} if an error occurred and no callback\n * function was passed: the error\n *\n * Options: see https://github.com/sverweij/state-machine-cat/docs/api.md\n *\n */\nexport function render(\n pScript: string | IStateMachine,\n pOptions: IRenderOptions,\n): string {\n const lOptions = pOptions ?? {};\n const lStateMachine = parse.getAST(pScript, lOptions);\n const lDesugar = options.getOptionValue(lOptions, \"desugar\");\n\n return getRenderFunction(\n options.getOptionValue(lOptions, \"outputType\") as OutputType,\n )(lDesugar ? desugar(lStateMachine) : lStateMachine, lOptions);\n}\n\n/**\n * The current (semver compliant) version number string of\n * state machine cat\n */\nexport const version: string = _version;\n\n/**\n * Returns an object with each of the options you can pass to\n * the render function\n * - the default value\n * - the possible values in an array of objects, each of which\n * has the properties:\n * - name: the value\n */\nexport function getAllowedValues(): IAllowedValues {\n return options.getAllowedValues();\n}\n\nexport default {\n render,\n version,\n getAllowedValues,\n};\n", "const MAX_SIGNED_SHORT = 32767;\n\nexport const toRasterURI = (pSVG, pCallback) => {\n const lImg = document.createElement(\"img\");\n\n lImg.src =\n \"data:image/svg+xml;charset=utf-8,\" +\n encodeURIComponent(']>'.concat(pSVG));\n lImg.addEventListener(\"load\", function(pEvent) {\n const lCanvas = document.createElement(\"canvas\");\n const lCanvasContext = lCanvas.getContext(\"2d\");\n const lImage = pEvent.target;\n\n /*\n * When the passed image is too big for the browser to handle\n * return an error string\n *\n * See https://github.com/sverweij/mscgen_js/issues/248 for\n * an overview of the practical limits in various browsers and\n * pointers for further research.\n */\n if (lImage.width > MAX_SIGNED_SHORT || lImage.height > MAX_SIGNED_SHORT) {\n pCallback(null, \"image-too-big\");\n } else {\n lCanvas.width = lImage.width;\n lCanvas.height = lImage.height;\n\n lCanvasContext.drawImage(lImage, 0, 0);\n pCallback(lCanvas.toDataURL(\"image/png\", 0.8));\n }\n });\n};\n", "export const themeAttributeMap = {\n engineering: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"dodgerblue\" },\n { name: \"color\", value: \"white\" },\n { name: \"fontname\", value: \"courier\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontname\", value: \"courier\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontname\", value: \"courier\" },\n { name: \"fontcolor\", value: \"white\" }\n ]\n },\n reverse: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"black\" },\n { name: \"color\", value: \"white\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontcolor\", value: \"white\" }\n ]\n },\n contrast: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"black\" },\n { name: \"color\", value: \"yellow\" },\n { name: \"fontcolor\", value: \"yellow\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"yellow\" },\n { name: \"fontcolor\", value: \"yellow\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"yellow\" },\n { name: \"fontcolor\", value: \"yellow\" }\n ]\n },\n policetape: {\n dotGraphAttrs: [{ name: \"bgcolor\", value: \"yellow\" }],\n dotNodeAttrs: [],\n dotEdgeAttrs: []\n },\n transparent: {\n dotGraphAttrs: [{ name: \"bgcolor\", value: \"transparent\" }],\n dotNodeAttrs: [],\n dotEdgeAttrs: []\n },\n zany: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"deeppink\" },\n { name: \"color\", value: \"green\" },\n { name: \"fontname\", value: '\"Comic Sans MS\"' },\n { name: \"fontcolor\", value: \"green\" },\n { name: \"nslimit\", value: \"0\" },\n { name: \"nslimit1\", value: \"1\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"green\" },\n { name: \"fontname\", value: '\"Comic Sans MS\"' },\n { name: \"fontcolor\", value: \"green\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"green\" },\n { name: \"fontname\", value: '\"Comic Sans MS\"' },\n { name: \"fontcolor\", value: \"green\" }\n ]\n }\n};\n", "import queryString from \"query-string\";\nimport smcat from \"../src/index.mjs\";\nimport { toRasterURI } from \"./sitesrc/to-raster-uri\";\nimport { themeAttributeMap } from \"./sitesrc/theme-attribute-map\";\n\nconst LOCALSTORAGE_KEY = `state-machine-cat-${smcat.version.split(\".\")[0]}`;\nconst DEFAULT_INPUTSCRIPT = `initial,\n\"media player off\",\n\n\"media player on\" {\n stopped, playing, paused;\n\n stopped => playing : play;\n playing => stopped : stop;\n playing => paused : pause;\n paused => playing : pause;\n paused => stopped : stop;\n};\n\ninitial => \"media player off\";\n\"media player off\" => stopped : power;\n\"media player on\" => \"media player off\" : power;`;\n\nlet gModel = {\n outputType: \"svg\",\n inputType: \"smcat\",\n engine: \"dot\",\n theme: \"vanilla\",\n direction: \"top-down\",\n fitToWidth: false,\n desugar: false,\n autoRender: true,\n inputscript: DEFAULT_INPUTSCRIPT,\n sample: \"/samples/mediaplayer.smcat\",\n};\n\nfunction startsWith(pCharacter) {\n return (pKey) => pKey.substr(0, 1) === pCharacter;\n}\n\nfunction toKeyValue(pQueryParams) {\n return (pKey) => ({ name: pKey.substr(1), value: pQueryParams[pKey] });\n}\n\nfunction persistState(pKey, pState) {\n if (typeof localStorage !== \"undefined\") {\n localStorage.setItem(pKey, JSON.stringify(pState));\n }\n}\nfunction getState(pKey, pDefault) {\n let lRetval = pDefault;\n if (typeof localStorage !== \"undefined\") {\n try {\n lRetval = JSON.parse(localStorage.getItem(pKey)) || pDefault;\n } catch (e) {\n console.warn(e);\n }\n }\n return lRetval;\n}\n\nfunction toVectorURI(pSVGSource) {\n return (\n \"data:image/svg+xml;charset=utf-8,\" +\n encodeURIComponent(\n ']>'.concat(pSVGSource),\n )\n );\n}\n\nfunction updateViewModel(pTarget) {\n return (pEvent) => {\n gModel[pTarget || pEvent.target.id] =\n pEvent.target.type === \"checkbox\"\n ? pEvent.target.checked\n : pEvent.target.value;\n persistState(LOCALSTORAGE_KEY, gModel);\n showModel(gModel);\n };\n}\n\nfunction outputIsSaveable() {\n const lSVGs = window.output.getElementsByTagName(\"svg\");\n return lSVGs.length > 0;\n}\n\nfunction showModel(pModel) {\n document.getElementById(\"autoRender\").checked = pModel.autoRender;\n document.getElementById(\"fitToWidth\").checked = pModel.fitToWidth;\n document.getElementById(\"desugar\").checked = pModel.desugar;\n document.getElementById(\"engine\").value = pModel.engine;\n document.getElementById(\"theme\").value = pModel.theme;\n document.getElementById(\"direction\").value = pModel.direction;\n document.getElementById(\"sample\").value = pModel.sample;\n document.getElementById(\"inputscript\").value = pModel.inputscript;\n document.getElementById(pModel.outputType).checked = true;\n document.getElementById(`input_${pModel.inputType}`).checked = true;\n\n if (gModel.autoRender) {\n document.getElementById(\"render\").style = \"display : none\";\n render();\n } else {\n document.getElementById(\"render\").style = \"\";\n }\n\n if (outputIsSaveable()) {\n const lSVGs = window.output.getElementsByTagName(\"svg\");\n const lUniqueIshPostfix = new Date().toISOString();\n document.getElementById(\"save-svg\").href = toVectorURI(lSVGs[0].outerHTML);\n document.getElementById(\"save-svg\").download =\n `state-machine-${lUniqueIshPostfix}.svg`;\n toRasterURI(lSVGs[0].outerHTML, (pRasterURI) => {\n document.getElementById(\"save-png\").href = pRasterURI;\n document.getElementById(\"save-png\").download =\n `state-machine-${lUniqueIshPostfix}.png`;\n });\n }\n}\n\nfunction getAttrFromQueryParams(pQueryParams) {\n const lDotGraphAttrs = Object.keys(pQueryParams)\n .filter(startsWith(\"G\"))\n .map(toKeyValue(pQueryParams));\n const lDotNodeAttrs = Object.keys(pQueryParams)\n .filter(startsWith(\"N\"))\n .map(toKeyValue(pQueryParams));\n const lDotEdgeAttrs = Object.keys(pQueryParams)\n .filter(startsWith(\"E\"))\n .map(toKeyValue(pQueryParams));\n let lRetval = {};\n if (lDotGraphAttrs.length > 0) {\n lRetval.dotGraphAttrs = lDotGraphAttrs;\n }\n if (lDotNodeAttrs.length > 0) {\n lRetval.dotNodeAttrs = lDotNodeAttrs;\n }\n if (lDotEdgeAttrs.length > 0) {\n lRetval.dotEdgeAttrs = lDotEdgeAttrs;\n }\n\n return lRetval;\n}\n\nfunction theme2attr(pThemeAttributeMap, pTheme) {\n return (\n pThemeAttributeMap[pTheme] || {\n dotGraphAttrs: [],\n dotNodeAttrs: [],\n dotEdgeAttrs: [],\n }\n );\n}\n\nfunction sanitizeLocation(pLocationString) {\n return pLocationString.slice(0, 1024).replace(/ pOption.name === \"bgcolor\",\n ) || {\n value: \"transparent\",\n }\n ).value\n }`;\n window.output.innerHTML = formatToOutput(\n lResult,\n gModel.outputType,\n gModel.fitToWidth,\n );\n } catch (pError) {\n window.output.innerHTML = pError;\n }\n}\n\nfunction formatToOutput(pResult, pOutputType, pFitToWidth) {\n switch (pOutputType) {\n case \"json\":\n case \"scjson\": {\n return `
${JSON.stringify(pResult, null, \"    \").replace(\n        /`;\n    }\n    case \"svg\": {\n      return pFitToWidth\n        ? pResult.replace(/svg width=\"[^\"]+\"/g, 'svg width=\"100%\"')\n        : pResult;\n    }\n    default: {\n      return `
${pResult.replace(/`;\n    }\n  }\n}\n\nfunction setTextAreaToWindowHeight() {\n  window.inputscript.style.height = \"${height}px\".replace(\n    \"${height}\",\n    window.innerHeight - 120,\n  );\n}\n\nfunction showContextMenu(pX, pY) {\n  window.contextmenu.style = `display: block; position: absolute; z-index: 2; left: ${pX}px; top: ${\n    pY - 70\n  }px`;\n}\n\nfunction hideContextMenu() {\n  window.contextmenu.style = \"display : none\";\n}\n\nfunction logError(pError) {\n  LOG && console.error(pError);\n}\n\ngModel = getState(LOCALSTORAGE_KEY, gModel);\n\nwindow.svg.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.dot.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.json.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.smcat.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.scjson.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.scxml.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.svg.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.inputscript.addEventListener(\"input\", updateViewModel());\nwindow.direction.addEventListener(\"change\", updateViewModel());\nwindow.engine.addEventListener(\"change\", updateViewModel());\nwindow.theme.addEventListener(\"change\", updateViewModel());\nwindow.input_json.addEventListener(\n  \"click\",\n  updateViewModel(\"inputType\"),\n  false,\n);\nwindow.input_smcat.addEventListener(\n  \"click\",\n  updateViewModel(\"inputType\"),\n  false,\n);\nwindow.input_scxml.addEventListener(\n  \"click\",\n  updateViewModel(\"inputType\"),\n  false,\n);\nwindow.fitToWidth.addEventListener(\"click\", updateViewModel(), false);\nwindow.autoRender.addEventListener(\"click\", updateViewModel(), false);\nwindow.desugar.addEventListener(\"click\", updateViewModel(), false);\nwindow.render.addEventListener(\"click\", () => render(), false);\nwindow.addEventListener(\"resize\", setTextAreaToWindowHeight);\nwindow.output.addEventListener(\"contextmenu\", (pEvent) => {\n  if (outputIsSaveable()) {\n    pEvent.preventDefault();\n\n    showContextMenu(pEvent.clientX, pEvent.clientY);\n  }\n});\n\ndocument.getElementById(\"save-svg\").addEventListener(\"click\", hideContextMenu);\ndocument.getElementById(\"save-png\").addEventListener(\"click\", hideContextMenu);\n\nwindow.output.addEventListener(\"click\", hideContextMenu);\n\nwindow.addEventListener(\"keyup\", (pEvent) => {\n  if (pEvent.code === \"Escape\") {\n    hideContextMenu();\n  }\n});\n\nwindow.sample.addEventListener(\"change\", (pEvent) => {\n  if (pEvent.target.value) {\n    gModel.sample = pEvent.target.value;\n\n    fetch(pEvent.target.value)\n      .then((pResponse) => {\n        if (pResponse.status === 200) {\n          return pResponse.text();\n        }\n        logError(pResponse);\n      })\n      .then((pSourceText) => {\n        if (pSourceText) {\n          gModel.inputscript = pSourceText;\n          persistState(LOCALSTORAGE_KEY, gModel);\n          showModel(gModel);\n        }\n      })\n      .catch(logError);\n  }\n});\n\nwindow.version.innerHTML = \"state machine cat ${version}\".replace(\n  \"${version}\",\n  smcat.version,\n);\nsetTextAreaToWindowHeight();\nshowModel(gModel);\n/* global LOG */\n"],
-  "mappings": "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YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,MAAM,OAAO,MAAM,SAAS,KAAK,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAO,OAAO,OAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,GAAK,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,OAAS,UAAU,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,QAAQ,OAAS,QAAQ,SAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,SAAS,OAAS,MAAM,OAAS,MAAM,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,OAAS,OAAO,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,SAAS,QAAQ,OAAS,UAAU,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,KAAK,OAAO,QAAQ,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,UAAU,OAAS,UAAU,OAAS,KAAK,OAAS,MAAM,OAAS,KAAK,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,UAAU,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,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",
+  "sourcesContent": ["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n  abstract readonly str: string\n  abstract readonly names: UsedNames\n  abstract toString(): string\n  abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n  readonly str: string\n  constructor(s: string) {\n    super()\n    if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n    this.str = s\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    return false\n  }\n\n  get names(): UsedNames {\n    return {[this.str]: 1}\n  }\n}\n\nexport class _Code extends _CodeOrName {\n  readonly _items: readonly CodeItem[]\n  private _str?: string\n  private _names?: UsedNames\n\n  constructor(code: string | readonly CodeItem[]) {\n    super()\n    this._items = typeof code === \"string\" ? [code] : code\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    if (this._items.length > 1) return false\n    const item = this._items[0]\n    return item === \"\" || item === '\"\"'\n  }\n\n  get str(): string {\n    return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n  }\n\n  get names(): UsedNames {\n    return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n      if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n      return names\n    }, {}))\n  }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n  const code: CodeItem[] = [strs[0]]\n  let i = 0\n  while (i < args.length) {\n    addCodeArg(code, args[i])\n    code.push(strs[++i])\n  }\n  return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n  const expr: CodeItem[] = [safeStringify(strs[0])]\n  let i = 0\n  while (i < args.length) {\n    expr.push(plus)\n    addCodeArg(expr, args[i])\n    expr.push(plus, safeStringify(strs[++i]))\n  }\n  optimize(expr)\n  return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n  if (arg instanceof _Code) code.push(...arg._items)\n  else if (arg instanceof Name) code.push(arg)\n  else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n  let i = 1\n  while (i < expr.length - 1) {\n    if (expr[i] === plus) {\n      const res = mergeExprItems(expr[i - 1], expr[i + 1])\n      if (res !== undefined) {\n        expr.splice(i - 1, 3, res)\n        continue\n      }\n      expr[i++] = \"+\"\n    }\n    i++\n  }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n  if (b === '\"\"') return a\n  if (a === '\"\"') return b\n  if (typeof a == \"string\") {\n    if (b instanceof Name || a[a.length - 1] !== '\"') return\n    if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n    if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n    return\n  }\n  if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n  return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n  return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n  return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n    ? x\n    : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n  return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n  return JSON.stringify(x)\n    .replace(/\\u2028/g, \"\\\\u2028\")\n    .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n  return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n  if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n    return new _Code(`${key}`)\n  }\n  throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n  return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n  prefix: string\n  index: number\n}\n\nexport interface NameValue {\n  ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n  key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n  code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n  readonly value?: NameValue\n  constructor(name: ValueScopeName) {\n    super(`CodeGen: \"code\" for ${name} not defined`)\n    this.value = name.value\n  }\n}\n\ninterface ScopeOptions {\n  prefixes?: Set\n  parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n  scope: ScopeStore\n  es5?: boolean\n  lines?: boolean\n}\n\nexport type ScopeStore = Record\n\ntype ScopeValues = {\n  [Prefix in string]?: Map\n}\n\nexport type ScopeValueSets = {\n  [Prefix in string]?: Set\n}\n\nexport enum UsedValueState {\n  Started,\n  Completed,\n}\n\nexport type UsedScopeValues = {\n  [Prefix in string]?: Map\n}\n\nexport const varKinds = {\n  const: new Name(\"const\"),\n  let: new Name(\"let\"),\n  var: new Name(\"var\"),\n}\n\nexport class Scope {\n  protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n  protected readonly _prefixes?: Set\n  protected readonly _parent?: Scope\n\n  constructor({prefixes, parent}: ScopeOptions = {}) {\n    this._prefixes = prefixes\n    this._parent = parent\n  }\n\n  toName(nameOrPrefix: Name | string): Name {\n    return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n  }\n\n  name(prefix: string): Name {\n    return new Name(this._newName(prefix))\n  }\n\n  protected _newName(prefix: string): string {\n    const ng = this._names[prefix] || this._nameGroup(prefix)\n    return `${prefix}${ng.index++}`\n  }\n\n  private _nameGroup(prefix: string): NameGroup {\n    if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n      throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n    }\n    return (this._names[prefix] = {prefix, index: 0})\n  }\n}\n\ninterface ScopePath {\n  property: string\n  itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n  readonly prefix: string\n  value?: NameValue\n  scopePath?: Code\n\n  constructor(prefix: string, nameStr: string) {\n    super(nameStr)\n    this.prefix = prefix\n  }\n\n  setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n    this.value = value\n    this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n  }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n  _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n  protected readonly _values: ScopeValues = {}\n  protected readonly _scope: ScopeStore\n  readonly opts: VSOptions\n\n  constructor(opts: ValueScopeOptions) {\n    super(opts)\n    this._scope = opts.scope\n    this.opts = {...opts, _n: opts.lines ? line : nil}\n  }\n\n  get(): ScopeStore {\n    return this._scope\n  }\n\n  name(prefix: string): ValueScopeName {\n    return new ValueScopeName(prefix, this._newName(prefix))\n  }\n\n  value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n    if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n    const name = this.toName(nameOrPrefix) as ValueScopeName\n    const {prefix} = name\n    const valueKey = value.key ?? value.ref\n    let vs = this._values[prefix]\n    if (vs) {\n      const _name = vs.get(valueKey)\n      if (_name) return _name\n    } else {\n      vs = this._values[prefix] = new Map()\n    }\n    vs.set(valueKey, name)\n\n    const s = this._scope[prefix] || (this._scope[prefix] = [])\n    const itemIndex = s.length\n    s[itemIndex] = value.ref\n    name.setValue(value, {property: prefix, itemIndex})\n    return name\n  }\n\n  getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    const vs = this._values[prefix]\n    if (!vs) return\n    return vs.get(keyOrRef)\n  }\n\n  scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n    return this._reduceValues(values, (name: ValueScopeName) => {\n      if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n      return _`${scopeName}${name.scopePath}`\n    })\n  }\n\n  scopeCode(\n    values: ScopeValues | ScopeValueSets = this._values,\n    usedValues?: UsedScopeValues,\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    return this._reduceValues(\n      values,\n      (name: ValueScopeName) => {\n        if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n        return name.value.code\n      },\n      usedValues,\n      getCode\n    )\n  }\n\n  private _reduceValues(\n    values: ScopeValues | ScopeValueSets,\n    valueCode: (n: ValueScopeName) => Code | undefined,\n    usedValues: UsedScopeValues = {},\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    let code: Code = nil\n    for (const prefix in values) {\n      const vs = values[prefix]\n      if (!vs) continue\n      const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n      vs.forEach((name: ValueScopeName) => {\n        if (nameSet.has(name)) return\n        nameSet.set(name, UsedValueState.Started)\n        let c = valueCode(name)\n        if (c) {\n          const def = this.opts.es5 ? varKinds.var : varKinds.const\n          code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n        } else if ((c = getCode?.(name))) {\n          code = _`${code}${c}${this.opts._n}`\n        } else {\n          throw new ValueError(name)\n        }\n        nameSet.set(name, UsedValueState.Completed)\n      })\n    }\n    return code\n  }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n  GT: new _Code(\">\"),\n  GTE: new _Code(\">=\"),\n  LT: new _Code(\"<\"),\n  LTE: new _Code(\"<=\"),\n  EQ: new _Code(\"===\"),\n  NEQ: new _Code(\"!==\"),\n  NOT: new _Code(\"!\"),\n  OR: new _Code(\"||\"),\n  AND: new _Code(\"&&\"),\n  ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n  abstract readonly names: UsedNames\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    return this\n  }\n\n  optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n    return this\n  }\n\n  // get count(): number {\n  //   return 1\n  // }\n}\n\nclass Def extends Node {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private rhs?: SafeExpr\n  ) {\n    super()\n  }\n\n  render({es5, _n}: CGOptions): string {\n    const varKind = es5 ? varKinds.var : this.varKind\n    const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n    return `${varKind} ${this.name}${rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!names[this.name.str]) return\n    if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n  }\n}\n\nclass Assign extends Node {\n  constructor(\n    readonly lhs: Code,\n    public rhs: SafeExpr,\n    private readonly sideEffects?: boolean\n  ) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} = ${this.rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n    this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n    return addExprNames(names, this.rhs)\n  }\n}\n\nclass AssignOp extends Assign {\n  constructor(\n    lhs: Code,\n    private readonly op: Code,\n    rhs: SafeExpr,\n    sideEffects?: boolean\n  ) {\n    super(lhs, rhs, sideEffects)\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n  }\n}\n\nclass Label extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label: Name) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.label}:` + _n\n  }\n}\n\nclass Break extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label?: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    const label = this.label ? ` ${this.label}` : \"\"\n    return `break${label};` + _n\n  }\n}\n\nclass Throw extends Node {\n  constructor(readonly error: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `throw ${this.error};` + _n\n  }\n\n  get names(): UsedNames {\n    return this.error.names\n  }\n}\n\nclass AnyCode extends Node {\n  constructor(private code: SafeExpr) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.code};` + _n\n  }\n\n  optimizeNodes(): this | undefined {\n    return `${this.code}` ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    this.code = optimizeExpr(this.code, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.code instanceof _CodeOrName ? this.code.names : {}\n  }\n}\n\nabstract class ParentNode extends Node {\n  constructor(readonly nodes: ChildNode[] = []) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n  }\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      const n = nodes[i].optimizeNodes()\n      if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n      else if (n) nodes[i] = n\n      else nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      // iterating backwards improves 1-pass optimization\n      const n = nodes[i]\n      if (n.optimizeNames(names, constants)) continue\n      subtractNames(names, n.names)\n      nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  get names(): UsedNames {\n    return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n  }\n\n  // get count(): number {\n  //   return this.nodes.reduce((c, n) => c + n.count, 1)\n  // }\n}\n\nabstract class BlockNode extends ParentNode {\n  render(opts: CGOptions): string {\n    return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n  }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n  static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n  static readonly kind = \"if\"\n  else?: If | Else\n  constructor(\n    private condition: Code | boolean,\n    nodes?: ChildNode[]\n  ) {\n    super(nodes)\n  }\n\n  render(opts: CGOptions): string {\n    let code = `if(${this.condition})` + super.render(opts)\n    if (this.else) code += \"else \" + this.else.render(opts)\n    return code\n  }\n\n  optimizeNodes(): If | ChildNode[] | undefined {\n    super.optimizeNodes()\n    const cond = this.condition\n    if (cond === true) return this.nodes // else is ignored here\n    let e = this.else\n    if (e) {\n      const ns = e.optimizeNodes()\n      e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n    }\n    if (e) {\n      if (cond === false) return e instanceof If ? e : e.nodes\n      if (this.nodes.length) return this\n      return new If(not(cond), e instanceof If ? [e] : e.nodes)\n    }\n    if (cond === false || !this.nodes.length) return undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    this.else = this.else?.optimizeNames(names, constants)\n    if (!(super.optimizeNames(names, constants) || this.else)) return\n    this.condition = optimizeExpr(this.condition, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    addExprNames(names, this.condition)\n    if (this.else) addNames(names, this.else.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.else?.count || 0)\n  // }\n}\n\nabstract class For extends BlockNode {\n  static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n  constructor(private iteration: Code) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.iteration})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iteration = optimizeExpr(this.iteration, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iteration.names)\n  }\n}\n\nclass ForRange extends For {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private readonly from: SafeExpr,\n    private readonly to: SafeExpr\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const varKind = opts.es5 ? varKinds.var : this.varKind\n    const {name, from, to} = this\n    return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n  }\n\n  get names(): UsedNames {\n    const names = addExprNames(super.names, this.from)\n    return addExprNames(names, this.to)\n  }\n}\n\nclass ForIter extends For {\n  constructor(\n    private readonly loop: \"of\" | \"in\",\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private iterable: Code\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iterable = optimizeExpr(this.iterable, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iterable.names)\n  }\n}\n\nclass Func extends BlockNode {\n  static readonly kind = \"func\"\n  constructor(\n    public name: Name,\n    public args: Code,\n    public async?: boolean\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const _async = this.async ? \"async \" : \"\"\n    return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n  }\n}\n\nclass Return extends ParentNode {\n  static readonly kind = \"return\"\n\n  render(opts: CGOptions): string {\n    return \"return \" + super.render(opts)\n  }\n}\n\nclass Try extends BlockNode {\n  catch?: Catch\n  finally?: Finally\n\n  render(opts: CGOptions): string {\n    let code = \"try\" + super.render(opts)\n    if (this.catch) code += this.catch.render(opts)\n    if (this.finally) code += this.finally.render(opts)\n    return code\n  }\n\n  optimizeNodes(): this {\n    super.optimizeNodes()\n    this.catch?.optimizeNodes() as Catch | undefined\n    this.finally?.optimizeNodes() as Finally | undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    super.optimizeNames(names, constants)\n    this.catch?.optimizeNames(names, constants)\n    this.finally?.optimizeNames(names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    if (this.catch) addNames(names, this.catch.names)\n    if (this.finally) addNames(names, this.finally.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n  // }\n}\n\nclass Catch extends BlockNode {\n  static readonly kind = \"catch\"\n  constructor(readonly error: Name) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `catch(${this.error})` + super.render(opts)\n  }\n}\n\nclass Finally extends BlockNode {\n  static readonly kind = \"finally\"\n  render(opts: CGOptions): string {\n    return \"finally\" + super.render(opts)\n  }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n  | typeof If\n  | typeof Else\n  | typeof For\n  | typeof Func\n  | typeof Return\n  | typeof Catch\n  | typeof Finally\n\ntype Constants = Record\n\nexport interface CodeGenOptions {\n  es5?: boolean\n  lines?: boolean\n  ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n  _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n  readonly _scope: Scope\n  readonly _extScope: ValueScope\n  readonly _values: ScopeValueSets = {}\n  private readonly _nodes: ParentNode[]\n  private readonly _blockStarts: number[] = []\n  private readonly _constants: Constants = {}\n  private readonly opts: CGOptions\n\n  constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n    this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n    this._extScope = extScope\n    this._scope = new Scope({parent: extScope})\n    this._nodes = [new Root()]\n  }\n\n  toString(): string {\n    return this._root.render(this.opts)\n  }\n\n  // returns unique name in the internal scope\n  name(prefix: string): Name {\n    return this._scope.name(prefix)\n  }\n\n  // reserves unique name in the external scope\n  scopeName(prefix: string): ValueScopeName {\n    return this._extScope.name(prefix)\n  }\n\n  // reserves unique name in the external scope and assigns value to it\n  scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n    const name = this._extScope.value(prefixOrName, value)\n    const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n    vs.add(name)\n    return name\n  }\n\n  getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    return this._extScope.getValue(prefix, keyOrRef)\n  }\n\n  // return code that assigns values in the external scope to the names that are used internally\n  // (same names that were returned by gen.scopeName or gen.scopeValue)\n  scopeRefs(scopeName: Name): Code {\n    return this._extScope.scopeRefs(scopeName, this._values)\n  }\n\n  scopeCode(): Code {\n    return this._extScope.scopeCode(this._values)\n  }\n\n  private _def(\n    varKind: Name,\n    nameOrPrefix: Name | string,\n    rhs?: SafeExpr,\n    constant?: boolean\n  ): Name {\n    const name = this._scope.toName(nameOrPrefix)\n    if (rhs !== undefined && constant) this._constants[name.str] = rhs\n    this._leafNode(new Def(varKind, name, rhs))\n    return name\n  }\n\n  // `const` declaration (`var` in es5 mode)\n  const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n  }\n\n  // `let` declaration with optional assignment (`var` in es5 mode)\n  let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n  }\n\n  // `var` declaration with optional assignment\n  var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n  }\n\n  // assignment code\n  assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n    return this._leafNode(new Assign(lhs, rhs, sideEffects))\n  }\n\n  // `+=` code\n  add(lhs: Code, rhs: SafeExpr): CodeGen {\n    return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n  }\n\n  // appends passed SafeExpr to code or executes Block\n  code(c: Block | SafeExpr): CodeGen {\n    if (typeof c == \"function\") c()\n    else if (c !== nil) this._leafNode(new AnyCode(c))\n    return this\n  }\n\n  // returns code for object literal for the passed argument list of key-value pairs\n  object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n    const code: CodeItem[] = [\"{\"]\n    for (const [key, value] of keyValues) {\n      if (code.length > 1) code.push(\",\")\n      code.push(key)\n      if (key !== value || this.opts.es5) {\n        code.push(\":\")\n        addCodeArg(code, value)\n      }\n    }\n    code.push(\"}\")\n    return new _Code(code)\n  }\n\n  // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n  if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n    this._blockNode(new If(condition))\n\n    if (thenBody && elseBody) {\n      this.code(thenBody).else().code(elseBody).endIf()\n    } else if (thenBody) {\n      this.code(thenBody).endIf()\n    } else if (elseBody) {\n      throw new Error('CodeGen: \"else\" body without \"then\" body')\n    }\n    return this\n  }\n\n  // `else if` clause - invalid without `if` or after `else` clauses\n  elseIf(condition: Code | boolean): CodeGen {\n    return this._elseNode(new If(condition))\n  }\n\n  // `else` clause - only valid after `if` or `else if` clauses\n  else(): CodeGen {\n    return this._elseNode(new Else())\n  }\n\n  // end `if` statement (needed if gen.if was used only with condition)\n  endIf(): CodeGen {\n    return this._endBlockNode(If, Else)\n  }\n\n  private _for(node: For, forBody?: Block): CodeGen {\n    this._blockNode(node)\n    if (forBody) this.code(forBody).endFor()\n    return this\n  }\n\n  // a generic `for` clause (or statement if `forBody` is passed)\n  for(iteration: Code, forBody?: Block): CodeGen {\n    return this._for(new ForLoop(iteration), forBody)\n  }\n\n  // `for` statement for a range of values\n  forRange(\n    nameOrPrefix: Name | string,\n    from: SafeExpr,\n    to: SafeExpr,\n    forBody: (index: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n  }\n\n  // `for-of` statement (in es5 mode replace with a normal for loop)\n  forOf(\n    nameOrPrefix: Name | string,\n    iterable: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = varKinds.const\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    if (this.opts.es5) {\n      const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n      return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n        this.var(name, _`${arr}[${i}]`)\n        forBody(name)\n      })\n    }\n    return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n  }\n\n  // `for-in` statement.\n  // With option `ownProperties` replaced with a `for-of` loop for object keys\n  forIn(\n    nameOrPrefix: Name | string,\n    obj: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n  ): CodeGen {\n    if (this.opts.ownProperties) {\n      return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n    }\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n  }\n\n  // end `for` loop\n  endFor(): CodeGen {\n    return this._endBlockNode(For)\n  }\n\n  // `label` statement\n  label(label: Name): CodeGen {\n    return this._leafNode(new Label(label))\n  }\n\n  // `break` statement\n  break(label?: Code): CodeGen {\n    return this._leafNode(new Break(label))\n  }\n\n  // `return` statement\n  return(value: Block | SafeExpr): CodeGen {\n    const node = new Return()\n    this._blockNode(node)\n    this.code(value)\n    if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n    return this._endBlockNode(Return)\n  }\n\n  // `try` statement\n  try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n    if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n    const node = new Try()\n    this._blockNode(node)\n    this.code(tryBody)\n    if (catchCode) {\n      const error = this.name(\"e\")\n      this._currNode = node.catch = new Catch(error)\n      catchCode(error)\n    }\n    if (finallyCode) {\n      this._currNode = node.finally = new Finally()\n      this.code(finallyCode)\n    }\n    return this._endBlockNode(Catch, Finally)\n  }\n\n  // `throw` statement\n  throw(error: Code): CodeGen {\n    return this._leafNode(new Throw(error))\n  }\n\n  // start self-balancing block\n  block(body?: Block, nodeCount?: number): CodeGen {\n    this._blockStarts.push(this._nodes.length)\n    if (body) this.code(body).endBlock(nodeCount)\n    return this\n  }\n\n  // end the current self-balancing block\n  endBlock(nodeCount?: number): CodeGen {\n    const len = this._blockStarts.pop()\n    if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n    const toClose = this._nodes.length - len\n    if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n      throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n    }\n    this._nodes.length = len\n    return this\n  }\n\n  // `function` heading (or definition if funcBody is passed)\n  func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n    this._blockNode(new Func(name, args, async))\n    if (funcBody) this.code(funcBody).endFunc()\n    return this\n  }\n\n  // end function definition\n  endFunc(): CodeGen {\n    return this._endBlockNode(Func)\n  }\n\n  optimize(n = 1): void {\n    while (n-- > 0) {\n      this._root.optimizeNodes()\n      this._root.optimizeNames(this._root.names, this._constants)\n    }\n  }\n\n  private _leafNode(node: LeafNode): CodeGen {\n    this._currNode.nodes.push(node)\n    return this\n  }\n\n  private _blockNode(node: StartBlockNode): void {\n    this._currNode.nodes.push(node)\n    this._nodes.push(node)\n  }\n\n  private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n    const n = this._currNode\n    if (n instanceof N1 || (N2 && n instanceof N2)) {\n      this._nodes.pop()\n      return this\n    }\n    throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n  }\n\n  private _elseNode(node: If | Else): CodeGen {\n    const n = this._currNode\n    if (!(n instanceof If)) {\n      throw new Error('CodeGen: \"else\" without \"if\"')\n    }\n    this._currNode = n.else = node\n    return this\n  }\n\n  private get _root(): Root {\n    return this._nodes[0] as Root\n  }\n\n  private get _currNode(): ParentNode {\n    const ns = this._nodes\n    return ns[ns.length - 1]\n  }\n\n  private set _currNode(node: ParentNode) {\n    const ns = this._nodes\n    ns[ns.length - 1] = node\n  }\n\n  // get nodeCount(): number {\n  //   return this._root.count\n  // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n  for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n  return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n  return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n  if (expr instanceof Name) return replaceName(expr)\n  if (!canOptimize(expr)) return expr\n  return new _Code(\n    expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n      if (c instanceof Name) c = replaceName(c)\n      if (c instanceof _Code) items.push(...c._items)\n      else items.push(c)\n      return items\n    }, [])\n  )\n\n  function replaceName(n: Name): SafeExpr {\n    const c = constants[n.str]\n    if (c === undefined || names[n.str] !== 1) return n\n    delete names[n.str]\n    return c\n  }\n\n  function canOptimize(e: SafeExpr): e is _Code {\n    return (\n      e instanceof _Code &&\n      e._items.some(\n        (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n      )\n    )\n  }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n  for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n  return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n  return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n  return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n  return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n  return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash(arr: T[]): {[K in T]?: true} {\n  const hash: {[K in T]?: true} = {}\n  for (const item of arr) hash[item] = true\n  return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n  if (typeof schema == \"boolean\") return schema\n  if (Object.keys(schema).length === 0) return true\n  checkUnknownRules(it, schema)\n  return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n  const {opts, self} = it\n  if (!opts.strictSchema) return\n  if (typeof schema === \"boolean\") return\n  const rules = self.RULES.keywords\n  for (const key in schema) {\n    if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n  }\n}\n\nexport function schemaHasRules(\n  schema: AnySchema,\n  rules: {[Key in string]?: boolean | Rule}\n): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (rules[key]) return true\n  return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n  return false\n}\n\nexport function schemaRefOrVal(\n  {topSchemaRef, schemaPath}: SchemaObjCxt,\n  schema: unknown,\n  keyword: string,\n  $data?: string | false\n): Code | number | boolean {\n  if (!$data) {\n    if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n    if (typeof schema == \"string\") return _`${schema}`\n  }\n  return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n  return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n  return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n  if (typeof str == \"number\") return `${str}`\n  return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n  return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem(xs: T | T[], f: (x: T) => void): void {\n  if (Array.isArray(xs)) {\n    for (const x of xs) f(x)\n  } else {\n    f(xs)\n  }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc = (\n  gen: CodeGen,\n  from: Name | T,\n  to: Name | Exclude | undefined,\n  toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs {\n  mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n  mergeToName: (gen: CodeGen, from: T, to: Name) => void\n  mergeValues: (from: T, to: Exclude) => T\n  resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated({\n  mergeNames,\n  mergeToName,\n  mergeValues,\n  resultToName,\n}: MakeMergeFuncArgs): MergeEvaluatedFunc {\n  return (gen, from, to, toName) => {\n    const res =\n      to === undefined\n        ? from\n        : to instanceof Name\n        ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n        : from instanceof Name\n        ? (mergeToName(gen, to, from), from)\n        : mergeValues(from, to)\n    return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n  }\n}\n\ninterface MergeEvaluated {\n  props: MergeEvaluatedFunc\n  items: MergeEvaluatedFunc\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n  props: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n        gen.if(\n          _`${from} === true`,\n          () => gen.assign(to, true),\n          () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n        )\n      }),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () => {\n        if (from === true) {\n          gen.assign(to, true)\n        } else {\n          gen.assign(to, _`${to} || {}`)\n          setEvaluated(gen, to, from)\n        }\n      }),\n    mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n    resultToName: evaluatedPropsToName,\n  }),\n  items: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n        gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () =>\n        gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n    resultToName: (gen, items) => gen.var(\"items\", items),\n  }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n  if (ps === true) return gen.var(\"props\", true)\n  const props = gen.var(\"props\", _`{}`)\n  if (ps !== undefined) setEvaluated(gen, props, ps)\n  return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n  Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n  return gen.scopeValue(\"func\", {\n    ref: f,\n    code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n  })\n}\n\nexport enum Type {\n  Num,\n  Str,\n}\n\nexport function getErrorPath(\n  dataProp: Name | string | number,\n  dataPropType?: Type,\n  jsPropertySyntax?: boolean\n): Code | string {\n  // let path\n  if (dataProp instanceof Name) {\n    const isNumber = dataPropType === Type.Num\n    return jsPropertySyntax\n      ? isNumber\n        ? _`\"[\" + ${dataProp} + \"]\"`\n        : _`\"['\" + ${dataProp} + \"']\"`\n      : isNumber\n      ? _`\"/\" + ${dataProp}`\n      : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n  }\n  return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n  it: SchemaCxt,\n  msg: string,\n  mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n  if (!mode) return\n  msg = `strict mode: ${msg}`\n  if (mode === true) throw new Error(msg)\n  it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n  // validation function arguments\n  data: new Name(\"data\"), // data passed to validation function\n  // args passed from referencing schema\n  valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n  instancePath: new Name(\"instancePath\"),\n  parentData: new Name(\"parentData\"),\n  parentDataProperty: new Name(\"parentDataProperty\"),\n  rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n  dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n  // function scoped variables\n  vErrors: new Name(\"vErrors\"), // null or array of validation errors\n  errors: new Name(\"errors\"), // counter of validation errors\n  this: new Name(\"this\"),\n  // \"globals\"\n  self: new Name(\"self\"),\n  scope: new Name(\"scope\"),\n  // JTD serialize/parse name for JSON string and position\n  json: new Name(\"json\"),\n  jsonPos: new Name(\"jsonPos\"),\n  jsonLen: new Name(\"jsonLen\"),\n  jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n  message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n  message: ({keyword, schemaType}) =>\n    schemaType\n      ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n      : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n  instancePath?: Code\n  schemaPath?: string\n  parentSchema?: boolean\n}\n\nexport function reportError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths,\n  overrideAllErrors?: boolean\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  if (overrideAllErrors ?? (compositeRule || allErrors)) {\n    addError(gen, errObj)\n  } else {\n    returnErrors(it, _`[${errObj}]`)\n  }\n}\n\nexport function reportExtraError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  addError(gen, errObj)\n  if (!(compositeRule || allErrors)) {\n    returnErrors(it, N.vErrors)\n  }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n  gen.assign(N.errors, errsCount)\n  gen.if(_`${N.vErrors} !== null`, () =>\n    gen.if(\n      errsCount,\n      () => gen.assign(_`${N.vErrors}.length`, errsCount),\n      () => gen.assign(N.vErrors, null)\n    )\n  )\n}\n\nexport function extendErrors({\n  gen,\n  keyword,\n  schemaValue,\n  data,\n  errsCount,\n  it,\n}: KeywordErrorCxt): void {\n  /* istanbul ignore if */\n  if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n  const err = gen.name(\"err\")\n  gen.forRange(\"i\", errsCount, N.errors, (i) => {\n    gen.const(err, _`${N.vErrors}[${i}]`)\n    gen.if(_`${err}.instancePath === undefined`, () =>\n      gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n    )\n    gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n    if (it.opts.verbose) {\n      gen.assign(_`${err}.schema`, schemaValue)\n      gen.assign(_`${err}.data`, data)\n    }\n  })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n  const err = gen.const(\"err\", errObj)\n  gen.if(\n    _`${N.vErrors} === null`,\n    () => gen.assign(N.vErrors, _`[${err}]`),\n    _`${N.vErrors}.push(${err})`\n  )\n  gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n  const {gen, validateName, schemaEnv} = it\n  if (schemaEnv.$async) {\n    gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n  } else {\n    gen.assign(_`${validateName}.errors`, errs)\n    gen.return(false)\n  }\n}\n\nconst E = {\n  keyword: new Name(\"keyword\"),\n  schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n  params: new Name(\"params\"),\n  propertyName: new Name(\"propertyName\"),\n  message: new Name(\"message\"),\n  schema: new Name(\"schema\"),\n  parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths?: ErrorPaths\n): Code {\n  const {createErrors} = cxt.it\n  if (createErrors === false) return _`{}`\n  return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths: ErrorPaths = {}\n): Code {\n  const {gen, it} = cxt\n  const keyValues: [Name, SafeExpr | string][] = [\n    errorInstancePath(it, errorPaths),\n    errorSchemaPath(cxt, errorPaths),\n  ]\n  extraErrorProps(cxt, error, keyValues)\n  return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n  const instPath = instancePath\n    ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n    : errorPath\n  return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n  {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n  {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n  let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n  if (schemaPath) {\n    schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n  }\n  return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n  cxt: KeywordErrorCxt,\n  {params, message}: KeywordErrorDefinition,\n  keyValues: [Name, SafeExpr | string][]\n): void {\n  const {keyword, data, schemaValue, it} = cxt\n  const {opts, propertyName, topSchemaRef, schemaPath} = it\n  keyValues.push(\n    [E.keyword, keyword],\n    [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n  )\n  if (opts.messages) {\n    keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n  }\n  if (opts.verbose) {\n    keyValues.push(\n      [E.schema, schemaValue],\n      [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n      [N.data, data]\n    )\n  }\n  if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n  message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n  const {gen, schema, validateName} = it\n  if (schema === false) {\n    falseSchemaError(it, false)\n  } else if (typeof schema == \"object\" && schema.$async === true) {\n    gen.return(N.data)\n  } else {\n    gen.assign(_`${validateName}.errors`, null)\n    gen.return(true)\n  }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n  const {gen, schema} = it\n  if (schema === false) {\n    gen.var(valid, false) // TODO var\n    falseSchemaError(it)\n  } else {\n    gen.var(valid, true) // TODO var\n  }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n  const {gen, data} = it\n  // TODO maybe some other interface should be used for non-keyword validation errors...\n  const cxt: KeywordErrorCxt = {\n    gen,\n    keyword: \"false schema\",\n    data,\n    schema: false,\n    schemaCode: false,\n    schemaValue: false,\n    params: {},\n    it,\n  }\n  reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n  return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n  [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n  rules: RuleGroup[]\n  post: RuleGroup\n  all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n  keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n  types: ValidationTypes\n}\n\nexport interface RuleGroup {\n  type?: JSONType\n  rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n  keyword: string\n  definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n  const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n    number: {type: \"number\", rules: []},\n    string: {type: \"string\", rules: []},\n    array: {type: \"array\", rules: []},\n    object: {type: \"object\", rules: []},\n  }\n  return {\n    types: {...groups, integer: true, boolean: true, null: true},\n    rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n    post: {rules: []},\n    all: {},\n    keywords: {},\n  }\n}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n  {schema, self}: SchemaObjCxt,\n  type: JSONType\n): boolean | undefined {\n  const group = self.RULES.types[type]\n  return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n  return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n  return (\n    schema[rule.keyword] !== undefined ||\n    rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n  )\n}\n", "import type {\n  KeywordErrorDefinition,\n  KeywordErrorCxt,\n  ErrorObject,\n  AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n  Correct,\n  Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n  const types = getJSONTypes(schema.type)\n  const hasNull = types.includes(\"null\")\n  if (hasNull) {\n    if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n  } else {\n    if (!types.length && schema.nullable !== undefined) {\n      throw new Error('\"nullable\" cannot be used without \"type\"')\n    }\n    if (schema.nullable === true) types.push(\"null\")\n  }\n  return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n  const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n  if (types.every(isJSONType)) return types\n  throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n  const {gen, data, opts} = it\n  const coerceTo = coerceToTypes(types, opts.coerceTypes)\n  const checkTypes =\n    types.length > 0 &&\n    !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n  if (checkTypes) {\n    const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n    gen.if(wrongType, () => {\n      if (coerceTo.length) coerceData(it, types, coerceTo)\n      else reportTypeError(it)\n    })\n  }\n  return checkTypes\n}\n\nconst COERCIBLE: Set = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n  return coerceTypes\n    ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n    : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n  const {gen, data, opts} = it\n  const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n  const coerced = gen.let(\"coerced\", _`undefined`)\n  if (opts.coerceTypes === \"array\") {\n    gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n      gen\n        .assign(data, _`${data}[0]`)\n        .assign(dataType, _`typeof ${data}`)\n        .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n    )\n  }\n  gen.if(_`${coerced} !== undefined`)\n  for (const t of coerceTo) {\n    if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n      coerceSpecificType(t)\n    }\n  }\n  gen.else()\n  reportTypeError(it)\n  gen.endIf()\n\n  gen.if(_`${coerced} !== undefined`, () => {\n    gen.assign(data, coerced)\n    assignParentData(it, coerced)\n  })\n\n  function coerceSpecificType(t: string): void {\n    switch (t) {\n      case \"string\":\n        gen\n          .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n          .assign(coerced, _`\"\" + ${data}`)\n          .elseIf(_`${data} === null`)\n          .assign(coerced, _`\"\"`)\n        return\n      case \"number\":\n        gen\n          .elseIf(\n            _`${dataType} == \"boolean\" || ${data} === null\n              || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"integer\":\n        gen\n          .elseIf(\n            _`${dataType} === \"boolean\" || ${data} === null\n              || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"boolean\":\n        gen\n          .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n          .assign(coerced, false)\n          .elseIf(_`${data} === \"true\" || ${data} === 1`)\n          .assign(coerced, true)\n        return\n      case \"null\":\n        gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n        gen.assign(coerced, null)\n        return\n\n      case \"array\":\n        gen\n          .elseIf(\n            _`${dataType} === \"string\" || ${dataType} === \"number\"\n              || ${dataType} === \"boolean\" || ${data} === null`\n          )\n          .assign(coerced, _`[${data}]`)\n    }\n  }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n  // TODO use gen.property\n  gen.if(_`${parentData} !== undefined`, () =>\n    gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n  )\n}\n\nexport function checkDataType(\n  dataType: JSONType,\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct = DataType.Correct\n): Code {\n  const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n  let cond: Code\n  switch (dataType) {\n    case \"null\":\n      return _`${data} ${EQ} null`\n    case \"array\":\n      cond = _`Array.isArray(${data})`\n      break\n    case \"object\":\n      cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n      break\n    case \"integer\":\n      cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n      break\n    case \"number\":\n      cond = numCond()\n      break\n    default:\n      return _`typeof ${data} ${EQ} ${dataType}`\n  }\n  return correct === DataType.Correct ? cond : not(cond)\n\n  function numCond(_cond: Code = nil): Code {\n    return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n  }\n}\n\nexport function checkDataTypes(\n  dataTypes: JSONType[],\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct?: DataType\n): Code {\n  if (dataTypes.length === 1) {\n    return checkDataType(dataTypes[0], data, strictNums, correct)\n  }\n  let cond: Code\n  const types = toHash(dataTypes)\n  if (types.array && types.object) {\n    const notObj = _`typeof ${data} != \"object\"`\n    cond = types.null ? notObj : _`!${data} || ${notObj}`\n    delete types.null\n    delete types.array\n    delete types.object\n  } else {\n    cond = nil\n  }\n  if (types.number) delete types.integer\n  for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n  return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n  message: ({schema}) => `must be ${schema}`,\n  params: ({schema, schemaValue}) =>\n    typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n  const cxt = getTypeErrorContext(it)\n  reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n  const {gen, data, schema} = it\n  const schemaCode = schemaRefOrVal(it, schema, \"type\")\n  return {\n    gen,\n    keyword: \"type\",\n    data,\n    schema: schema.type,\n    schemaCode,\n    schemaValue: schemaCode,\n    parentSchema: schema,\n    params: {},\n    it,\n  }\n}\n", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n  const {properties, items} = it.schema\n  if (ty === \"object\" && properties) {\n    for (const key in properties) {\n      assignDefault(it, key, properties[key].default)\n    }\n  } else if (ty === \"array\" && Array.isArray(items)) {\n    items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n  }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n  const {gen, compositeRule, data, opts} = it\n  if (defaultValue === undefined) return\n  const childData = _`${data}${getProperty(prop)}`\n  if (compositeRule) {\n    checkStrictMode(it, `default is ignored for: ${childData}`)\n    return\n  }\n\n  let condition = _`${childData} === undefined`\n  if (opts.useDefaults === \"empty\") {\n    condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n  }\n  // `${childData} === undefined` +\n  // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n  gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n  const {gen, data, it} = cxt\n  gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n    cxt.setParams({missingProperty: _`${prop}`}, true)\n    cxt.error()\n  })\n}\n\nexport function checkMissingProp(\n  {gen, data, it: {opts}}: KeywordCxt,\n  properties: string[],\n  missing: Name\n): Code {\n  return or(\n    ...properties.map((prop) =>\n      and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n    )\n  )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n  cxt.setParams({missingProperty: missing}, true)\n  cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n  return gen.scopeValue(\"func\", {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    ref: Object.prototype.hasOwnProperty,\n    code: _`Object.prototype.hasOwnProperty`,\n  })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n  return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} !== undefined`\n  return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} === undefined`\n  return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n  return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n  return allSchemaProperties(schemaMap).filter(\n    (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n  )\n}\n\nexport function callValidateCode(\n  {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n  func: Code,\n  context: Code,\n  passSchema?: boolean\n): Code {\n  const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n  const valCxt: [Name, Code | number][] = [\n    [N.instancePath, strConcat(N.instancePath, errorPath)],\n    [N.parentData, it.parentData],\n    [N.parentDataProperty, it.parentDataProperty],\n    [N.rootData, N.rootData],\n  ]\n  if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n  const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n  return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n  const u = opts.unicodeRegExp ? \"u\" : \"\"\n  const {regExp} = opts.code\n  const rx = regExp(pattern, u)\n\n  return gen.scopeValue(\"pattern\", {\n    key: rx.toString(),\n    ref: rx,\n    code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n  })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  if (it.allErrors) {\n    const validArr = gen.let(\"valid\", true)\n    validateItems(() => gen.assign(validArr, false))\n    return validArr\n  }\n  gen.var(valid, true)\n  validateItems(() => gen.break())\n  return valid\n\n  function validateItems(notValid: () => void): void {\n    const len = gen.const(\"len\", _`${data}.length`)\n    gen.forRange(\"i\", 0, len, (i) => {\n      cxt.subschema(\n        {\n          keyword,\n          dataProp: i,\n          dataPropType: Type.Num,\n        },\n        valid\n      )\n      gen.if(not(valid), notValid)\n    })\n  }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n  const {gen, schema, keyword, it} = cxt\n  /* istanbul ignore if */\n  if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n  const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n  if (alwaysValid && !it.opts.unevaluated) return\n\n  const valid = gen.let(\"valid\", false)\n  const schValid = gen.name(\"_valid\")\n\n  gen.block(() =>\n    schema.forEach((_sch: AnySchema, i: number) => {\n      const schCxt = cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          compositeRule: true,\n        },\n        schValid\n      )\n      gen.assign(valid, _`${valid} || ${schValid}`)\n      const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n      // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n      // or if all properties and items were evaluated (it.props === true && it.items === true)\n      if (!merged) gen.if(not(valid))\n    })\n  )\n\n  cxt.result(\n    valid,\n    () => cxt.reset(),\n    () => cxt.error(true)\n  )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n  AnySchema,\n  SchemaValidateFunction,\n  AnyValidateFunction,\n  AddedKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, it} = cxt\n  const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n  const schemaRef = useKeyword(gen, keyword, macroSchema)\n  if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n  const valid = gen.name(\"valid\")\n  cxt.subschema(\n    {\n      schema: macroSchema,\n      schemaPath: nil,\n      errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n      topSchemaRef: schemaRef,\n      compositeRule: true,\n    },\n    valid\n  )\n  cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, $data, it} = cxt\n  checkAsyncKeyword(it, def)\n  const validate =\n    !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n  const validateRef = useKeyword(gen, keyword, validate)\n  const valid = gen.let(\"valid\")\n  cxt.block$data(valid, validateKeyword)\n  cxt.ok(def.valid ?? valid)\n\n  function validateKeyword(): void {\n    if (def.errors === false) {\n      assignValid()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => cxt.error())\n    } else {\n      const ruleErrs = def.async ? validateAsync() : validateSync()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => addErrs(cxt, ruleErrs))\n    }\n  }\n\n  function validateAsync(): Name {\n    const ruleErrs = gen.let(\"ruleErrs\", null)\n    gen.try(\n      () => assignValid(_`await `),\n      (e) =>\n        gen.assign(valid, false).if(\n          _`${e} instanceof ${it.ValidationError as Name}`,\n          () => gen.assign(ruleErrs, _`${e}.errors`),\n          () => gen.throw(e)\n        )\n    )\n    return ruleErrs\n  }\n\n  function validateSync(): Code {\n    const validateErrs = _`${validateRef}.errors`\n    gen.assign(validateErrs, null)\n    assignValid(nil)\n    return validateErrs\n  }\n\n  function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n    const passCxt = it.opts.passContext ? N.this : N.self\n    const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n    gen.assign(\n      valid,\n      _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n      def.modifying\n    )\n  }\n\n  function reportErrs(errors: () => void): void {\n    gen.if(not(def.valid ?? valid), errors)\n  }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n  const {gen, data, it} = cxt\n  gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n  const {gen} = cxt\n  gen.if(\n    _`Array.isArray(${errs})`,\n    () => {\n      gen\n        .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n        .assign(N.errors, _`${N.vErrors}.length`)\n      extendErrors(cxt)\n    },\n    () => cxt.error()\n  )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n  if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n  if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n  return gen.scopeValue(\n    \"keyword\",\n    typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n  )\n}\n\nexport function validSchemaType(\n  schema: unknown,\n  schemaType: JSONType[],\n  allowUndefined = false\n): boolean {\n  // TODO add tests\n  return (\n    !schemaType.length ||\n    schemaType.some((st) =>\n      st === \"array\"\n        ? Array.isArray(schema)\n        : st === \"object\"\n        ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n        : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n    )\n  )\n}\n\nexport function validateKeywordUsage(\n  {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n  def: AddedKeywordDefinition,\n  keyword: string\n): void {\n  /* istanbul ignore if */\n  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n    throw new Error(\"ajv implementation error\")\n  }\n\n  const deps = def.dependencies\n  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n  }\n\n  if (def.validateSchema) {\n    const valid = def.validateSchema(schema[keyword])\n    if (!valid) {\n      const msg =\n        `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n        self.errorsText(def.validateSchema.errors)\n      if (opts.validateSchema === \"log\") self.logger.error(msg)\n      else throw new Error(msg)\n    }\n  }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n  // TODO use Optional? align with SchemCxt property types\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef?: Code\n  errorPath?: Code\n  dataLevel?: number\n  dataTypes?: JSONType[]\n  data?: Name\n  parentData?: Name\n  parentDataProperty?: Code | number\n  dataNames?: Name[]\n  dataPathArr?: (Code | number)[]\n  propertyName?: Name\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  compositeRule?: true\n  createErrors?: boolean\n  allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n  keyword: string\n  schemaProp: string | number\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef: Code\n  data: Name | Code\n  dataProp: Code | string | number\n  dataTypes: JSONType[]\n  definedProperties: Set\n  propertyName: Name\n  dataPropType: Type\n  jtdDiscriminator: string\n  jtdMetadata: boolean\n  compositeRule: true\n  createErrors: boolean\n  allErrors: boolean\n}>\n\nexport function getSubschema(\n  it: SchemaObjCxt,\n  {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n  if (keyword !== undefined && schema !== undefined) {\n    throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n  }\n\n  if (keyword !== undefined) {\n    const sch = it.schema[keyword]\n    return schemaProp === undefined\n      ? {\n          schema: sch,\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n        }\n      : {\n          schema: sch[schemaProp],\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n        }\n  }\n\n  if (schema !== undefined) {\n    if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n      throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n    }\n    return {\n      schema,\n      schemaPath,\n      topSchemaRef,\n      errSchemaPath,\n    }\n  }\n\n  throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n  subschema: SubschemaContext,\n  it: SchemaObjCxt,\n  {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n  if (data !== undefined && dataProp !== undefined) {\n    throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n  }\n\n  const {gen} = it\n\n  if (dataProp !== undefined) {\n    const {errorPath, dataPathArr, opts} = it\n    const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n    dataContextProps(nextData)\n    subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n    subschema.parentDataProperty = _`${dataProp}`\n    subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n  }\n\n  if (data !== undefined) {\n    const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n    dataContextProps(nextData)\n    if (propertyName !== undefined) subschema.propertyName = propertyName\n    // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n  }\n\n  if (dataTypes) subschema.dataTypes = dataTypes\n\n  function dataContextProps(_nextData: Name): void {\n    subschema.data = _nextData\n    subschema.dataLevel = it.dataLevel + 1\n    subschema.dataTypes = []\n    it.definedProperties = new Set()\n    subschema.parentData = it.data\n    subschema.dataNames = [...it.dataNames, _nextData]\n  }\n}\n\nexport function extendSubschemaMode(\n  subschema: SubschemaContext,\n  {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n  if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n  if (createErrors !== undefined) subschema.createErrors = createErrors\n  if (allErrors !== undefined) subschema.allErrors = allErrors\n  subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n  subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true,\n  if: true,\n  then: true,\n  else: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  $defs: true,\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i (count += countKeys(sch)))\n    }\n    if (count === Infinity) return Infinity\n  }\n  return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n  if (normalize !== false) id = normalizeId(id)\n  const p = resolver.parse(id)\n  return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n  const serialized = resolver.serialize(p)\n  return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n  return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n  id = normalizeId(id)\n  return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n  if (typeof schema == \"boolean\") return {}\n  const {schemaId, uriResolver} = this.opts\n  const schId = normalizeId(schema[schemaId] || baseId)\n  const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n  const pathPrefix = getFullPath(uriResolver, schId, false)\n  const localRefs: LocalRefs = {}\n  const schemaRefs: Set = new Set()\n\n  traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n    if (parentJsonPtr === undefined) return\n    const fullPath = pathPrefix + jsonPtr\n    let innerBaseId = baseIds[parentJsonPtr]\n    if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n    addAnchor.call(this, sch.$anchor)\n    addAnchor.call(this, sch.$dynamicAnchor)\n    baseIds[jsonPtr] = innerBaseId\n\n    function addRef(this: Ajv, ref: string): string {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      const _resolve = this.opts.uriResolver.resolve\n      ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n      if (schemaRefs.has(ref)) throw ambiguos(ref)\n      schemaRefs.add(ref)\n      let schOrRef = this.refs[ref]\n      if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n      if (typeof schOrRef == \"object\") {\n        checkAmbiguosRef(sch, schOrRef.schema, ref)\n      } else if (ref !== normalizeId(fullPath)) {\n        if (ref[0] === \"#\") {\n          checkAmbiguosRef(sch, localRefs[ref], ref)\n          localRefs[ref] = sch\n        } else {\n          this.refs[ref] = fullPath\n        }\n      }\n      return ref\n    }\n\n    function addAnchor(this: Ajv, anchor: unknown): void {\n      if (typeof anchor == \"string\") {\n        if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n        addRef.call(this, `#${anchor}`)\n      }\n    }\n  })\n\n  return localRefs\n\n  function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n    if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n  }\n\n  function ambiguos(ref: string): Error {\n    return new Error(`reference \"${ref}\" resolves to more than one schema`)\n  }\n}\n", "import type {\n  AddedKeywordDefinition,\n  AnySchema,\n  AnySchemaObject,\n  KeywordErrorCxt,\n  KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n  schemaRefOrVal,\n  schemaHasRulesButRef,\n  checkUnknownRules,\n  checkStrictMode,\n  unescapeJsonPointer,\n  mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n  ErrorPaths,\n  reportError,\n  reportExtraError,\n  resetErrorsCount,\n  keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      topSchemaObjCode(it)\n      return\n    }\n  }\n  validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n  {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n  body: Block\n): void {\n  if (opts.code.es5) {\n    gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n      gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n      destructureValCxtES5(gen, opts)\n      gen.code(body)\n    })\n  } else {\n    gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n      gen.code(funcSourceUrl(schema, opts)).code(body)\n    )\n  }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n  return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n    N.data\n  }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n  gen.if(\n    N.valCxt,\n    () => {\n      gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n      gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n      gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n      gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n    },\n    () => {\n      gen.var(N.instancePath, _`\"\"`)\n      gen.var(N.parentData, _`undefined`)\n      gen.var(N.parentDataProperty, _`undefined`)\n      gen.var(N.rootData, N.data)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n    }\n  )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n  const {schema, opts, gen} = it\n  validateFunction(it, () => {\n    if (opts.$comment && schema.$comment) commentKeyword(it)\n    checkNoDefault(it)\n    gen.let(N.vErrors, null)\n    gen.let(N.errors, 0)\n    if (opts.unevaluated) resetEvaluated(it)\n    typeAndKeywords(it)\n    returnResults(it)\n  })\n  return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n  // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n  const {gen, validateName} = it\n  it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n  gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n  gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n  const schId = typeof schema == \"object\" && schema[opts.schemaId]\n  return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      subSchemaObjCode(it, valid)\n      return\n    }\n  }\n  boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (self.RULES.all[key]) return true\n  return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n  return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n  const {schema, gen, opts} = it\n  if (opts.$comment && schema.$comment) commentKeyword(it)\n  updateContext(it)\n  checkAsyncSchema(it)\n  const errsCount = gen.const(\"_errs\", N.errors)\n  typeAndKeywords(it, errsCount)\n  // TODO var\n  gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n  checkUnknownRules(it)\n  checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n  if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n  const types = getSchemaTypes(it.schema)\n  const checkedTypes = coerceAndCheckDataType(it, types)\n  schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n  const {schema, errSchemaPath, opts, self} = it\n  if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n    self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n  }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n  const {schema, opts} = it\n  if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n    checkStrictMode(it, \"default is ignored in the schema root\")\n  }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n  const schId = it.schema[it.opts.schemaId]\n  if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n  if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n  const msg = schema.$comment\n  if (opts.$comment === true) {\n    gen.code(_`${N.self}.logger.log(${msg})`)\n  } else if (typeof opts.$comment == \"function\") {\n    const schemaPath = str`${errSchemaPath}/$comment`\n    const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n    gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n  }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n  const {gen, schemaEnv, validateName, ValidationError, opts} = it\n  if (schemaEnv.$async) {\n    // TODO assign unevaluated\n    gen.if(\n      _`${N.errors} === 0`,\n      () => gen.return(N.data),\n      () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n    )\n  } else {\n    gen.assign(_`${validateName}.errors`, N.vErrors)\n    if (opts.unevaluated) assignEvaluated(it)\n    gen.return(_`${N.errors} === 0`)\n  }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n  if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n  if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n  it: SchemaObjCxt,\n  types: JSONType[],\n  typeErrors: boolean,\n  errsCount?: Name\n): void {\n  const {gen, schema, data, allErrors, opts, self} = it\n  const {RULES} = self\n  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n    gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n    return\n  }\n  if (!opts.jtd) checkStrictTypes(it, types)\n  gen.block(() => {\n    for (const group of RULES.rules) groupKeywords(group)\n    groupKeywords(RULES.post)\n  })\n\n  function groupKeywords(group: RuleGroup): void {\n    if (!shouldUseGroup(schema, group)) return\n    if (group.type) {\n      gen.if(checkDataType(group.type, data, opts.strictNumbers))\n      iterateKeywords(it, group)\n      if (types.length === 1 && types[0] === group.type && typeErrors) {\n        gen.else()\n        reportTypeError(it)\n      }\n      gen.endIf()\n    } else {\n      iterateKeywords(it, group)\n    }\n    // TODO make it \"ok\" call?\n    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n  }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n  const {\n    gen,\n    schema,\n    opts: {useDefaults},\n  } = it\n  if (useDefaults) assignDefaults(it, group.type)\n  gen.block(() => {\n    for (const rule of group.rules) {\n      if (shouldUseRule(schema, rule)) {\n        keywordCode(it, rule.keyword, rule.definition, group.type)\n      }\n    }\n  })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (it.schemaEnv.meta || !it.opts.strictTypes) return\n  checkContextTypes(it, types)\n  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n  checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (!types.length) return\n  if (!it.dataTypes.length) {\n    it.dataTypes = types\n    return\n  }\n  types.forEach((t) => {\n    if (!includesType(it.dataTypes, t)) {\n      strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n    }\n  })\n  narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n    strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n  }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  const rules = it.self.RULES.all\n  for (const keyword in rules) {\n    const rule = rules[keyword]\n    if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n      const {type} = rule.definition\n      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n        strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n      }\n    }\n  }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n  return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n  return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n  const ts: JSONType[] = []\n  for (const t of it.dataTypes) {\n    if (includesType(withTypes, t)) ts.push(t)\n    else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n  }\n  it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n  msg += ` at \"${schemaPath}\" (strictTypes)`\n  checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean\n  readonly keyword: string\n  readonly data: Name // Name referencing the current level of the data instance\n  readonly $data?: string | false\n  schema: any // keyword value in the schema\n  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n  readonly parentSchema: AnySchemaObject\n  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n  // requires option trackErrors in keyword definition\n  params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n  readonly def: AddedKeywordDefinition\n\n  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n    validateKeywordUsage(it, def, keyword)\n    this.gen = it.gen\n    this.allErrors = it.allErrors\n    this.keyword = keyword\n    this.data = it.data\n    this.schema = it.schema[keyword]\n    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n    this.schemaType = def.schemaType\n    this.parentSchema = it.schema\n    this.params = {}\n    this.it = it\n    this.def = def\n\n    if (this.$data) {\n      this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n    } else {\n      this.schemaCode = this.schemaValue\n      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n      }\n    }\n\n    if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n      this.errsCount = it.gen.const(\"_errs\", N.errors)\n    }\n  }\n\n  result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.failResult(not(condition), successAction, failAction)\n  }\n\n  failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.gen.if(condition)\n    if (failAction) failAction()\n    else this.error()\n    if (successAction) {\n      this.gen.else()\n      successAction()\n      if (this.allErrors) this.gen.endIf()\n    } else {\n      if (this.allErrors) this.gen.endIf()\n      else this.gen.else()\n    }\n  }\n\n  pass(condition: Code, failAction?: () => void): void {\n    this.failResult(not(condition), undefined, failAction)\n  }\n\n  fail(condition?: Code): void {\n    if (condition === undefined) {\n      this.error()\n      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n      return\n    }\n    this.gen.if(condition)\n    this.error()\n    if (this.allErrors) this.gen.endIf()\n    else this.gen.else()\n  }\n\n  fail$data(condition: Code): void {\n    if (!this.$data) return this.fail(condition)\n    const {schemaCode} = this\n    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n  }\n\n  error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n    if (errorParams) {\n      this.setParams(errorParams)\n      this._error(append, errorPaths)\n      this.setParams({})\n      return\n    }\n    this._error(append, errorPaths)\n  }\n\n  private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n    ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n  }\n\n  $dataError(): void {\n    reportError(this, this.def.$dataError || keyword$DataError)\n  }\n\n  reset(): void {\n    if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n    resetErrorsCount(this.gen, this.errsCount)\n  }\n\n  ok(cond: Code | boolean): void {\n    if (!this.allErrors) this.gen.if(cond)\n  }\n\n  setParams(obj: KeywordCxtParams, assign?: true): void {\n    if (assign) Object.assign(this.params, obj)\n    else this.params = obj\n  }\n\n  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n    this.gen.block(() => {\n      this.check$data(valid, $dataValid)\n      codeBlock()\n    })\n  }\n\n  check$data(valid: Name = nil, $dataValid: Code = nil): void {\n    if (!this.$data) return\n    const {gen, schemaCode, schemaType, def} = this\n    gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n    if (valid !== nil) gen.assign(valid, true)\n    if (schemaType.length || def.validateSchema) {\n      gen.elseIf(this.invalid$data())\n      this.$dataError()\n      if (valid !== nil) gen.assign(valid, false)\n    }\n    gen.else()\n  }\n\n  invalid$data(): Code {\n    const {gen, schemaCode, schemaType, def, it} = this\n    return or(wrong$DataType(), invalid$DataSchema())\n\n    function wrong$DataType(): Code {\n      if (schemaType.length) {\n        /* istanbul ignore if */\n        if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n        const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n        return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n      }\n      return nil\n    }\n\n    function invalid$DataSchema(): Code {\n      if (def.validateSchema) {\n        const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n        return _`!${validateSchemaRef}(${schemaCode})`\n      }\n      return nil\n    }\n  }\n\n  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n    const subschema = getSubschema(this.it, appl)\n    extendSubschemaData(subschema, this.it, appl)\n    extendSubschemaMode(subschema, appl)\n    const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n    subschemaCode(nextContext, valid)\n    return nextContext\n  }\n\n  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n    const {it, gen} = this\n    if (!it.opts.unevaluated) return\n    if (it.props !== true && schemaCxt.props !== undefined) {\n      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n    }\n    if (it.items !== true && schemaCxt.items !== undefined) {\n      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n    }\n  }\n\n  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n    const {it, gen} = this\n    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n      return true\n    }\n  }\n}\n\nfunction keywordCode(\n  it: SchemaObjCxt,\n  keyword: string,\n  def: AddedKeywordDefinition,\n  ruleType?: JSONType\n): void {\n  const cxt = new KeywordCxt(it, def, keyword)\n  if (\"code\" in def) {\n    def.code(cxt, ruleType)\n  } else if (cxt.$data && def.validate) {\n    funcKeywordCode(cxt, def)\n  } else if (\"macro\" in def) {\n    macroKeywordCode(cxt, def)\n  } else if (def.compile || def.validate) {\n    funcKeywordCode(cxt, def)\n  }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n  $data: string,\n  {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n  let jsonPointer\n  let data: Code\n  if ($data === \"\") return N.rootData\n  if ($data[0] === \"/\") {\n    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    jsonPointer = $data\n    data = N.rootData\n  } else {\n    const matches = RELATIVE_JSON_POINTER.exec($data)\n    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    const up: number = +matches[1]\n    jsonPointer = matches[2]\n    if (jsonPointer === \"#\") {\n      if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n      return dataPathArr[dataLevel - up]\n    }\n    if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n    data = dataNames[dataLevel - up]\n    if (!jsonPointer) return data\n  }\n\n  let expr = data\n  const segments = jsonPointer.split(\"/\")\n  for (const segment of segments) {\n    if (segment) {\n      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n      expr = _`${expr} && ${data}`\n    }\n  }\n  return expr\n\n  function errorMsg(pointerType: string, up: number): string {\n    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n  }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n  readonly errors: Partial[]\n  readonly ajv: true\n  readonly validation: true\n\n  constructor(errors: Partial[]) {\n    super(\"validation failed\")\n    this.errors = errors\n    this.ajv = this.validation = true\n  }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n  readonly missingRef: string\n  readonly missingSchema: string\n\n  constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n    super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n    this.missingRef = resolveUrl(resolver, baseId, ref)\n    this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n  }\n}\n", "import type {\n  AnySchema,\n  AnySchemaObject,\n  AnyValidateFunction,\n  AsyncValidateFunction,\n  EvaluatedProperties,\n  EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n  [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n  readonly data: Name // Name with reference to the current part of data instance\n  readonly parentData: Name // should be used in keywords modifying data\n  readonly parentDataProperty: Code | number // should be used in keywords modifying data\n  readonly dataNames: Name[]\n  readonly dataPathArr: (Code | number)[]\n  readonly dataLevel: number // the level of the currently validated data,\n  // it can be used to access both the property names and the data on all levels from the top.\n  dataTypes: JSONType[] // data types applied to the current part of data instance\n  definedProperties: Set // set of properties to keep track of for required checks\n  readonly topSchemaRef: Code\n  readonly validateName: Name\n  evaluated?: Name\n  readonly ValidationError?: Name\n  readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n  readonly schemaEnv: SchemaEnv\n  readonly rootId: string\n  baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n  readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n  readonly errSchemaPath: string // this is actual string, should not be changed to Code\n  readonly errorPath: Code\n  readonly propertyName?: Name\n  readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n  // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n  // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n  // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n  props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n  items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  readonly createErrors?: boolean\n  readonly opts: InstanceOptions // Ajv instance option.\n  readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n  readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root?: SchemaEnv\n  readonly baseId?: string\n  readonly schemaPath?: string\n  readonly localRefs?: LocalRefs\n  readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root: SchemaEnv\n  baseId: string // TODO possibly, it should be readonly\n  schemaPath?: string\n  localRefs?: LocalRefs\n  readonly meta?: boolean\n  readonly $async?: boolean // true if the current schema is asynchronous.\n  readonly refs: SchemaRefs = {}\n  readonly dynamicAnchors: {[Ref in string]?: true} = {}\n  validate?: AnyValidateFunction\n  validateName?: ValueScopeName\n  serialize?: (data: unknown) => string\n  serializeName?: ValueScopeName\n  parse?: (data: string) => unknown\n  parseName?: ValueScopeName\n\n  constructor(env: SchemaEnvArgs) {\n    let schema: AnySchemaObject | undefined\n    if (typeof env.schema == \"object\") schema = env.schema\n    this.schema = env.schema\n    this.schemaId = env.schemaId\n    this.root = env.root || this\n    this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n    this.schemaPath = env.schemaPath\n    this.localRefs = env.localRefs\n    this.meta = env.meta\n    this.$async = schema?.$async\n    this.refs = {}\n  }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n  // TODO refactor - remove compilations\n  const _sch = getCompilingSchema.call(this, sch)\n  if (_sch) return _sch\n  const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n  const {es5, lines} = this.opts.code\n  const {ownProperties} = this.opts\n  const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n  let _ValidationError\n  if (sch.$async) {\n    _ValidationError = gen.scopeValue(\"Error\", {\n      ref: ValidationError,\n      code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n    })\n  }\n\n  const validateName = gen.scopeName(\"validate\")\n  sch.validateName = validateName\n\n  const schemaCxt: SchemaCxt = {\n    gen,\n    allErrors: this.opts.allErrors,\n    data: N.data,\n    parentData: N.parentData,\n    parentDataProperty: N.parentDataProperty,\n    dataNames: [N.data],\n    dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n    dataLevel: 0,\n    dataTypes: [],\n    definedProperties: new Set(),\n    topSchemaRef: gen.scopeValue(\n      \"schema\",\n      this.opts.code.source === true\n        ? {ref: sch.schema, code: stringify(sch.schema)}\n        : {ref: sch.schema}\n    ),\n    validateName,\n    ValidationError: _ValidationError,\n    schema: sch.schema,\n    schemaEnv: sch,\n    rootId,\n    baseId: sch.baseId || rootId,\n    schemaPath: nil,\n    errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n    errorPath: _`\"\"`,\n    opts: this.opts,\n    self: this,\n  }\n\n  let sourceCode: string | undefined\n  try {\n    this._compilations.add(sch)\n    validateFunctionCode(schemaCxt)\n    gen.optimize(this.opts.code.optimize)\n    // gen.optimize(1)\n    const validateCode = gen.toString()\n    sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n    // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n    if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n    const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n    const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n    this.scope.value(validateName, {ref: validate})\n\n    validate.errors = null\n    validate.schema = sch.schema\n    validate.schemaEnv = sch\n    if (sch.$async) (validate as AsyncValidateFunction).$async = true\n    if (this.opts.code.source === true) {\n      validate.source = {validateName, validateCode, scopeValues: gen._values}\n    }\n    if (this.opts.unevaluated) {\n      const {props, items} = schemaCxt\n      validate.evaluated = {\n        props: props instanceof Name ? undefined : props,\n        items: items instanceof Name ? undefined : items,\n        dynamicProps: props instanceof Name,\n        dynamicItems: items instanceof Name,\n      }\n      if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n    }\n    sch.validate = validate\n    return sch\n  } catch (e) {\n    delete sch.validate\n    delete sch.validateName\n    if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n    throw e\n  } finally {\n    this._compilations.delete(sch)\n  }\n}\n\nexport function resolveRef(\n  this: Ajv,\n  root: SchemaEnv,\n  baseId: string,\n  ref: string\n): AnySchema | SchemaEnv | undefined {\n  ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n  const schOrFunc = root.refs[ref]\n  if (schOrFunc) return schOrFunc\n\n  let _sch = resolve.call(this, root, ref)\n  if (_sch === undefined) {\n    const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n    const {schemaId} = this.opts\n    if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n  }\n\n  if (_sch === undefined) return\n  return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n  if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n  return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n  for (const sch of this._compilations) {\n    if (sameSchemaEnv(sch, schEnv)) return sch\n  }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n  this: Ajv,\n  root: SchemaEnv, // information about the root schema for the current schema\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  let sch\n  while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n  return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n  this: Ajv,\n  root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  const p = this.opts.uriResolver.parse(ref)\n  const refPath = _getFullPath(this.opts.uriResolver, p)\n  let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n  // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n  if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n    return getJsonPointer.call(this, p, root)\n  }\n\n  const id = normalizeId(refPath)\n  const schOrRef = this.refs[id] || this.schemas[id]\n  if (typeof schOrRef == \"string\") {\n    const sch = resolveSchema.call(this, root, schOrRef)\n    if (typeof sch?.schema !== \"object\") return\n    return getJsonPointer.call(this, p, sch)\n  }\n\n  if (typeof schOrRef?.schema !== \"object\") return\n  if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n  if (id === normalizeId(ref)) {\n    const {schema} = schOrRef\n    const {schemaId} = this.opts\n    const schId = schema[schemaId]\n    if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    return new SchemaEnv({schema, schemaId, root, baseId})\n  }\n  return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n  \"properties\",\n  \"patternProperties\",\n  \"enum\",\n  \"dependencies\",\n  \"definitions\",\n])\n\nfunction getJsonPointer(\n  this: Ajv,\n  parsedRef: URIComponent,\n  {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n  if (parsedRef.fragment?.[0] !== \"/\") return\n  for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n    if (typeof schema === \"boolean\") return\n    const partSchema = schema[unescapeFragment(part)]\n    if (partSchema === undefined) return\n    schema = partSchema\n    // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n    const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n    if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n      baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    }\n  }\n  let env: SchemaEnv | undefined\n  if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n    const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n    env = resolveSchema.call(this, root, $ref)\n  }\n  // even though resolution failed we need to return SchemaEnv to throw exception\n  // so that compileAsync loads missing schema.\n  const {schemaId} = this.opts\n  env = env || new SchemaEnv({schema, schemaId, root, baseId})\n  if (env.schema !== env.root.schema) return env\n  return undefined\n}\n", "{\n  \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n  \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n  \"type\": \"object\",\n  \"required\": [\"$data\"],\n  \"properties\": {\n    \"$data\": {\n      \"type\": \"string\",\n      \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n    }\n  },\n  \"additionalProperties\": false\n}\n", "'use strict'\n\nconst HEX = {\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3,\n  4: 4,\n  5: 5,\n  6: 6,\n  7: 7,\n  8: 8,\n  9: 9,\n  a: 10,\n  A: 10,\n  b: 11,\n  B: 11,\n  c: 12,\n  C: 12,\n  d: 13,\n  D: 13,\n  e: 14,\n  E: 14,\n  f: 15,\n  F: 15\n}\n\nmodule.exports = {\n  HEX\n}\n", "'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n  if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n  const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n  const [address] = matches\n  if (address) {\n    return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n  } else {\n    return { host, isIPV4: false }\n  }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n  let acc = ''\n  let strip = true\n  for (const c of input) {\n    if (HEX[c] === undefined) return undefined\n    if (c !== '0' && strip === true) strip = false\n    if (!strip) acc += c\n  }\n  if (keepZero && acc.length === 0) acc = '0'\n  return acc\n}\n\nfunction getIPV6 (input) {\n  let tokenCount = 0\n  const output = { error: false, address: '', zone: '' }\n  const address = []\n  const buffer = []\n  let isZone = false\n  let endipv6Encountered = false\n  let endIpv6 = false\n\n  function consume () {\n    if (buffer.length) {\n      if (isZone === false) {\n        const hex = stringArrayToHexStripped(buffer)\n        if (hex !== undefined) {\n          address.push(hex)\n        } else {\n          output.error = true\n          return false\n        }\n      }\n      buffer.length = 0\n    }\n    return true\n  }\n\n  for (let i = 0; i < input.length; i++) {\n    const cursor = input[i]\n    if (cursor === '[' || cursor === ']') { continue }\n    if (cursor === ':') {\n      if (endipv6Encountered === true) {\n        endIpv6 = true\n      }\n      if (!consume()) { break }\n      tokenCount++\n      address.push(':')\n      if (tokenCount > 7) {\n        // not valid\n        output.error = true\n        break\n      }\n      if (i - 1 >= 0 && input[i - 1] === ':') {\n        endipv6Encountered = true\n      }\n      continue\n    } else if (cursor === '%') {\n      if (!consume()) { break }\n      // switch to zone detection\n      isZone = true\n    } else {\n      buffer.push(cursor)\n      continue\n    }\n  }\n  if (buffer.length) {\n    if (isZone) {\n      output.zone = buffer.join('')\n    } else if (endIpv6) {\n      address.push(buffer.join(''))\n    } else {\n      address.push(stringArrayToHexStripped(buffer))\n    }\n  }\n  output.address = address.join('')\n  return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n  if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n  const ipv6 = getIPV6(host)\n\n  if (!ipv6.error) {\n    let newHost = ipv6.address\n    let escapedHost = ipv6.address\n    if (ipv6.zone) {\n      newHost += '%' + ipv6.zone\n      escapedHost += '%25' + ipv6.zone\n    }\n    return { host: newHost, escapedHost, isIPV6: true }\n  } else {\n    return { host, isIPV6: false }\n  }\n}\n\nfunction stripLeadingZeros (str, token) {\n  let out = ''\n  let skip = true\n  const l = str.length\n  for (let i = 0; i < l; i++) {\n    const c = str[i]\n    if (c === '0' && skip) {\n      if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n        out += c\n        skip = false\n      }\n    } else {\n      if (c === token) {\n        skip = true\n      } else {\n        skip = false\n      }\n      out += c\n    }\n  }\n  return out\n}\n\nfunction findToken (str, token) {\n  let ind = 0\n  for (let i = 0; i < str.length; i++) {\n    if (str[i] === token) ind++\n  }\n  return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n  const output = []\n\n  while (input.length) {\n    if (input.match(RDS1)) {\n      input = input.replace(RDS1, '')\n    } else if (input.match(RDS2)) {\n      input = input.replace(RDS2, '/')\n    } else if (input.match(RDS3)) {\n      input = input.replace(RDS3, '/')\n      output.pop()\n    } else if (input === '.' || input === '..') {\n      input = ''\n    } else {\n      const im = input.match(RDS5)\n      if (im) {\n        const s = im[0]\n        input = input.slice(s.length)\n        output.push(s)\n      } else {\n        throw new Error('Unexpected dot segment condition')\n      }\n    }\n  }\n  return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n  const func = esc !== true ? escape : unescape\n  if (components.scheme !== undefined) {\n    components.scheme = func(components.scheme)\n  }\n  if (components.userinfo !== undefined) {\n    components.userinfo = func(components.userinfo)\n  }\n  if (components.host !== undefined) {\n    components.host = func(components.host)\n  }\n  if (components.path !== undefined) {\n    components.path = func(components.path)\n  }\n  if (components.query !== undefined) {\n    components.query = func(components.query)\n  }\n  if (components.fragment !== undefined) {\n    components.fragment = func(components.fragment)\n  }\n  return components\n}\n\nfunction recomposeAuthority (components, options) {\n  const uriTokens = []\n\n  if (components.userinfo !== undefined) {\n    uriTokens.push(components.userinfo)\n    uriTokens.push('@')\n  }\n\n  if (components.host !== undefined) {\n    let host = unescape(components.host)\n    const ipV4res = normalizeIPv4(host)\n\n    if (ipV4res.isIPV4) {\n      host = ipV4res.host\n    } else {\n      const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n      if (ipV6res.isIPV6 === true) {\n        host = `[${ipV6res.escapedHost}]`\n      } else {\n        host = components.host\n      }\n    }\n    uriTokens.push(host)\n  }\n\n  if (typeof components.port === 'number' || typeof components.port === 'string') {\n    uriTokens.push(':')\n    uriTokens.push(String(components.port))\n  }\n\n  return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n  recomposeAuthority,\n  normalizeComponentEncoding,\n  removeDotSegments,\n  normalizeIPv4,\n  normalizeIPv6,\n  stringArrayToHexStripped\n}\n", "'use strict'\n\nconst UUID_REG = /^[\\da-f]{8}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{12}$/iu\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nfunction isSecure (wsComponents) {\n  return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === 'wss'\n}\n\nfunction httpParse (components) {\n  if (!components.host) {\n    components.error = components.error || 'HTTP URIs must have a host.'\n  }\n\n  return components\n}\n\nfunction httpSerialize (components) {\n  const secure = String(components.scheme).toLowerCase() === 'https'\n\n  // normalize the default port\n  if (components.port === (secure ? 443 : 80) || components.port === '') {\n    components.port = undefined\n  }\n\n  // normalize the empty path\n  if (!components.path) {\n    components.path = '/'\n  }\n\n  // NOTE: We do not parse query strings for HTTP URIs\n  // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n  // and not the HTTP spec.\n\n  return components\n}\n\nfunction wsParse (wsComponents) {\n// indicate if the secure flag is set\n  wsComponents.secure = isSecure(wsComponents)\n\n  // construct resouce name\n  wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '')\n  wsComponents.path = undefined\n  wsComponents.query = undefined\n\n  return wsComponents\n}\n\nfunction wsSerialize (wsComponents) {\n// normalize the default port\n  if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === '') {\n    wsComponents.port = undefined\n  }\n\n  // ensure scheme matches secure flag\n  if (typeof wsComponents.secure === 'boolean') {\n    wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws')\n    wsComponents.secure = undefined\n  }\n\n  // reconstruct path from resource name\n  if (wsComponents.resourceName) {\n    const [path, query] = wsComponents.resourceName.split('?')\n    wsComponents.path = (path && path !== '/' ? path : undefined)\n    wsComponents.query = query\n    wsComponents.resourceName = undefined\n  }\n\n  // forbid fragment component\n  wsComponents.fragment = undefined\n\n  return wsComponents\n}\n\nfunction urnParse (urnComponents, options) {\n  if (!urnComponents.path) {\n    urnComponents.error = 'URN can not be parsed'\n    return urnComponents\n  }\n  const matches = urnComponents.path.match(URN_REG)\n  if (matches) {\n    const scheme = options.scheme || urnComponents.scheme || 'urn'\n    urnComponents.nid = matches[1].toLowerCase()\n    urnComponents.nss = matches[2]\n    const urnScheme = `${scheme}:${options.nid || urnComponents.nid}`\n    const schemeHandler = SCHEMES[urnScheme]\n    urnComponents.path = undefined\n\n    if (schemeHandler) {\n      urnComponents = schemeHandler.parse(urnComponents, options)\n    }\n  } else {\n    urnComponents.error = urnComponents.error || 'URN can not be parsed.'\n  }\n\n  return urnComponents\n}\n\nfunction urnSerialize (urnComponents, options) {\n  const scheme = options.scheme || urnComponents.scheme || 'urn'\n  const nid = urnComponents.nid.toLowerCase()\n  const urnScheme = `${scheme}:${options.nid || nid}`\n  const schemeHandler = SCHEMES[urnScheme]\n\n  if (schemeHandler) {\n    urnComponents = schemeHandler.serialize(urnComponents, options)\n  }\n\n  const uriComponents = urnComponents\n  const nss = urnComponents.nss\n  uriComponents.path = `${nid || options.nid}:${nss}`\n\n  options.skipEscape = true\n  return uriComponents\n}\n\nfunction urnuuidParse (urnComponents, options) {\n  const uuidComponents = urnComponents\n  uuidComponents.uuid = uuidComponents.nss\n  uuidComponents.nss = undefined\n\n  if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) {\n    uuidComponents.error = uuidComponents.error || 'UUID is not valid.'\n  }\n\n  return uuidComponents\n}\n\nfunction urnuuidSerialize (uuidComponents) {\n  const urnComponents = uuidComponents\n  // normalize UUID\n  urnComponents.nss = (uuidComponents.uuid || '').toLowerCase()\n  return urnComponents\n}\n\nconst http = {\n  scheme: 'http',\n  domainHost: true,\n  parse: httpParse,\n  serialize: httpSerialize\n}\n\nconst https = {\n  scheme: 'https',\n  domainHost: http.domainHost,\n  parse: httpParse,\n  serialize: httpSerialize\n}\n\nconst ws = {\n  scheme: 'ws',\n  domainHost: true,\n  parse: wsParse,\n  serialize: wsSerialize\n}\n\nconst wss = {\n  scheme: 'wss',\n  domainHost: ws.domainHost,\n  parse: ws.parse,\n  serialize: ws.serialize\n}\n\nconst urn = {\n  scheme: 'urn',\n  parse: urnParse,\n  serialize: urnSerialize,\n  skipNormalize: true\n}\n\nconst urnuuid = {\n  scheme: 'urn:uuid',\n  parse: urnuuidParse,\n  serialize: urnuuidSerialize,\n  skipNormalize: true\n}\n\nconst SCHEMES = {\n  http,\n  https,\n  ws,\n  wss,\n  urn,\n  'urn:uuid': urnuuid\n}\n\nmodule.exports = SCHEMES\n", "'use strict'\n\nconst { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require('./lib/utils')\nconst SCHEMES = require('./lib/schemes')\n\nfunction normalize (uri, options) {\n  if (typeof uri === 'string') {\n    uri = serialize(parse(uri, options), options)\n  } else if (typeof uri === 'object') {\n    uri = parse(serialize(uri, options), options)\n  }\n  return uri\n}\n\nfunction resolve (baseURI, relativeURI, options) {\n  const schemelessOptions = Object.assign({ scheme: 'null' }, options)\n  const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n  return serialize(resolved, { ...schemelessOptions, skipEscape: true })\n}\n\nfunction resolveComponents (base, relative, options, skipNormalization) {\n  const target = {}\n  if (!skipNormalization) {\n    base = parse(serialize(base, options), options) // normalize base components\n    relative = parse(serialize(relative, options), options) // normalize relative components\n  }\n  options = options || {}\n\n  if (!options.tolerant && relative.scheme) {\n    target.scheme = relative.scheme\n    // target.authority = relative.authority;\n    target.userinfo = relative.userinfo\n    target.host = relative.host\n    target.port = relative.port\n    target.path = removeDotSegments(relative.path || '')\n    target.query = relative.query\n  } else {\n    if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n      // target.authority = relative.authority;\n      target.userinfo = relative.userinfo\n      target.host = relative.host\n      target.port = relative.port\n      target.path = removeDotSegments(relative.path || '')\n      target.query = relative.query\n    } else {\n      if (!relative.path) {\n        target.path = base.path\n        if (relative.query !== undefined) {\n          target.query = relative.query\n        } else {\n          target.query = base.query\n        }\n      } else {\n        if (relative.path.charAt(0) === '/') {\n          target.path = removeDotSegments(relative.path)\n        } else {\n          if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n            target.path = '/' + relative.path\n          } else if (!base.path) {\n            target.path = relative.path\n          } else {\n            target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n          }\n          target.path = removeDotSegments(target.path)\n        }\n        target.query = relative.query\n      }\n      // target.authority = base.authority;\n      target.userinfo = base.userinfo\n      target.host = base.host\n      target.port = base.port\n    }\n    target.scheme = base.scheme\n  }\n\n  target.fragment = relative.fragment\n\n  return target\n}\n\nfunction equal (uriA, uriB, options) {\n  if (typeof uriA === 'string') {\n    uriA = unescape(uriA)\n    uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriA === 'object') {\n    uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n  }\n\n  if (typeof uriB === 'string') {\n    uriB = unescape(uriB)\n    uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriB === 'object') {\n    uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n  }\n\n  return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\nfunction serialize (cmpts, opts) {\n  const components = {\n    host: cmpts.host,\n    scheme: cmpts.scheme,\n    userinfo: cmpts.userinfo,\n    port: cmpts.port,\n    path: cmpts.path,\n    query: cmpts.query,\n    nid: cmpts.nid,\n    nss: cmpts.nss,\n    uuid: cmpts.uuid,\n    fragment: cmpts.fragment,\n    reference: cmpts.reference,\n    resourceName: cmpts.resourceName,\n    secure: cmpts.secure,\n    error: ''\n  }\n  const options = Object.assign({}, opts)\n  const uriTokens = []\n\n  // find scheme handler\n  const schemeHandler = SCHEMES[(options.scheme || components.scheme || '').toLowerCase()]\n\n  // perform scheme specific serialization\n  if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options)\n\n  if (components.path !== undefined) {\n    if (!options.skipEscape) {\n      components.path = escape(components.path)\n\n      if (components.scheme !== undefined) {\n        components.path = components.path.split('%3A').join(':')\n      }\n    } else {\n      components.path = unescape(components.path)\n    }\n  }\n\n  if (options.reference !== 'suffix' && components.scheme) {\n    uriTokens.push(components.scheme, ':')\n  }\n\n  const authority = recomposeAuthority(components, options)\n  if (authority !== undefined) {\n    if (options.reference !== 'suffix') {\n      uriTokens.push('//')\n    }\n\n    uriTokens.push(authority)\n\n    if (components.path && components.path.charAt(0) !== '/') {\n      uriTokens.push('/')\n    }\n  }\n  if (components.path !== undefined) {\n    let s = components.path\n\n    if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n      s = removeDotSegments(s)\n    }\n\n    if (authority === undefined) {\n      s = s.replace(/^\\/\\//u, '/%2F') // don't allow the path to start with \"//\"\n    }\n\n    uriTokens.push(s)\n  }\n\n  if (components.query !== undefined) {\n    uriTokens.push('?', components.query)\n  }\n\n  if (components.fragment !== undefined) {\n    uriTokens.push('#', components.fragment)\n  }\n  return uriTokens.join('')\n}\n\nconst hexLookUp = Array.from({ length: 127 }, (v, k) => /[^!\"$&'()*+,\\-.;=_`a-z{}~]/u.test(String.fromCharCode(k)))\n\nfunction nonSimpleDomain (value) {\n  let code = 0\n  for (let i = 0, len = value.length; i < len; ++i) {\n    code = value.charCodeAt(i)\n    if (code > 126 || hexLookUp[code]) {\n      return true\n    }\n  }\n  return false\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\nfunction parse (uri, opts) {\n  const options = Object.assign({}, opts)\n  const parsed = {\n    scheme: undefined,\n    userinfo: undefined,\n    host: '',\n    port: undefined,\n    path: '',\n    query: undefined,\n    fragment: undefined\n  }\n  const gotEncoding = uri.indexOf('%') !== -1\n  let isIP = false\n  if (options.reference === 'suffix') uri = (options.scheme ? options.scheme + ':' : '') + '//' + uri\n\n  const matches = uri.match(URI_PARSE)\n\n  if (matches) {\n    // store each component\n    parsed.scheme = matches[1]\n    parsed.userinfo = matches[3]\n    parsed.host = matches[4]\n    parsed.port = parseInt(matches[5], 10)\n    parsed.path = matches[6] || ''\n    parsed.query = matches[7]\n    parsed.fragment = matches[8]\n\n    // fix port number\n    if (isNaN(parsed.port)) {\n      parsed.port = matches[5]\n    }\n    if (parsed.host) {\n      const ipv4result = normalizeIPv4(parsed.host)\n      if (ipv4result.isIPV4 === false) {\n        const ipv6result = normalizeIPv6(ipv4result.host, { isIPV4: false })\n        parsed.host = ipv6result.host.toLowerCase()\n        isIP = ipv6result.isIPV6\n      } else {\n        parsed.host = ipv4result.host\n        isIP = true\n      }\n    }\n    if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && !parsed.path && parsed.query === undefined) {\n      parsed.reference = 'same-document'\n    } else if (parsed.scheme === undefined) {\n      parsed.reference = 'relative'\n    } else if (parsed.fragment === undefined) {\n      parsed.reference = 'absolute'\n    } else {\n      parsed.reference = 'uri'\n    }\n\n    // check for reference errors\n    if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n      parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n    }\n\n    // find scheme handler\n    const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || '').toLowerCase()]\n\n    // check if scheme can't handle IRIs\n    if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n      // if host component is a domain name\n      if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n        // convert Unicode IDN -> ASCII IDN\n        try {\n          parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n        } catch (e) {\n          parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n        }\n      }\n      // convert IRI -> URI\n    }\n\n    if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n      if (gotEncoding && parsed.scheme !== undefined) {\n        parsed.scheme = unescape(parsed.scheme)\n      }\n      if (gotEncoding && parsed.host !== undefined) {\n        parsed.host = unescape(parsed.host)\n      }\n      if (parsed.path !== undefined && parsed.path.length) {\n        parsed.path = escape(unescape(parsed.path))\n      }\n      if (parsed.fragment !== undefined && parsed.fragment.length) {\n        parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n      }\n    }\n\n    // perform scheme specific parsing\n    if (schemeHandler && schemeHandler.parse) {\n      schemeHandler.parse(parsed, options)\n    }\n  } else {\n    parsed.error = parsed.error || 'URI can not be parsed.'\n  }\n  return parsed\n}\n\nconst fastUri = {\n  SCHEMES,\n  normalize,\n  resolve,\n  resolveComponents,\n  equal,\n  serialize,\n  parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n", "import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n", "export {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  AnyValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin {\n  (ajv: Ajv, options?: Opts): Ajv\n  [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n  Schema,\n  AnySchema,\n  AnySchemaObject,\n  SchemaObject,\n  AsyncSchema,\n  Vocabulary,\n  KeywordDefinition,\n  AddedKeywordDefinition,\n  AnyValidateFunction,\n  ValidateFunction,\n  AsyncValidateFunction,\n  ErrorObject,\n  Format,\n  AddedFormat,\n  RegExpEngine,\n  UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n  \"validate\",\n  \"serialize\",\n  \"parse\",\n  \"wrapper\",\n  \"root\",\n  \"schema\",\n  \"keyword\",\n  \"pattern\",\n  \"formats\",\n  \"validate$data\",\n  \"func\",\n  \"obj\",\n  \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n  // strict mode options (NEW)\n  strict?: boolean | \"log\"\n  strictSchema?: boolean | \"log\"\n  strictNumbers?: boolean | \"log\"\n  strictTypes?: boolean | \"log\"\n  strictTuples?: boolean | \"log\"\n  strictRequired?: boolean | \"log\"\n  allowMatchingProperties?: boolean // disables a strict mode restriction\n  allowUnionTypes?: boolean\n  validateFormats?: boolean\n  // validation and reporting options:\n  $data?: boolean\n  allErrors?: boolean\n  verbose?: boolean\n  discriminator?: boolean\n  unicodeRegExp?: boolean\n  timestamp?: \"string\" | \"date\" // JTD only\n  parseDate?: boolean // JTD only\n  allowDate?: boolean // JTD only\n  $comment?:\n    | true\n    | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n  formats?: {[Name in string]?: Format}\n  keywords?: Vocabulary\n  schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n  logger?: Logger | false\n  loadSchema?: (uri: string) => Promise\n  // options to modify validated data:\n  removeAdditional?: boolean | \"all\" | \"failing\"\n  useDefaults?: boolean | \"empty\"\n  coerceTypes?: boolean | \"array\"\n  // advanced options:\n  next?: boolean // NEW\n  unevaluated?: boolean // NEW\n  dynamicRef?: boolean // NEW\n  schemaId?: \"id\" | \"$id\"\n  jtd?: boolean // NEW\n  meta?: SchemaObject | boolean\n  defaultMeta?: string | AnySchemaObject\n  validateSchema?: boolean | \"log\"\n  addUsedSchema?: boolean\n  inlineRefs?: boolean | number\n  passContext?: boolean\n  loopRequired?: number\n  loopEnum?: number // NEW\n  ownProperties?: boolean\n  multipleOfPrecision?: number\n  int32range?: boolean // JTD only\n  messages?: boolean\n  code?: CodeOptions // NEW\n  uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n  es5?: boolean\n  esm?: boolean\n  lines?: boolean\n  optimize?: boolean | number\n  formats?: Code // code to require (or construct) map of available formats - for standalone code\n  source?: boolean\n  process?: (code: string, schema?: SchemaEnv) => string\n  regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n  regExp: RegExpEngine\n  optimize: number\n}\n\ninterface DeprecatedOptions {\n  /** @deprecated */\n  ignoreKeywordsWithRef?: boolean\n  /** @deprecated */\n  jsPropertySyntax?: boolean // added instead of jsonPointers\n  /** @deprecated */\n  unicode?: boolean\n}\n\ninterface RemovedOptions {\n  format?: boolean\n  errorDataPath?: \"object\" | \"property\"\n  nullable?: boolean // \"nullable\" keyword is supported by default\n  jsonPointers?: boolean\n  extendRefs?: true | \"ignore\" | \"fail\"\n  missingRefs?: true | \"ignore\" | \"fail\"\n  processCode?: (code: string, schema?: SchemaEnv) => string\n  sourceCode?: boolean\n  strictDefaults?: boolean\n  strictKeywords?: boolean\n  uniqueItems?: boolean\n  unknownFormats?: true | string[] | \"ignore\"\n  cache?: any\n  serialize?: (schema: AnySchema) => unknown\n  ajvErrors?: boolean\n}\n\ntype OptionsInfo = {\n  [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo = {\n  errorDataPath: \"\",\n  format: \"`validateFormats: false` can be used instead.\",\n  nullable: '\"nullable\" keyword is supported by default.',\n  jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n  extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n  missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n  processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n  sourceCode: \"Use option `code: {source: true}`\",\n  strictDefaults: \"It is default now, see option `strict`.\",\n  strictKeywords: \"It is default now, see option `strict`.\",\n  uniqueItems: '\"uniqueItems\" keyword is always validated.',\n  unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n  cache: \"Map is used as cache, schema object as key.\",\n  serialize: \"Map is used as cache, schema object as key.\",\n  ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo = {\n  ignoreKeywordsWithRef: \"\",\n  jsPropertySyntax: \"\",\n  unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n  [K in\n    | \"strictSchema\"\n    | \"strictNumbers\"\n    | \"strictTypes\"\n    | \"strictTuples\"\n    | \"strictRequired\"\n    | \"inlineRefs\"\n    | \"loopRequired\"\n    | \"loopEnum\"\n    | \"meta\"\n    | \"messages\"\n    | \"schemaId\"\n    | \"addUsedSchema\"\n    | \"validateSchema\"\n    | \"validateFormats\"\n    | \"int32range\"\n    | \"unicodeRegExp\"\n    | \"uriResolver\"]: NonNullable\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n  const s = o.strict\n  const _optz = o.code?.optimize\n  const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n  const regExp = o.code?.regExp ?? defaultRegExp\n  const uriResolver = o.uriResolver ?? DefaultUriResolver\n  return {\n    strictSchema: o.strictSchema ?? s ?? true,\n    strictNumbers: o.strictNumbers ?? s ?? true,\n    strictTypes: o.strictTypes ?? s ?? \"log\",\n    strictTuples: o.strictTuples ?? s ?? \"log\",\n    strictRequired: o.strictRequired ?? s ?? false,\n    code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n    loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n    loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n    meta: o.meta ?? true,\n    messages: o.messages ?? true,\n    inlineRefs: o.inlineRefs ?? true,\n    schemaId: o.schemaId ?? \"$id\",\n    addUsedSchema: o.addUsedSchema ?? true,\n    validateSchema: o.validateSchema ?? true,\n    validateFormats: o.validateFormats ?? true,\n    unicodeRegExp: o.unicodeRegExp ?? true,\n    int32range: o.int32range ?? true,\n    uriResolver: uriResolver,\n  }\n}\n\nexport interface Logger {\n  log(...args: unknown[]): unknown\n  warn(...args: unknown[]): unknown\n  error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n  opts: InstanceOptions\n  errors?: ErrorObject[] | null // errors from the last validation\n  logger: Logger\n  // shared external scope values for compiled functions\n  readonly scope: ValueScope\n  readonly schemas: {[Key in string]?: SchemaEnv} = {}\n  readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n  readonly formats: {[Name in string]?: AddedFormat} = {}\n  readonly RULES: ValidationRules\n  readonly _compilations: Set = new Set()\n  private readonly _loading: {[Ref in string]?: Promise} = {}\n  private readonly _cache: Map = new Map()\n  private readonly _metaOpts: InstanceOptions\n\n  static ValidationError = ValidationError\n  static MissingRefError = MissingRefError\n\n  constructor(opts: Options = {}) {\n    opts = this.opts = {...opts, ...requiredOptions(opts)}\n    const {es5, lines} = this.opts.code\n\n    this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n    this.logger = getLogger(opts.logger)\n    const formatOpt = opts.validateFormats\n    opts.validateFormats = false\n\n    this.RULES = getRules()\n    checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n    checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n    this._metaOpts = getMetaSchemaOptions.call(this)\n\n    if (opts.formats) addInitialFormats.call(this)\n    this._addVocabularies()\n    this._addDefaultMetaSchema()\n    if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n    if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n    addInitialSchemas.call(this)\n    opts.validateFormats = formatOpt\n  }\n\n  _addVocabularies(): void {\n    this.addKeyword(\"$async\")\n  }\n\n  _addDefaultMetaSchema(): void {\n    const {$data, meta, schemaId} = this.opts\n    let _dataRefSchema: SchemaObject = $dataRefSchema\n    if (schemaId === \"id\") {\n      _dataRefSchema = {...$dataRefSchema}\n      _dataRefSchema.id = _dataRefSchema.$id\n      delete _dataRefSchema.$id\n    }\n    if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    const {meta, schemaId} = this.opts\n    return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n  }\n\n  // Validate data using schema\n  // AnySchema will be compiled and cached using schema itself as a key for Map\n  validate(schema: Schema | string, data: unknown): boolean\n  validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise\n  validate(schema: Schema | JSONSchemaType | string, data: unknown): data is T\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  validate(schema: JTDSchemaType, data: unknown): data is T\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  validate(\n    schema: T,\n    data: unknown\n  ): data is JTDDataType\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  validate(schema: AsyncSchema, data: unknown | T): Promise\n  validate(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise\n  validate(\n    schemaKeyRef: AnySchema | string, // key, ref or schema object\n    // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n    data: unknown | T // to be validated\n  ): boolean | Promise {\n    let v: AnyValidateFunction | undefined\n    if (typeof schemaKeyRef == \"string\") {\n      v = this.getSchema(schemaKeyRef)\n      if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n    } else {\n      v = this.compile(schemaKeyRef)\n    }\n\n    const valid = v(data)\n    if (!(\"$async\" in v)) this.errors = v.errors\n    return valid\n  }\n\n  // Create validation function for passed schema\n  // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n  compile(schema: Schema | JSONSchemaType, _meta?: boolean): ValidateFunction\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compile(schema: JTDSchemaType, _meta?: boolean): ValidateFunction\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  compile(\n    schema: T,\n    _meta?: boolean\n  ): ValidateFunction>\n  compile(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction\n  compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction\n  compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction {\n    const sch = this._addSchema(schema, _meta)\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction\n  }\n\n  // Creates validating function for passed schema with asynchronous loading of missing schemas.\n  // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n  // TODO allow passing schema URI\n  // meta - optional true to compile meta-schema\n  compileAsync(\n    schema: SchemaObject | JSONSchemaType,\n    _meta?: boolean\n  ): Promise>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync(schema: JTDSchemaType, _meta?: boolean): Promise>\n  compileAsync(schema: AsyncSchema, meta?: boolean): Promise>\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise>\n  compileAsync(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise> {\n    if (typeof this.opts.loadSchema != \"function\") {\n      throw new Error(\"options.loadSchema should be a function\")\n    }\n    const {loadSchema} = this.opts\n    return runCompileAsync.call(this, schema, meta)\n\n    async function runCompileAsync(\n      this: Ajv,\n      _schema: AnySchemaObject,\n      _meta?: boolean\n    ): Promise {\n      await loadMetaSchema.call(this, _schema.$schema)\n      const sch = this._addSchema(_schema, _meta)\n      return sch.validate || _compileAsync.call(this, sch)\n    }\n\n    async function loadMetaSchema(this: Ajv, $ref?: string): Promise {\n      if ($ref && !this.getSchema($ref)) {\n        await runCompileAsync.call(this, {$ref}, true)\n      }\n    }\n\n    async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise {\n      try {\n        return this._compileSchemaEnv(sch)\n      } catch (e) {\n        if (!(e instanceof MissingRefError)) throw e\n        checkLoaded.call(this, e)\n        await loadMissingSchema.call(this, e.missingSchema)\n        return _compileAsync.call(this, sch)\n      }\n    }\n\n    function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n      if (this.refs[ref]) {\n        throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n      }\n    }\n\n    async function loadMissingSchema(this: Ajv, ref: string): Promise {\n      const _schema = await _loadSchema.call(this, ref)\n      if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n      if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n    }\n\n    async function _loadSchema(this: Ajv, ref: string): Promise {\n      const p = this._loading[ref]\n      if (p) return p\n      try {\n        return await (this._loading[ref] = loadSchema(ref))\n      } finally {\n        delete this._loading[ref]\n      }\n    }\n  }\n\n  // Adds schema to the instance\n  addSchema(\n    schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n    key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n    _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n    _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n  ): Ajv {\n    if (Array.isArray(schema)) {\n      for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n      return this\n    }\n    let id: string | undefined\n    if (typeof schema === \"object\") {\n      const {schemaId} = this.opts\n      id = schema[schemaId]\n      if (id !== undefined && typeof id != \"string\") {\n        throw new Error(`schema ${schemaId} must be string`)\n      }\n    }\n    key = normalizeId(key || id)\n    this._checkUnique(key)\n    this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n    return this\n  }\n\n  // Add schema that will be used to validate other schemas\n  // options in META_IGNORE_OPTIONS are alway set to false\n  addMetaSchema(\n    schema: AnySchemaObject,\n    key?: string, // schema key\n    _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n  ): Ajv {\n    this.addSchema(schema, key, true, _validateSchema)\n    return this\n  }\n\n  //  Validate schema against its meta-schema\n  validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise {\n    if (typeof schema == \"boolean\") return true\n    let $schema: string | AnySchemaObject | undefined\n    $schema = schema.$schema\n    if ($schema !== undefined && typeof $schema != \"string\") {\n      throw new Error(\"$schema must be a string\")\n    }\n    $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n    if (!$schema) {\n      this.logger.warn(\"meta-schema not available\")\n      this.errors = null\n      return true\n    }\n    const valid = this.validate($schema, schema)\n    if (!valid && throwOrLogError) {\n      const message = \"schema is invalid: \" + this.errorsText()\n      if (this.opts.validateSchema === \"log\") this.logger.error(message)\n      else throw new Error(message)\n    }\n    return valid\n  }\n\n  // Get compiled schema by `key` or `ref`.\n  // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n  getSchema(keyRef: string): AnyValidateFunction | undefined {\n    let sch\n    while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n    if (sch === undefined) {\n      const {schemaId} = this.opts\n      const root = new SchemaEnv({schema: {}, schemaId})\n      sch = resolveSchema.call(this, root, keyRef)\n      if (!sch) return\n      this.refs[keyRef] = sch\n    }\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction | undefined\n  }\n\n  // Remove cached schema(s).\n  // If no parameter is passed all schemas but meta-schemas are removed.\n  // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n  // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n  removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n    if (schemaKeyRef instanceof RegExp) {\n      this._removeAllSchemas(this.schemas, schemaKeyRef)\n      this._removeAllSchemas(this.refs, schemaKeyRef)\n      return this\n    }\n    switch (typeof schemaKeyRef) {\n      case \"undefined\":\n        this._removeAllSchemas(this.schemas)\n        this._removeAllSchemas(this.refs)\n        this._cache.clear()\n        return this\n      case \"string\": {\n        const sch = getSchEnv.call(this, schemaKeyRef)\n        if (typeof sch == \"object\") this._cache.delete(sch.schema)\n        delete this.schemas[schemaKeyRef]\n        delete this.refs[schemaKeyRef]\n        return this\n      }\n      case \"object\": {\n        const cacheKey = schemaKeyRef\n        this._cache.delete(cacheKey)\n        let id = schemaKeyRef[this.opts.schemaId]\n        if (id) {\n          id = normalizeId(id)\n          delete this.schemas[id]\n          delete this.refs[id]\n        }\n        return this\n      }\n      default:\n        throw new Error(\"ajv.removeSchema: invalid parameter\")\n    }\n  }\n\n  // add \"vocabulary\" - a collection of keywords\n  addVocabulary(definitions: Vocabulary): Ajv {\n    for (const def of definitions) this.addKeyword(def)\n    return this\n  }\n\n  addKeyword(\n    kwdOrDef: string | KeywordDefinition,\n    def?: KeywordDefinition // deprecated\n  ): Ajv {\n    let keyword: string | string[]\n    if (typeof kwdOrDef == \"string\") {\n      keyword = kwdOrDef\n      if (typeof def == \"object\") {\n        this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n        def.keyword = keyword\n      }\n    } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n      def = kwdOrDef\n      keyword = def.keyword\n      if (Array.isArray(keyword) && !keyword.length) {\n        throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n      }\n    } else {\n      throw new Error(\"invalid addKeywords parameters\")\n    }\n\n    checkKeyword.call(this, keyword, def)\n    if (!def) {\n      eachItem(keyword, (kwd) => addRule.call(this, kwd))\n      return this\n    }\n    keywordMetaschema.call(this, def)\n    const definition: AddedKeywordDefinition = {\n      ...def,\n      type: getJSONTypes(def.type),\n      schemaType: getJSONTypes(def.schemaType),\n    }\n    eachItem(\n      keyword,\n      definition.type.length === 0\n        ? (k) => addRule.call(this, k, definition)\n        : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n    )\n    return this\n  }\n\n  getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n    const rule = this.RULES.all[keyword]\n    return typeof rule == \"object\" ? rule.definition : !!rule\n  }\n\n  // Remove keyword\n  removeKeyword(keyword: string): Ajv {\n    // TODO return type should be Ajv\n    const {RULES} = this\n    delete RULES.keywords[keyword]\n    delete RULES.all[keyword]\n    for (const group of RULES.rules) {\n      const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n      if (i >= 0) group.rules.splice(i, 1)\n    }\n    return this\n  }\n\n  // Add format\n  addFormat(name: string, format: Format): Ajv {\n    if (typeof format == \"string\") format = new RegExp(format)\n    this.formats[name] = format\n    return this\n  }\n\n  errorsText(\n    errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n    {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n  ): string {\n    if (!errors || errors.length === 0) return \"No errors\"\n    return errors\n      .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n      .reduce((text, msg) => text + separator + msg)\n  }\n\n  $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n    const rules = this.RULES.all\n    metaSchema = JSON.parse(JSON.stringify(metaSchema))\n    for (const jsonPointer of keywordsJsonPointers) {\n      const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n      let keywords = metaSchema\n      for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n      for (const key in rules) {\n        const rule = rules[key]\n        if (typeof rule != \"object\") continue\n        const {$data} = rule.definition\n        const schema = keywords[key] as AnySchemaObject | undefined\n        if ($data && schema) keywords[key] = schemaOrData(schema)\n      }\n    }\n\n    return metaSchema\n  }\n\n  private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n    for (const keyRef in schemas) {\n      const sch = schemas[keyRef]\n      if (!regex || regex.test(keyRef)) {\n        if (typeof sch == \"string\") {\n          delete schemas[keyRef]\n        } else if (sch && !sch.meta) {\n          this._cache.delete(sch.schema)\n          delete schemas[keyRef]\n        }\n      }\n    }\n  }\n\n  _addSchema(\n    schema: AnySchema,\n    meta?: boolean,\n    baseId?: string,\n    validateSchema = this.opts.validateSchema,\n    addSchema = this.opts.addUsedSchema\n  ): SchemaEnv {\n    let id: string | undefined\n    const {schemaId} = this.opts\n    if (typeof schema == \"object\") {\n      id = schema[schemaId]\n    } else {\n      if (this.opts.jtd) throw new Error(\"schema must be object\")\n      else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n    }\n    let sch = this._cache.get(schema)\n    if (sch !== undefined) return sch\n\n    baseId = normalizeId(id || baseId)\n    const localRefs = getSchemaRefs.call(this, schema, baseId)\n    sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n    this._cache.set(sch.schema, sch)\n    if (addSchema && !baseId.startsWith(\"#\")) {\n      // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n      if (baseId) this._checkUnique(baseId)\n      this.refs[baseId] = sch\n    }\n    if (validateSchema) this.validateSchema(schema, true)\n    return sch\n  }\n\n  private _checkUnique(id: string): void {\n    if (this.schemas[id] || this.refs[id]) {\n      throw new Error(`schema with key or id \"${id}\" already exists`)\n    }\n  }\n\n  private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n    if (sch.meta) this._compileMetaSchema(sch)\n    else compileSchema.call(this, sch)\n\n    /* istanbul ignore if */\n    if (!sch.validate) throw new Error(\"ajv implementation error\")\n    return sch.validate\n  }\n\n  private _compileMetaSchema(sch: SchemaEnv): void {\n    const currentOpts = this.opts\n    this.opts = this._metaOpts\n    try {\n      compileSchema.call(this, sch)\n    } finally {\n      this.opts = currentOpts\n    }\n  }\n}\n\nexport interface ErrorsTextOptions {\n  separator?: string\n  dataVar?: string\n}\n\nfunction checkOptions(\n  this: Ajv,\n  checkOpts: OptionsInfo,\n  options: Options & RemovedOptions,\n  msg: string,\n  log: \"warn\" | \"error\" = \"error\"\n): void {\n  for (const key in checkOpts) {\n    const opt = key as keyof typeof checkOpts\n    if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n  }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n  keyRef = normalizeId(keyRef) // TODO tests fail without this line\n  return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n  const optsSchemas = this.opts.schemas\n  if (!optsSchemas) return\n  if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n  else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n  for (const name in this.opts.formats) {\n    const format = this.opts.formats[name]\n    if (format) this.addFormat(name, format)\n  }\n}\n\nfunction addInitialKeywords(\n  this: Ajv,\n  defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n  if (Array.isArray(defs)) {\n    this.addVocabulary(defs)\n    return\n  }\n  this.logger.warn(\"keywords option as map is deprecated, pass array\")\n  for (const keyword in defs) {\n    const def = defs[keyword] as KeywordDefinition\n    if (!def.keyword) def.keyword = keyword\n    this.addKeyword(def)\n  }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n  const metaOpts = {...this.opts}\n  for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n  return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial | false): Logger {\n  if (logger === false) return noLogs\n  if (logger === undefined) return console\n  if (logger.log && logger.warn && logger.error) return logger as Logger\n  throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n  const {RULES} = this\n  eachItem(keyword, (kwd) => {\n    if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n    if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n  })\n  if (!def) return\n  if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n    throw new Error('$data keyword must have \"code\" or \"validate\" function')\n  }\n}\n\nfunction addRule(\n  this: Ajv,\n  keyword: string,\n  definition?: AddedKeywordDefinition,\n  dataType?: JSONType\n): void {\n  const post = definition?.post\n  if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n  const {RULES} = this\n  let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n  if (!ruleGroup) {\n    ruleGroup = {type: dataType, rules: []}\n    RULES.rules.push(ruleGroup)\n  }\n  RULES.keywords[keyword] = true\n  if (!definition) return\n\n  const rule: Rule = {\n    keyword,\n    definition: {\n      ...definition,\n      type: getJSONTypes(definition.type),\n      schemaType: getJSONTypes(definition.schemaType),\n    },\n  }\n  if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n  else ruleGroup.rules.push(rule)\n  RULES.all[keyword] = rule\n  definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n  const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n  if (i >= 0) {\n    ruleGroup.rules.splice(i, 0, rule)\n  } else {\n    ruleGroup.rules.push(rule)\n    this.logger.warn(`rule ${before} is not defined`)\n  }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n  let {metaSchema} = def\n  if (metaSchema === undefined) return\n  if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n  def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n  $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n  return {anyOf: [schema, $dataRef]}\n}\n", "import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"id\",\n  code() {\n    throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$ref\",\n  schemaType: \"string\",\n  code(cxt: KeywordCxt): void {\n    const {gen, schema: $ref, it} = cxt\n    const {baseId, schemaEnv: env, validateName, opts, self} = it\n    const {root} = env\n    if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n    const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n    if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n    if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n    return inlineRefSchema(schOrEnv)\n\n    function callRootRef(): void {\n      if (env === root) return callRef(cxt, validateName, env, env.$async)\n      const rootName = gen.scopeValue(\"root\", {ref: root})\n      return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n    }\n\n    function callValidate(sch: SchemaEnv): void {\n      const v = getValidate(cxt, sch)\n      callRef(cxt, v, sch, sch.$async)\n    }\n\n    function inlineRefSchema(sch: AnySchema): void {\n      const schName = gen.scopeValue(\n        \"schema\",\n        opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n      )\n      const valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema(\n        {\n          schema: sch,\n          dataTypes: [],\n          schemaPath: nil,\n          topSchemaRef: schName,\n          errSchemaPath: $ref,\n        },\n        valid\n      )\n      cxt.mergeEvaluated(schCxt)\n      cxt.ok(valid)\n    }\n  },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n  const {gen} = cxt\n  return sch.validate\n    ? gen.scopeValue(\"validate\", {ref: sch.validate})\n    : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n  const {gen, it} = cxt\n  const {allErrors, schemaEnv: env, opts} = it\n  const passCxt = opts.passContext ? N.this : nil\n  if ($async) callAsyncRef()\n  else callSyncRef()\n\n  function callAsyncRef(): void {\n    if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n    const valid = gen.let(\"valid\")\n    gen.try(\n      () => {\n        gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n        addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n        if (!allErrors) gen.assign(valid, true)\n      },\n      (e) => {\n        gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n        addErrorsFrom(e)\n        if (!allErrors) gen.assign(valid, false)\n      }\n    )\n    cxt.ok(valid)\n  }\n\n  function callSyncRef(): void {\n    cxt.result(\n      callValidateCode(cxt, v, passCxt),\n      () => addEvaluatedFrom(v),\n      () => addErrorsFrom(v)\n    )\n  }\n\n  function addErrorsFrom(source: Code): void {\n    const errs = _`${source}.errors`\n    gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n    gen.assign(N.errors, _`${N.vErrors}.length`)\n  }\n\n  function addEvaluatedFrom(source: Code): void {\n    if (!it.opts.unevaluated) return\n    const schEvaluated = sch?.validate?.evaluated\n    // TODO refactor\n    if (it.props !== true) {\n      if (schEvaluated && !schEvaluated.dynamicProps) {\n        if (schEvaluated.props !== undefined) {\n          it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n        }\n      } else {\n        const props = gen.var(\"props\", _`${source}.evaluated.props`)\n        it.props = mergeEvaluated.props(gen, props, it.props, Name)\n      }\n    }\n    if (it.items !== true) {\n      if (schEvaluated && !schEvaluated.dynamicItems) {\n        if (schEvaluated.items !== undefined) {\n          it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n        }\n      } else {\n        const items = gen.var(\"items\", _`${source}.evaluated.items`)\n        it.items = mergeEvaluated.items(gen, items, it.items, Name)\n      }\n    }\n  }\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n  \"$schema\",\n  \"$id\",\n  \"$defs\",\n  \"$vocabulary\",\n  {keyword: \"$comment\"},\n  \"definitions\",\n  idKeyword,\n  refKeyword,\n]\n\nexport default core\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n  Kwd,\n  {limit: number; comparison: Comparison},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n  \"multipleOf\",\n  {multipleOf: number},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n  params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"multipleOf\",\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schemaCode, it} = cxt\n    // const bdt = bad$DataType(schemaCode, def.schemaType, $data)\n    const prec = it.opts.multipleOfPrecision\n    const res = gen.let(\"res\")\n    const invalid = prec\n      ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n      : _`${res} !== parseInt(${res})`\n    cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n  },\n}\n\nexport default def\n", "// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n  const len = str.length\n  let length = 0\n  let pos = 0\n  let value: number\n  while (pos < len) {\n    length++\n    value = str.charCodeAt(pos++)\n    if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos)\n      if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n    }\n  }\n  return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} characters`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxLength\", \"minLength\"],\n  type: \"string\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode, it} = cxt\n    const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n    const len =\n      it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n    cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"pattern\",\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {data, $data, schema, schemaCode, it} = cxt\n    // TODO regexp should be wrapped in try/catchs\n    const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n    const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n    cxt.fail$data(_`!${regExp}.test(${data})`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} properties`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxProperties\", \"minProperties\"],\n  type: \"object\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n    cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n  checkReportMissingProp,\n  checkMissingProp,\n  reportMissingProp,\n  propertyInData,\n  noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n  \"required\",\n  {missingProperty: string},\n  string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n  params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"required\",\n  type: \"object\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, schemaCode, data, $data, it} = cxt\n    const {opts} = it\n    if (!$data && schema.length === 0) return\n    const useLoop = schema.length >= opts.loopRequired\n    if (it.allErrors) allErrorsMode()\n    else exitOnErrorMode()\n\n    if (opts.strictRequired) {\n      const props = cxt.parentSchema.properties\n      const {definedProperties} = cxt.it\n      for (const requiredKey of schema) {\n        if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n          const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n          const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n          checkStrictMode(it, msg, it.opts.strictRequired)\n        }\n      }\n    }\n\n    function allErrorsMode(): void {\n      if (useLoop || $data) {\n        cxt.block$data(nil, loopAllRequired)\n      } else {\n        for (const prop of schema) {\n          checkReportMissingProp(cxt, prop)\n        }\n      }\n    }\n\n    function exitOnErrorMode(): void {\n      const missing = gen.let(\"missing\")\n      if (useLoop || $data) {\n        const valid = gen.let(\"valid\", true)\n        cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n        cxt.ok(valid)\n      } else {\n        gen.if(checkMissingProp(cxt, schema, missing))\n        reportMissingProp(cxt, missing)\n        gen.else()\n      }\n    }\n\n    function loopAllRequired(): void {\n      gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n        cxt.setParams({missingProperty: prop})\n        gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n      })\n    }\n\n    function loopUntilMissing(missing: Name, valid: Name): void {\n      cxt.setParams({missingProperty: missing})\n      gen.forOf(\n        missing,\n        schemaCode as Code,\n        () => {\n          gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n          gen.if(not(valid), () => {\n            cxt.error()\n            gen.break()\n          })\n        },\n        nil\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} items`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxItems\", \"minItems\"],\n  type: \"array\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n    cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n  \"uniqueItems\",\n  {i: number; j: number},\n  boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {i, j}}) =>\n    str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n  params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"uniqueItems\",\n  type: \"array\",\n  schemaType: \"boolean\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n    if (!$data && !schema) return\n    const valid = gen.let(\"valid\")\n    const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n    cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n    cxt.ok(valid)\n\n    function validateUniqueItems(): void {\n      const i = gen.let(\"i\", _`${data}.length`)\n      const j = gen.let(\"j\")\n      cxt.setParams({i, j})\n      gen.assign(valid, true)\n      gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n    }\n\n    function canOptimize(): boolean {\n      return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n    }\n\n    function loopN(i: Name, j: Name): void {\n      const item = gen.name(\"item\")\n      const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n      const indices = gen.const(\"indices\", _`{}`)\n      gen.for(_`;${i}--;`, () => {\n        gen.let(item, _`${data}[${i}]`)\n        gen.if(wrongType, _`continue`)\n        if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n        gen\n          .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n            gen.assign(j, _`${indices}[${item}]`)\n            cxt.error()\n            gen.assign(valid, false).break()\n          })\n          .code(_`${indices}[${item}] = ${i}`)\n      })\n    }\n\n    function loopN2(i: Name, j: Name): void {\n      const eql = useFunc(gen, equal)\n      const outer = gen.name(\"outer\")\n      gen.label(outer).for(_`;${i}--;`, () =>\n        gen.for(_`${j} = ${i}; ${j}--;`, () =>\n          gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n            cxt.error()\n            gen.assign(valid, false).break(outer)\n          })\n        )\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to constant\",\n  params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"const\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schemaCode, schema} = cxt\n    if ($data || (schema && typeof schema == \"object\")) {\n      cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n    } else {\n      cxt.fail(_`${schema} !== ${data}`)\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to one of the allowed values\",\n  params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"enum\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n    const useLoop = schema.length >= it.opts.loopEnum\n    let eql: Name | undefined\n    const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n    let valid: Code\n    if (useLoop || $data) {\n      valid = gen.let(\"valid\")\n      cxt.block$data(valid, loopEnum)\n    } else {\n      /* istanbul ignore if */\n      if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n      const vSchema = gen.const(\"vSchema\", schemaCode)\n      valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n    }\n    cxt.pass(valid)\n\n    function loopEnum(): void {\n      gen.assign(valid, false)\n      gen.forOf(\"v\", schemaCode as Code, (v) =>\n        gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n      )\n    }\n\n    function equalCode(vSchema: Name, i: number): Code {\n      const sch = schema[i]\n      return typeof sch === \"object\" && sch !== null\n        ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n        : _`${data} === ${sch}`\n    }\n  },\n}\n\nexport default def\n", "import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n  // number\n  limitNumber,\n  multipleOf,\n  // string\n  limitLength,\n  pattern,\n  // object\n  limitProperties,\n  required,\n  // array\n  limitItems,\n  uniqueItems,\n  // any\n  {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n  {keyword: \"nullable\", schemaType: \"boolean\"},\n  constKeyword,\n  enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n  \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n  {limit: number},\n  number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n  | LimitError\n  | LimitNumberError\n  | MultipleOfError\n  | PatternError\n  | RequiredError\n  | UniqueItemsError\n  | ConstError\n  | EnumError\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"additionalItems\" as const,\n  type: \"array\",\n  schemaType: [\"boolean\", \"object\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {parentSchema, it} = cxt\n    const {items} = parentSchema\n    if (!Array.isArray(items)) {\n      checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n      return\n    }\n    validateAdditionalItems(cxt, items)\n  },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n  const {gen, schema, data, keyword, it} = cxt\n  it.items = true\n  const len = gen.const(\"len\", _`${data}.length`)\n  if (schema === false) {\n    cxt.setParams({len: items.length})\n    cxt.pass(_`${len} <= ${items.length}`)\n  } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n    const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n    gen.if(not(valid), () => validateItems(valid))\n    cxt.ok(valid)\n  }\n\n  function validateItems(valid: Name): void {\n    gen.forRange(\"i\", items.length, len, (i) => {\n      cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n      if (!it.allErrors) gen.if(not(valid), () => gen.break())\n    })\n  }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"array\", \"boolean\"],\n  before: \"uniqueItems\",\n  code(cxt: KeywordCxt) {\n    const {schema, it} = cxt\n    if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    cxt.ok(validateArray(cxt))\n  },\n}\n\nexport function validateTuple(\n  cxt: KeywordCxt,\n  extraItems: string,\n  schArr: AnySchema[] = cxt.schema\n): void {\n  const {gen, parentSchema, data, keyword, it} = cxt\n  checkStrictTuple(parentSchema)\n  if (it.opts.unevaluated && schArr.length && it.items !== true) {\n    it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n  }\n  const valid = gen.name(\"valid\")\n  const len = gen.const(\"len\", _`${data}.length`)\n  schArr.forEach((sch: AnySchema, i: number) => {\n    if (alwaysValidSchema(it, sch)) return\n    gen.if(_`${len} > ${i}`, () =>\n      cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          dataProp: i,\n        },\n        valid\n      )\n    )\n    cxt.ok(valid)\n  })\n\n  function checkStrictTuple(sch: AnySchemaObject): void {\n    const {opts, errSchemaPath} = it\n    const l = schArr.length\n    const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n    if (opts.strictTuples && !fullTuple) {\n      const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n      checkStrictMode(it, msg, opts.strictTuples)\n    }\n  }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"prefixItems\",\n  type: \"array\",\n  schemaType: [\"array\"],\n  before: \"uniqueItems\",\n  code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {schema, parentSchema, it} = cxt\n    const {prefixItems} = parentSchema\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n    else cxt.ok(validateArray(cxt))\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n  \"contains\",\n  {minContains: number; maxContains?: number},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {min, max}}) =>\n    max === undefined\n      ? str`must contain at least ${min} valid item(s)`\n      : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n  params: ({params: {min, max}}) =>\n    max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"contains\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    let min: number\n    let max: number | undefined\n    const {minContains, maxContains} = parentSchema\n    if (it.opts.next) {\n      min = minContains === undefined ? 1 : minContains\n      max = maxContains\n    } else {\n      min = 1\n    }\n    const len = gen.const(\"len\", _`${data}.length`)\n    cxt.setParams({min, max})\n    if (max === undefined && min === 0) {\n      checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n      return\n    }\n    if (max !== undefined && min > max) {\n      checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n      cxt.fail()\n      return\n    }\n    if (alwaysValidSchema(it, schema)) {\n      let cond = _`${len} >= ${min}`\n      if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n      cxt.pass(cond)\n      return\n    }\n\n    it.items = true\n    const valid = gen.name(\"valid\")\n    if (max === undefined && min === 1) {\n      validateItems(valid, () => gen.if(valid, () => gen.break()))\n    } else if (min === 0) {\n      gen.let(valid, true)\n      if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n    } else {\n      gen.let(valid, false)\n      validateItemsWithCount()\n    }\n    cxt.result(valid, () => cxt.reset())\n\n    function validateItemsWithCount(): void {\n      const schValid = gen.name(\"_valid\")\n      const count = gen.let(\"count\", 0)\n      validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n    }\n\n    function validateItems(_valid: Name, block: () => void): void {\n      gen.forRange(\"i\", 0, len, (i) => {\n        cxt.subschema(\n          {\n            keyword: \"contains\",\n            dataProp: i,\n            dataPropType: Type.Num,\n            compositeRule: true,\n          },\n          _valid\n        )\n        block()\n      })\n    }\n\n    function checkLimits(count: Name): void {\n      gen.code(_`${count}++`)\n      if (max === undefined) {\n        gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n      } else {\n        gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n        if (min === 1) gen.assign(valid, true)\n        else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n      }\n    }\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  SchemaMap,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n  property: string\n  missingProperty: string\n  depsCount: number\n  deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n  \"dependencies\",\n  DependenciesErrorParams,\n  {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n  message: ({params: {property, depsCount, deps}}) => {\n    const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n    return str`must have ${property_ies} ${deps} when property ${property} is present`\n  },\n  params: ({params: {property, depsCount, deps, missingProperty}}) =>\n    _`{property: ${property},\n    missingProperty: ${missingProperty},\n    depsCount: ${depsCount},\n    deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependencies\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const [propDeps, schDeps] = splitDependencies(cxt)\n    validatePropertyDeps(cxt, propDeps)\n    validateSchemaDeps(cxt, schDeps)\n  },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n  const propertyDeps: PropertyDependencies = {}\n  const schemaDeps: SchemaDependencies = {}\n  for (const key in schema) {\n    if (key === \"__proto__\") continue\n    const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n    deps[key] = schema[key]\n  }\n  return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n  cxt: KeywordCxt,\n  propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n  const {gen, data, it} = cxt\n  if (Object.keys(propertyDeps).length === 0) return\n  const missing = gen.let(\"missing\")\n  for (const prop in propertyDeps) {\n    const deps = propertyDeps[prop] as string[]\n    if (deps.length === 0) continue\n    const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n    cxt.setParams({\n      property: prop,\n      depsCount: deps.length,\n      deps: deps.join(\", \"),\n    })\n    if (it.allErrors) {\n      gen.if(hasProperty, () => {\n        for (const depProp of deps) {\n          checkReportMissingProp(cxt, depProp)\n        }\n      })\n    } else {\n      gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n      reportMissingProp(cxt, missing)\n      gen.else()\n    }\n  }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  for (const prop in schemaDeps) {\n    if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n    gen.if(\n      propertyInData(gen, data, prop, it.opts.ownProperties),\n      () => {\n        const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n      },\n      () => gen.var(valid, true) // TODO var\n    )\n    cxt.ok(valid)\n  }\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: \"property name must be valid\",\n  params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"propertyNames\",\n  type: \"object\",\n  schemaType: [\"object\", \"boolean\"],\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, it} = cxt\n    if (alwaysValidSchema(it, schema)) return\n    const valid = gen.name(\"valid\")\n\n    gen.forIn(\"key\", data, (key) => {\n      cxt.setParams({propertyName: key})\n      cxt.subschema(\n        {\n          keyword: \"propertyNames\",\n          data: key,\n          dataTypes: [\"string\"],\n          propertyName: key,\n          compositeRule: true,\n        },\n        valid\n      )\n      gen.if(not(valid), () => {\n        cxt.error(true)\n        if (!it.allErrors) gen.break()\n      })\n    })\n\n    cxt.ok(valid)\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  AddedKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n  \"additionalProperties\",\n  {additionalProperty: string},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must NOT have additional properties\",\n  params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n  keyword: \"additionalProperties\",\n  type: [\"object\"],\n  schemaType: [\"boolean\", \"object\"],\n  allowUndefined: true,\n  trackErrors: true,\n  error,\n  code(cxt) {\n    const {gen, schema, parentSchema, data, errsCount, it} = cxt\n    /* istanbul ignore if */\n    if (!errsCount) throw new Error(\"ajv implementation error\")\n    const {allErrors, opts} = it\n    it.props = true\n    if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n    const props = allSchemaProperties(parentSchema.properties)\n    const patProps = allSchemaProperties(parentSchema.patternProperties)\n    checkAdditionalProperties()\n    cxt.ok(_`${errsCount} === ${N.errors}`)\n\n    function checkAdditionalProperties(): void {\n      gen.forIn(\"key\", data, (key: Name) => {\n        if (!props.length && !patProps.length) additionalPropertyCode(key)\n        else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n      })\n    }\n\n    function isAdditional(key: Name): Code {\n      let definedProp: Code\n      if (props.length > 8) {\n        // TODO maybe an option instead of hard-coded 8?\n        const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n        definedProp = isOwnProperty(gen, propsSchema as Code, key)\n      } else if (props.length) {\n        definedProp = or(...props.map((p) => _`${key} === ${p}`))\n      } else {\n        definedProp = nil\n      }\n      if (patProps.length) {\n        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n      }\n      return not(definedProp)\n    }\n\n    function deleteAdditional(key: Name): void {\n      gen.code(_`delete ${data}[${key}]`)\n    }\n\n    function additionalPropertyCode(key: Name): void {\n      if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n        deleteAdditional(key)\n        return\n      }\n\n      if (schema === false) {\n        cxt.setParams({additionalProperty: key})\n        cxt.error()\n        if (!allErrors) gen.break()\n        return\n      }\n\n      if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n        const valid = gen.name(\"valid\")\n        if (opts.removeAdditional === \"failing\") {\n          applyAdditionalSchema(key, valid, false)\n          gen.if(not(valid), () => {\n            cxt.reset()\n            deleteAdditional(key)\n          })\n        } else {\n          applyAdditionalSchema(key, valid)\n          if (!allErrors) gen.if(not(valid), () => gen.break())\n        }\n      }\n    }\n\n    function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n      const subschema: SubschemaArgs = {\n        keyword: \"additionalProperties\",\n        dataProp: key,\n        dataPropType: Type.Str,\n      }\n      if (errors === false) {\n        Object.assign(subschema, {\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        })\n      }\n      cxt.subschema(subschema, valid)\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"properties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n      apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n    }\n    const allProps = allSchemaProperties(schema)\n    for (const prop of allProps) {\n      it.definedProperties.add(prop)\n    }\n    if (it.opts.unevaluated && allProps.length && it.props !== true) {\n      it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n    }\n    const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n    if (properties.length === 0) return\n    const valid = gen.name(\"valid\")\n\n    for (const prop of properties) {\n      if (hasDefault(prop)) {\n        applyPropertySchema(prop)\n      } else {\n        gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n        applyPropertySchema(prop)\n        if (!it.allErrors) gen.else().var(valid, true)\n        gen.endIf()\n      }\n      cxt.it.definedProperties.add(prop)\n      cxt.ok(valid)\n    }\n\n    function hasDefault(prop: string): boolean | undefined {\n      return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n    }\n\n    function applyPropertySchema(prop: string): void {\n      cxt.subschema(\n        {\n          keyword: \"properties\",\n          schemaProp: prop,\n          dataProp: prop,\n        },\n        valid\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"patternProperties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, parentSchema, it} = cxt\n    const {opts} = it\n    const patterns = allSchemaProperties(schema)\n    const alwaysValidPatterns = patterns.filter((p) =>\n      alwaysValidSchema(it, schema[p] as AnySchema)\n    )\n\n    if (\n      patterns.length === 0 ||\n      (alwaysValidPatterns.length === patterns.length &&\n        (!it.opts.unevaluated || it.props === true))\n    ) {\n      return\n    }\n\n    const checkProperties =\n      opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n    const valid = gen.name(\"valid\")\n    if (it.props !== true && !(it.props instanceof Name)) {\n      it.props = evaluatedPropsToName(gen, it.props)\n    }\n    const {props} = it\n    validatePatternProperties()\n\n    function validatePatternProperties(): void {\n      for (const pat of patterns) {\n        if (checkProperties) checkMatchingProperties(pat)\n        if (it.allErrors) {\n          validateProperties(pat)\n        } else {\n          gen.var(valid, true) // TODO var\n          validateProperties(pat)\n          gen.if(valid)\n        }\n      }\n    }\n\n    function checkMatchingProperties(pat: string): void {\n      for (const prop in checkProperties) {\n        if (new RegExp(pat).test(prop)) {\n          checkStrictMode(\n            it,\n            `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n          )\n        }\n      }\n    }\n\n    function validateProperties(pat: string): void {\n      gen.forIn(\"key\", data, (key) => {\n        gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n          const alwaysValid = alwaysValidPatterns.includes(pat)\n          if (!alwaysValid) {\n            cxt.subschema(\n              {\n                keyword: \"patternProperties\",\n                schemaProp: pat,\n                dataProp: key,\n                dataPropType: Type.Str,\n              },\n              valid\n            )\n          }\n\n          if (it.opts.unevaluated && props !== true) {\n            gen.assign(_`${props}[${key}]`, true)\n          } else if (!alwaysValid && !it.allErrors) {\n            // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n            // or if all properties were evaluated (props === true)\n            gen.if(not(valid), () => gen.break())\n          }\n        })\n      })\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"not\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    if (alwaysValidSchema(it, schema)) {\n      cxt.fail()\n      return\n    }\n\n    const valid = gen.name(\"valid\")\n    cxt.subschema(\n      {\n        keyword: \"not\",\n        compositeRule: true,\n        createErrors: false,\n        allErrors: false,\n      },\n      valid\n    )\n\n    cxt.failResult(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error()\n    )\n  },\n  error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"anyOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  code: validateUnion,\n  error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n  \"oneOf\",\n  {passingSchemas: [number, number] | null},\n  AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must match exactly one schema in oneOf\",\n  params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"oneOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    if (it.opts.discriminator && parentSchema.discriminator) return\n    const schArr: AnySchema[] = schema\n    const valid = gen.let(\"valid\", false)\n    const passing = gen.let(\"passing\", null)\n    const schValid = gen.name(\"_valid\")\n    cxt.setParams({passing})\n    // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n    gen.block(validateOneOf)\n\n    cxt.result(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error(true)\n    )\n\n    function validateOneOf(): void {\n      schArr.forEach((sch: AnySchema, i: number) => {\n        let schCxt: SchemaCxt | undefined\n        if (alwaysValidSchema(it, sch)) {\n          gen.var(schValid, true)\n        } else {\n          schCxt = cxt.subschema(\n            {\n              keyword: \"oneOf\",\n              schemaProp: i,\n              compositeRule: true,\n            },\n            schValid\n          )\n        }\n\n        if (i > 0) {\n          gen\n            .if(_`${schValid} && ${valid}`)\n            .assign(valid, false)\n            .assign(passing, _`[${passing}, ${i}]`)\n            .else()\n        }\n\n        gen.if(schValid, () => {\n          gen.assign(valid, true)\n          gen.assign(passing, i)\n          if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n        })\n      })\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"allOf\",\n  schemaType: \"array\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    const valid = gen.name(\"valid\")\n    schema.forEach((sch: AnySchema, i: number) => {\n      if (alwaysValidSchema(it, sch)) return\n      const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n      cxt.ok(valid)\n      cxt.mergeEvaluated(schCxt)\n    })\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n  params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"if\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, parentSchema, it} = cxt\n    if (parentSchema.then === undefined && parentSchema.else === undefined) {\n      checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n    }\n    const hasThen = hasSchema(it, \"then\")\n    const hasElse = hasSchema(it, \"else\")\n    if (!hasThen && !hasElse) return\n\n    const valid = gen.let(\"valid\", true)\n    const schValid = gen.name(\"_valid\")\n    validateIf()\n    cxt.reset()\n\n    if (hasThen && hasElse) {\n      const ifClause = gen.let(\"ifClause\")\n      cxt.setParams({ifClause})\n      gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n    } else if (hasThen) {\n      gen.if(schValid, validateClause(\"then\"))\n    } else {\n      gen.if(not(schValid), validateClause(\"else\"))\n    }\n\n    cxt.pass(valid, () => cxt.error(true))\n\n    function validateIf(): void {\n      const schCxt = cxt.subschema(\n        {\n          keyword: \"if\",\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        },\n        schValid\n      )\n      cxt.mergeEvaluated(schCxt)\n    }\n\n    function validateClause(keyword: string, ifClause?: Name): () => void {\n      return () => {\n        const schCxt = cxt.subschema({keyword}, schValid)\n        gen.assign(valid, schValid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n        if (ifClause) gen.assign(ifClause, _`${keyword}`)\n        else cxt.setParams({ifClause: keyword})\n      }\n    }\n  },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n  const schema = it.schema[keyword]\n  return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"then\", \"else\"],\n  schemaType: [\"object\", \"boolean\"],\n  code({keyword, parentSchema, it}: KeywordCxt) {\n    if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n  },\n}\n\nexport default def\n", "import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n  const applicator = [\n    // any\n    notKeyword,\n    anyOf,\n    oneOf,\n    allOf,\n    ifKeyword,\n    thenElse,\n    // object\n    propertyNames,\n    additionalProperties,\n    dependencies,\n    properties,\n    patternProperties,\n  ]\n  // array\n  if (draft2020) applicator.push(prefixItems, items2020)\n  else applicator.push(additionalItems, items)\n  applicator.push(contains)\n  return applicator\n}\n\nexport type ApplicatorKeywordError =\n  | ErrorNoParams<\"false schema\">\n  | AdditionalItemsError\n  | ItemsError\n  | ContainsError\n  | AdditionalPropertiesError\n  | DependenciesError\n  | IfKeywordError\n  | AnyOfError\n  | OneOfError\n  | NotKeywordError\n  | PropertyNamesError\n", "import type {\n  AddedFormat,\n  FormatValidator,\n  AsyncFormatValidator,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n  | FormatValidator\n  | FormatValidator\n  | AsyncFormatValidator\n  | AsyncFormatValidator\n  | RegExp\n  | string\n  | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"format\",\n  type: [\"number\", \"string\"],\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt, ruleType?: string) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const {opts, errSchemaPath, schemaEnv, self} = it\n    if (!opts.validateFormats) return\n\n    if ($data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n      const fType = gen.let(\"fType\")\n      const format = gen.let(\"format\")\n      // TODO simplify\n      gen.if(\n        _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n        () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n        () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n      )\n      cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n      function unknownFmt(): Code {\n        if (opts.strictSchema === false) return nil\n        return _`${schemaCode} && !${format}`\n      }\n\n      function invalidFmt(): Code {\n        const callFormat = schemaEnv.$async\n          ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n          : _`${format}(${data})`\n        const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n        return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n      }\n    }\n\n    function validateFormat(): void {\n      const formatDef: AddedFormat | undefined = self.formats[schema]\n      if (!formatDef) {\n        unknownFormat()\n        return\n      }\n      if (formatDef === true) return\n      const [fmtType, format, fmtRef] = getFormat(formatDef)\n      if (fmtType === ruleType) cxt.pass(validCondition())\n\n      function unknownFormat(): void {\n        if (opts.strictSchema === false) {\n          self.logger.warn(unknownMsg())\n          return\n        }\n        throw new Error(unknownMsg())\n\n        function unknownMsg(): string {\n          return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n        }\n      }\n\n      function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n        const code =\n          fmtDef instanceof RegExp\n            ? regexpCode(fmtDef)\n            : opts.code.formats\n            ? _`${opts.code.formats}${getProperty(schema)}`\n            : undefined\n        const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n        if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n          return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n        }\n\n        return [\"string\", fmtDef, fmt]\n      }\n\n      function validCondition(): Code {\n        if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n          if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n          return _`await ${fmtRef}(${data})`\n        }\n        return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n      }\n    }\n  },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n", "import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n  \"title\",\n  \"description\",\n  \"default\",\n  \"deprecated\",\n  \"readOnly\",\n  \"writeOnly\",\n  \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n  \"contentMediaType\",\n  \"contentEncoding\",\n  \"contentSchema\",\n]\n", "import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n  coreVocabulary,\n  validationVocabulary,\n  getApplicatorVocabulary(),\n  formatVocabulary,\n  metadataVocabulary,\n  contentVocabulary,\n]\n\nexport default draft7Vocabularies\n", "import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n  Tag = \"tag\",\n  Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj = ErrorObject<\n  \"discriminator\",\n  {error: E; tag: string; tagValue: unknown},\n  string\n>\n", "import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj | DiscrErrorObj\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {discrError, tagName}}) =>\n    discrError === DiscrError.Tag\n      ? `tag \"${tagName}\" must be string`\n      : `value of tag \"${tagName}\" must be in oneOf`,\n  params: ({params: {discrError, tag, tagName}}) =>\n    _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"discriminator\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schema, parentSchema, it} = cxt\n    const {oneOf} = parentSchema\n    if (!it.opts.discriminator) {\n      throw new Error(\"discriminator: requires discriminator option\")\n    }\n    const tagName = schema.propertyName\n    if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n    if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n    if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n    const valid = gen.let(\"valid\", false)\n    const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n    gen.if(\n      _`typeof ${tag} == \"string\"`,\n      () => validateMapping(),\n      () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n    )\n    cxt.ok(valid)\n\n    function validateMapping(): void {\n      const mapping = getMapping()\n      gen.if(false)\n      for (const tagValue in mapping) {\n        gen.elseIf(_`${tag} === ${tagValue}`)\n        gen.assign(valid, applyTagSchema(mapping[tagValue]))\n      }\n      gen.else()\n      cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n      gen.endIf()\n    }\n\n    function applyTagSchema(schemaProp?: number): Name {\n      const _valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n      cxt.mergeEvaluated(schCxt, Name)\n      return _valid\n    }\n\n    function getMapping(): {[T in string]?: number} {\n      const oneOfMapping: {[T in string]?: number} = {}\n      const topRequired = hasRequired(parentSchema)\n      let tagRequired = true\n      for (let i = 0; i < oneOf.length; i++) {\n        let sch = oneOf[i]\n        if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n          const ref = sch.$ref\n          sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n          if (sch instanceof SchemaEnv) sch = sch.schema\n          if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n        }\n        const propSch = sch?.properties?.[tagName]\n        if (typeof propSch != \"object\") {\n          throw new Error(\n            `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n          )\n        }\n        tagRequired = tagRequired && (topRequired || hasRequired(sch))\n        addMappings(propSch, i)\n      }\n      if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n      return oneOfMapping\n\n      function hasRequired({required}: AnySchemaObject): boolean {\n        return Array.isArray(required) && required.includes(tagName)\n      }\n\n      function addMappings(sch: AnySchemaObject, i: number): void {\n        if (sch.const) {\n          addMapping(sch.const, i)\n        } else if (sch.enum) {\n          for (const tagValue of sch.enum) {\n            addMapping(tagValue, i)\n          }\n        } else {\n          throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n        }\n      }\n\n      function addMapping(tagValue: unknown, i: number): void {\n        if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n          throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n        }\n        oneOfMapping[tagValue] = i\n      }\n    }\n  },\n}\n\nexport default def\n", "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Core schema meta-schema\",\n  \"definitions\": {\n    \"schemaArray\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\"$ref\": \"#\"}\n    },\n    \"nonNegativeInteger\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"nonNegativeIntegerDefault0\": {\n      \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n    },\n    \"simpleTypes\": {\n      \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n    },\n    \"stringArray\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true,\n      \"default\": []\n    }\n  },\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"$id\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$schema\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n    },\n    \"$ref\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$comment\": {\n      \"type\": \"string\"\n    },\n    \"title\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"default\": true,\n    \"readOnly\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"examples\": {\n      \"type\": \"array\",\n      \"items\": true\n    },\n    \"multipleOf\": {\n      \"type\": \"number\",\n      \"exclusiveMinimum\": 0\n    },\n    \"maximum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMaximum\": {\n      \"type\": \"number\"\n    },\n    \"minimum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMinimum\": {\n      \"type\": \"number\"\n    },\n    \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"pattern\": {\n      \"type\": \"string\",\n      \"format\": \"regex\"\n    },\n    \"additionalItems\": {\"$ref\": \"#\"},\n    \"items\": {\n      \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n      \"default\": true\n    },\n    \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"uniqueItems\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"contains\": {\"$ref\": \"#\"},\n    \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n    \"additionalProperties\": {\"$ref\": \"#\"},\n    \"definitions\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"properties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"patternProperties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"propertyNames\": {\"format\": \"regex\"},\n      \"default\": {}\n    },\n    \"dependencies\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n      }\n    },\n    \"propertyNames\": {\"$ref\": \"#\"},\n    \"const\": true,\n    \"enum\": {\n      \"type\": \"array\",\n      \"items\": true,\n      \"minItems\": 1,\n      \"uniqueItems\": true\n    },\n    \"type\": {\n      \"anyOf\": [\n        {\"$ref\": \"#/definitions/simpleTypes\"},\n        {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n          \"minItems\": 1,\n          \"uniqueItems\": true\n        }\n      ]\n    },\n    \"format\": {\"type\": \"string\"},\n    \"contentMediaType\": {\"type\": \"string\"},\n    \"contentEncoding\": {\"type\": \"string\"},\n    \"if\": {\"$ref\": \"#\"},\n    \"then\": {\"$ref\": \"#\"},\n    \"else\": {\"$ref\": \"#\"},\n    \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"not\": {\"$ref\": \"#\"}\n  },\n  \"default\": true\n}\n", "import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n  _addVocabularies(): void {\n    super._addVocabularies()\n    draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n    if (this.opts.discriminator) this.addKeyword(discriminator)\n  }\n\n  _addDefaultMetaSchema(): void {\n    super._addDefaultMetaSchema()\n    if (!this.opts.meta) return\n    const metaSchema = this.opts.$data\n      ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n      : draft7MetaSchema\n    this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n    this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    return (this.opts.defaultMeta =\n      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n  }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  SchemaValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n", "'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n};\n\nconst isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n  return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n  return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n};\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n", "'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n", "\nconst defaultOptions = {\n    preserveOrder: false,\n    attributeNamePrefix: '@_',\n    attributesGroupName: false,\n    textNodeName: '#text',\n    ignoreAttributes: true,\n    removeNSPrefix: false, // remove NS from tag name or attribute name if true\n    allowBooleanAttributes: false, //a tag can have attributes without any value\n    //ignoreRootElement : false,\n    parseTagValue: true,\n    parseAttributeValue: false,\n    trimValues: true, //Trim string values of tag and attributes\n    cdataPropName: false,\n    numberParseOptions: {\n      hex: true,\n      leadingZeros: true,\n      eNotation: true\n    },\n    tagValueProcessor: function(tagName, val) {\n      return val;\n    },\n    attributeValueProcessor: function(attrName, val) {\n      return val;\n    },\n    stopNodes: [], //nested tags will not be parsed even for errors\n    alwaysCreateTextNode: false,\n    isArray: () => false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n};\n   \nconst buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;", "'use strict';\n\nclass XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n  };\n};\n\n\nmodule.exports = XmlNode;", "const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n    \n    const entities = {};\n    if( xmlData[i + 3] === 'O' &&\n         xmlData[i + 4] === 'C' &&\n         xmlData[i + 5] === 'T' &&\n         xmlData[i + 6] === 'Y' &&\n         xmlData[i + 7] === 'P' &&\n         xmlData[i + 8] === 'E')\n    {    \n        i = i+9;\n        let angleBracketsCount = 1;\n        let hasBody = false, comment = false;\n        let exp = \"\";\n        for(;i') { //Read tag content\n                if(comment){\n                    if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                        comment = false;\n                        angleBracketsCount--;\n                    }\n                }else{\n                    angleBracketsCount--;\n                }\n                if (angleBracketsCount === 0) {\n                  break;\n                }\n            }else if( xmlData[i] === '['){\n                hasBody = true;\n            }else{\n                exp += xmlData[i];\n            }\n        }\n        if(angleBracketsCount !== 0){\n            throw new Error(`Unclosed DOCTYPE`);\n        }\n    }else{\n        throw new Error(`Invalid Tag instead of DOCTYPE`);\n    }\n    return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n    //External entities are not supported\n    //    \n\n    //Parameter entities are not supported\n    //    \n\n    //Internal entities are supported\n    //    \n    \n    //read EntityName\n    let entityName = \"\";\n    for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n        // if(xmlData[i] === \" \") continue;\n        // else \n        entityName += xmlData[i];\n    }\n    entityName = entityName.trim();\n    if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n    //read Entity Value\n    const startChar = xmlData[i++];\n    let val = \"\"\n    for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n        val += xmlData[i];\n    }\n    return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === '-' &&\n    xmlData[i+3] === '-') return true\n    return false\n}\nfunction isEntity(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'N' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'I' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'Y') return true\n    return false\n}\nfunction isElement(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'L' &&\n    xmlData[i+4] === 'E' &&\n    xmlData[i+5] === 'M' &&\n    xmlData[i+6] === 'E' &&\n    xmlData[i+7] === 'N' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\n\nfunction isAttlist(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'A' &&\n    xmlData[i+3] === 'T' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'L' &&\n    xmlData[i+6] === 'I' &&\n    xmlData[i+7] === 'S' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\nfunction isNotation(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'N' &&\n    xmlData[i+3] === 'O' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'A' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'I' &&\n    xmlData[i+8] === 'O' &&\n    xmlData[i+9] === 'N') return true\n    return false\n}\n\nfunction validateEntityName(name){\n    if (util.isName(name))\n\treturn name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n", "const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n    Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n    Number.parseFloat = window.parseFloat;\n}\n\n  \nconst consider = {\n    hex :  true,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true\n    //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n    // const options = Object.assign({}, consider);\n    // if(opt.leadingZeros === false){\n    //     options.leadingZeros = false;\n    // }else if(opt.hex === false){\n    //     options.hex = false;\n    // }\n\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    // if(trimmedStr === \"0.0\") return 0;\n    // else if(trimmedStr === \"+0.0\") return 0;\n    // else if(trimmedStr === \"-0.0\") return -0;\n\n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return Number.parseInt(trimmedStr, 16);\n    // } else if (options.parseOct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        if(match){\n            const sign = match[1];\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            //trim ending zeros for floating number\n            \n            const eNotation = match[4] || match[6];\n            if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n            else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const numStr = \"\" + num;\n                if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(eNotation){ //given number has enotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    // const decimalPart = match[5].substr(1);\n                    // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n                    \n                    // const p = numStr.indexOf(\".\");\n                    // const givenIntPart = numStr.substr(0,p);\n                    // const givenDecPart = numStr.substr(p+1);\n                    if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n                    else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n                    else return str;\n                }\n                \n                if(leadingZeros){\n                    // if(numTrimmedByZeros === numStr){\n                    //     if(options.leadingZeros) return num;\n                    //     else return str;\n                    // }else return str;\n                    if(numTrimmedByZeros === numStr) return num;\n                    else if(sign+numTrimmedByZeros === numStr) return num;\n                    else return str;\n                }\n\n                if(trimmedStr === numStr) return num;\n                else if(trimmedStr === sign+numStr) return num;\n                // else{\n                //     //number with +/- sign\n                //     trimmedStr.test(/[-+][0-9]);\n\n                // }\n                return str;\n            }\n            // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n            \n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substr(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\nmodule.exports = toNumber\n", "function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn", "'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"\u00A2\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"\u00A3\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"\u00A5\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"\u20AC\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"\u00A9\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"\u00AE\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"\u20B9\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = util.getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, jPath)\n\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath)\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              tagName = this.options.transformTagName(tagName);\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n  }else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode);\n  }else{\n    currentNode.addChild(childNode);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n  const allNodesExp = \"*.\" + currentTagName;\n  for (const stopNodePath in stopNodes) {\n    const stopNodeExp = stopNodes[stopNodePath];\n    if( allNodesExp === stopNodeExp || jPath === stopNodeExp  ) return true;\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (util.isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\n\nmodule.exports = OrderedObjParser;\n", "'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\nexports.prettify = prettify;\n", "const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Buffer} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData === \"string\"){\n        }else if( xmlData.toString){\n            xmlData = xmlData.toString();\n        }else{\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validator.validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n}\n\nmodule.exports = XMLParser;", "const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\nmodule.exports = toXml;\n", "'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nfunction Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it\u2019s part of a tag or an\n\t\t// unquoted attribute value. We\u2019re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer \u2264 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// \u201COtherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.\u201D\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they\u2019re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we\u2019re still here, `if ($7)` is implied; it\u2019s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n", "import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: decode(value, options).split(options.arrayFormatSeparator);\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n", "const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n", "export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n", "export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n", "import * as queryString from './base.js';\n\nexport default queryString;\n", "import type {\n  IAllowedValues,\n  IRenderOptions,\n} from \"types/state-machine-cat.mjs\";\n\nconst ALLOWED_VALUES: IAllowedValues = Object.freeze({\n  inputType: {\n    default: \"smcat\",\n    values: [{ name: \"smcat\" }, { name: \"json\" }, { name: \"scxml\" }],\n  },\n  outputType: {\n    default: \"svg\",\n    values: [\n      { name: \"ast\" },\n      { name: \"dot\" },\n      { name: \"eps\" },\n      { name: \"json\" },\n      { name: \"oldeps\" },\n      { name: \"oldps\" },\n      { name: \"oldps2\" },\n      { name: \"oldsvg\" },\n      { name: \"pdf\" },\n      { name: \"png\" },\n      { name: \"ps\" },\n      { name: \"ps2\" },\n      { name: \"scjson\" },\n      { name: \"scxml\" },\n      { name: \"smcat\" },\n      { name: \"svg\" },\n    ],\n  },\n  engine: {\n    default: \"dot\",\n    values: [\n      { name: \"dot\" },\n      { name: \"circo\" },\n      { name: \"fdp\" },\n      { name: \"neato\" },\n      { name: \"osage\" },\n      { name: \"twopi\" },\n    ],\n  },\n  direction: {\n    default: \"top-down\",\n    values: [\n      { name: \"top-down\" },\n      { name: \"bottom-top\" },\n      { name: \"left-right\" },\n      { name: \"right-left\" },\n    ],\n  },\n  desugar: {\n    default: false,\n    values: [{ name: true }, { name: false }],\n  },\n});\n\nexport function getOptionValue(\n  pOptions: IRenderOptions | null,\n  pOptionName: keyof IAllowedValues,\n): string | boolean {\n  // eslint-disable-next-line security/detect-object-injection\n  return pOptions?.[pOptionName] ?? ALLOWED_VALUES[pOptionName].default;\n}\n\nexport function getAllowedValues(): IAllowedValues {\n  return ALLOWED_VALUES;\n}\n\nexport default {\n  getAllowedValues,\n  getOptionValue,\n};\n", "import Ajv from \"ajv\";\nimport type {\n  IRenderOptions,\n  IStateMachine,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"../options.mjs\";\nimport { parse as parseSmCat } from \"./smcat/parse.mjs\";\nimport { parse as parseSCXML } from \"./scxml/index.mjs\";\nimport $schema from \"./smcat-ast.schema.mjs\";\n\n// @ts-expect-error using Ajv as a class/ constructor is as per the ajv documentation, but tsc seems to thing differently\nconst ajv = new Ajv();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction validateAgainstSchema(pSchema: typeof $schema, pObject: any): void {\n  if (!ajv.validate(pSchema, pObject)) {\n    throw new Error(\n      `The provided JSON is not a valid state-machine-cat AST: ${ajv.errorsText()}.\\n`,\n    );\n  }\n}\n\nexport default {\n  getAST(\n    pScript: string | IStateMachine,\n    pOptions: IRenderOptions,\n  ): IStateMachine {\n    let lReturnValue = pScript;\n\n    if (options.getOptionValue(pOptions, \"inputType\") === \"smcat\") {\n      lReturnValue = parseSmCat(pScript as string);\n    } else if (options.getOptionValue(pOptions, \"inputType\") === \"scxml\") {\n      // @ts-expect-error inputType scxml => it's a string\n      lReturnValue = parseSCXML(pScript);\n    } else if (typeof pScript === \"string\") {\n      // json\n      lReturnValue = JSON.parse(pScript);\n    }\n\n    validateAgainstSchema($schema, lReturnValue);\n\n    // @ts-expect-error by here lReturnValue is bound to be an IStateMachine\n    return lReturnValue;\n  },\n};\n", "export class Counter {\n  #lHWM = 0;\n\n  constructor(pStart: number = 0) {\n    this.#lHWM = pStart;\n  }\n\n  next(): number {\n    // eslint-disable-next-line no-plusplus\n    return ++this.#lHWM;\n  }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n  IState,\n  IStateMachine,\n  ITransition,\n  StateType,\n} from \"types/state-machine-cat.mjs\";\n\ninterface IFlattenedState extends Omit {\n  statemachine: boolean;\n  parent: string;\n}\n\nfunction flattenStatesToMap(\n  pStates: IState[],\n  pMap: Map,\n  pParent: string = \"\",\n): void {\n  pStates\n    .filter((pState) => Boolean(pState.statemachine))\n    .forEach((pState) => {\n      // @ts-expect-error ts2345 - typescript doesn't detect that one line above we\n      // ensure pState.statemachine is not undefined\n      if (Object.hasOwn(pState.statemachine, \"states\")) {\n        // @ts-expect-error TS doesn't detect that after the call in the filter\n        // the .statemachine is guaranteed to exist\n        flattenStatesToMap(pState.statemachine.states, pMap, pState.name);\n      }\n    });\n\n  pStates.forEach((pState) =>\n    pMap.set(pState.name, {\n      name: pState.name,\n      type: pState.type,\n      statemachine: Boolean(pState.statemachine),\n      parent: pParent,\n    }),\n  );\n}\n\nfunction flattenTransitions(pStateMachine: IStateMachine): ITransition[] {\n  let lTransitions: ITransition[] = [];\n\n  if (Object.hasOwn(pStateMachine, \"transitions\")) {\n    // @ts-expect-error TS doesn't detect that after the call in the if the\n    // .transitions is guaranteed to exist\n    lTransitions = structuredClone(pStateMachine.transitions);\n  }\n  if (Object.hasOwn(pStateMachine, \"states\")) {\n    pStateMachine.states\n      .filter((pState) => Boolean(pState.statemachine))\n      .forEach((pState) => {\n        lTransitions = lTransitions.concat(\n          // @ts-expect-error TS doesn't detect that after the call in the filter\n          // the .statemachine is guaranteed to exist\n          flattenTransitions(pState.statemachine),\n        );\n      });\n  }\n  return lTransitions;\n}\n\nexport default class StateMachineModel {\n  #flattenedTransitions: ITransition[];\n  #flattenedStates: Map;\n\n  constructor(pStateMachine: IStateMachine) {\n    this.#flattenedStates = new Map();\n    flattenStatesToMap(pStateMachine.states ?? [], this.#flattenedStates);\n    this.#flattenedTransitions = flattenTransitions(pStateMachine);\n  }\n\n  get flattenedTransitions(): ITransition[] {\n    return this.#flattenedTransitions;\n  }\n\n  findStateByName(pName: string): IFlattenedState | undefined {\n    return this.#flattenedStates.get(pName);\n  }\n\n  findStatesByTypes(pTypes: StateType[]): any[] {\n    return Array.from(this.#flattenedStates.values()).filter((pState) =>\n      pTypes.includes(pState.type),\n    );\n  }\n\n  findExternalSelfTransitions(pStateName: string): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) =>\n        pTransition.from === pStateName &&\n        pTransition.to === pStateName &&\n        pTransition.type !== \"internal\",\n    );\n  }\n\n  findTransitionsByFrom(pFromStateName: string): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) => pTransition.from === pFromStateName,\n    );\n  }\n\n  findTransitionsByTo(pToStateName: string): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) => pTransition.to === pToStateName,\n    );\n  }\n\n  getMaximumTransitionId(): number {\n    return Math.max(...this.#flattenedTransitions.map(({ id }) => id));\n  }\n\n  findTransitionsToSiblings(\n    pStateName: string,\n    pExcludeIds: Set,\n  ): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) =>\n        !pExcludeIds.has(pTransition.id) &&\n        pTransition.from === pStateName &&\n        this.#flattenedStates.get(pTransition.to)?.parent ===\n          this.#flattenedStates.get(pStateName)?.parent,\n    );\n  }\n}\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n  IState,\n  IStateMachine,\n  StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\n\nconst TRIGGER_RE_AS_A_STRING =\n  \"^(entry|activity|exit)\\\\s*/\\\\s*([^\\\\n$]*)(\\\\n|$)\";\n/* eslint security/detect-non-literal-regexp:0 */\nconst TRIGGER_RE = new RegExp(TRIGGER_RE_AS_A_STRING);\n\nfunction stateExists(pKnownStateNames: string[], pName: string): boolean {\n  return pKnownStateNames.includes(pName);\n}\n\ntype RegExp2StateType = {\n  re: RegExp;\n  stateType: import(\"../../types/state-machine-cat.mjs\").StateType;\n};\n\nconst RE2STATE_TYPE: RegExp2StateType[] = [\n  {\n    re: /initial/,\n    stateType: \"initial\",\n  },\n  {\n    re: /final/,\n    stateType: \"final\",\n  },\n  {\n    re: /parallel/,\n    stateType: \"parallel\",\n  },\n  {\n    re: /(deep.*history)|(history.*deep)/,\n    stateType: \"deephistory\",\n  },\n  {\n    re: /history/,\n    stateType: \"history\",\n  },\n  {\n    re: /^\\^.*/,\n    stateType: \"choice\",\n  },\n  {\n    re: /^].*/,\n    stateType: \"forkjoin\",\n  },\n];\n\nfunction matches(pName: string) {\n  return (pEntry: RegExp2StateType): boolean => pEntry.re.test(pName);\n}\n\nfunction getStateType(pName: string): StateType {\n  return (RE2STATE_TYPE.find(matches(pName)) || { stateType: \"regular\" })\n    .stateType;\n}\n\nfunction initState(pName: string): IState {\n  return {\n    name: pName,\n    type: getStateType(pName),\n  };\n}\n\nfunction isComposite(pState: IState): boolean {\n  return Boolean(pState.statemachine);\n}\n\nfunction getAlreadyDeclaredStates(pStateMachine: IStateMachine): string[] {\n  const lStates = pStateMachine?.states ?? [];\n\n  return lStates.filter(isComposite).reduce(\n    (pAllStateNames, pThisState) =>\n      pAllStateNames.concat(\n        // cast: because of the isComposite, we now pThisState has a .statemachine\n        // attribute and it won't be undefined\n        getAlreadyDeclaredStates(pThisState.statemachine as IStateMachine),\n      ),\n    lStates.map(({ name }) => name),\n  );\n}\n\nfunction extractUndeclaredStates(\n  pStateMachine: IStateMachine,\n  pKnownStateNames: string[],\n): IState[] {\n  pKnownStateNames =\n    pKnownStateNames ?? getAlreadyDeclaredStates(pStateMachine);\n\n  pStateMachine.states = pStateMachine?.states ?? [];\n  const lTransitions = pStateMachine?.transitions ?? [];\n\n  pStateMachine.states.filter(isComposite).forEach((pState) => {\n    // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n    pState.statemachine.states = extractUndeclaredStates(\n      // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n      pState.statemachine,\n      pKnownStateNames,\n    );\n  });\n\n  lTransitions.forEach((pTransition) => {\n    if (!stateExists(pKnownStateNames, pTransition.from)) {\n      pKnownStateNames.push(pTransition.from);\n      pStateMachine.states.push(initState(pTransition.from));\n    }\n    if (!stateExists(pKnownStateNames, pTransition.to)) {\n      pKnownStateNames.push(pTransition.to);\n      pStateMachine.states.push(initState(pTransition.to));\n    }\n  });\n  return pStateMachine.states;\n}\n\nfunction classifyForkJoin(\n  pInComingCount: number,\n  pOutGoingCount: number,\n): StateType {\n  let lReturnValue: StateType = \"junction\";\n\n  if (pInComingCount <= 1 && pOutGoingCount > 1) {\n    lReturnValue = \"fork\";\n  }\n  if (pInComingCount > 1 && pOutGoingCount <= 1) {\n    lReturnValue = \"join\";\n  }\n\n  return lReturnValue;\n}\n\nfunction classifyForkJoins(\n  pStateMachine: IStateMachine,\n  pFlattenedStateMachineModel = new StateMachineModel(pStateMachine),\n): IStateMachine {\n  // TODO: mutates parameter\n  pStateMachine.states = pStateMachine.states.map((pState) => {\n    if (pState.type === \"forkjoin\" && !pState.typeExplicitlySet) {\n      const lInComingCount = pFlattenedStateMachineModel.findTransitionsByTo(\n        pState.name,\n      ).length;\n      const lOutGoingCount = pFlattenedStateMachineModel.findTransitionsByFrom(\n        pState.name,\n      ).length;\n\n      pState.type = classifyForkJoin(lInComingCount, lOutGoingCount);\n    }\n    if (pState.statemachine) {\n      pState.statemachine = classifyForkJoins(\n        pState.statemachine,\n        pFlattenedStateMachineModel,\n      );\n    }\n    return pState;\n  });\n\n  return pStateMachine;\n}\n\nfunction stateEqual(pStateOne: IState, pStateTwo: IState): boolean {\n  return pStateOne.name === pStateTwo.name;\n}\n\nfunction uniq(\n  pArray: Array,\n  pEqualFunction: (a: SomeType, b: SomeType) => boolean,\n) {\n  return pArray.reduce((pBag: SomeType[], pMarble: SomeType) => {\n    const lMarbleIndex = pBag.findIndex((pBagItem) =>\n      pEqualFunction(pBagItem, pMarble),\n    );\n\n    if (lMarbleIndex > -1) {\n      // ensures the _last_ marble we find is in the bag on that position\n      pBag[lMarbleIndex] = pMarble;\n      return pBag;\n    }\n    return pBag.concat(pMarble);\n  }, []);\n}\n\nfunction parseTransitionExpression(pString: string): {\n  event?: string;\n  cond?: string;\n  action?: string;\n} {\n  // eslint-disable-next-line security/detect-unsafe-regex\n  const lTransitionExpressionRe = /([^[/]+)?(\\[[^\\]]+\\])?[^/]*(\\/.+)?/;\n  const lReturnValue: { event?: string; cond?: string; action?: string } = {};\n\n  // @ts-expect-error match has no fallback because lTransitionExpressionRe will match\n  // any string (every part is optional)\n  const lMatchResult: RegExpMatchArray = lTransitionExpressionRe.exec(pString);\n  const lEventPos = 1;\n  const lConditionPos = 2;\n  const lActionPos = 3;\n\n  if (lMatchResult[lEventPos]) {\n    lReturnValue.event = lMatchResult[lEventPos].trim();\n  }\n  if (lMatchResult[lConditionPos]) {\n    lReturnValue.cond = lMatchResult[lConditionPos].slice(1, -1).trim();\n  }\n  if (lMatchResult[lActionPos]) {\n    lReturnValue.action = lMatchResult[lActionPos]\n      .slice(1, lMatchResult[lActionPos].length)\n      .trim();\n  }\n\n  return lReturnValue;\n}\n\nfunction setIf(\n  pObject: { [name: string]: string },\n  pProperty: string,\n  pValue: string,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  pCondition: (pX: any) => boolean = Boolean,\n) {\n  if (pCondition(pValue)) {\n    pObject[pProperty] = pValue;\n  }\n}\n\nfunction setIfNotEmpty(\n  pObject: { [name: string]: string },\n  pProperty: string,\n  pValue: string,\n) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  setIf(pObject, pProperty, pValue, (pX: Array) => pX && pX.length > 0);\n}\n\nfunction extractAction(pActivityCandidate: string): {\n  type: string;\n  body: string;\n} {\n  const lMatch = TRIGGER_RE.exec(pActivityCandidate);\n  const lTypePos = 1;\n  const lBodyPos = 2;\n\n  if (lMatch) {\n    return {\n      type: lMatch[lTypePos],\n      body: lMatch[lBodyPos],\n    };\n  }\n  return {\n    type: \"activity\",\n    body: pActivityCandidate,\n  };\n}\n\nfunction extractActions(pString: string): { type: string; body: string }[] {\n  return pString\n    .split(/\\n\\s*/g)\n    .map((pActivityCandidate) => pActivityCandidate.trim())\n    .map(extractAction);\n}\n\nexport default {\n  initState,\n  extractUndeclaredStates,\n  classifyForkJoins,\n  getStateType,\n  stateEqual,\n  uniq,\n  parseTransitionExpression,\n  extractActions,\n  setIf,\n  setIfNotEmpty,\n};\n", "// @generated by Peggy 4.2.0.\n//\n// https://peggyjs.org/\n\nimport parserHelpers from \"../parser-helpers.mjs\";\n\n\nfunction peg$subclass(child, parent) {\n  function C() { this.constructor = child; }\n  C.prototype = parent.prototype;\n  child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  var self = Error.call(this, message);\n  // istanbul ignore next Check is a necessary evil to support older environments\n  if (Object.setPrototypeOf) {\n    Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n  }\n  self.expected = expected;\n  self.found = found;\n  self.location = location;\n  self.name = \"SyntaxError\";\n  return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n  padString = padString || \" \";\n  if (str.length > targetLength) { return str; }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n  var str = \"Error: \" + this.message;\n  if (this.location) {\n    var src = null;\n    var k;\n    for (k = 0; k < sources.length; k++) {\n      if (sources[k].source === this.location.source) {\n        src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n        break;\n      }\n    }\n    var s = this.location.start;\n    var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n      ? this.location.source.offset(s)\n      : s;\n    var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n    if (src) {\n      var e = this.location.end;\n      var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n      var line = src[s.line - 1];\n      var last = s.line === e.line ? e.column : line.length + 1;\n      var hatLen = (last - s.column) || 1;\n      str += \"\\n --> \" + loc + \"\\n\"\n          + filler + \" |\\n\"\n          + offset_s.line + \" | \" + line + \"\\n\"\n          + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n          + peg$padEnd(\"\", hatLen, \"^\");\n    } else {\n      str += \"\\n at \" + loc;\n    }\n  }\n  return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n  var DESCRIBE_EXPECTATION_FNS = {\n    literal: function(expectation) {\n      return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n    },\n\n    class: function(expectation) {\n      var escapedParts = expectation.parts.map(function(part) {\n        return Array.isArray(part)\n          ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n          : classEscape(part);\n      });\n\n      return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n    },\n\n    any: function() {\n      return \"any character\";\n    },\n\n    end: function() {\n      return \"end of input\";\n    },\n\n    other: function(expectation) {\n      return expectation.description;\n    }\n  };\n\n  function hex(ch) {\n    return ch.charCodeAt(0).toString(16).toUpperCase();\n  }\n\n  function literalEscape(s) {\n    return s\n      .replace(/\\\\/g, \"\\\\\\\\\")\n      .replace(/\"/g,  \"\\\\\\\"\")\n      .replace(/\\0/g, \"\\\\0\")\n      .replace(/\\t/g, \"\\\\t\")\n      .replace(/\\n/g, \"\\\\n\")\n      .replace(/\\r/g, \"\\\\r\")\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return \"\\\\x0\" + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\"  + hex(ch); });\n  }\n\n  function classEscape(s) {\n    return s\n      .replace(/\\\\/g, \"\\\\\\\\\")\n      .replace(/\\]/g, \"\\\\]\")\n      .replace(/\\^/g, \"\\\\^\")\n      .replace(/-/g,  \"\\\\-\")\n      .replace(/\\0/g, \"\\\\0\")\n      .replace(/\\t/g, \"\\\\t\")\n      .replace(/\\n/g, \"\\\\n\")\n      .replace(/\\r/g, \"\\\\r\")\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return \"\\\\x0\" + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\"  + hex(ch); });\n  }\n\n  function describeExpectation(expectation) {\n    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n  }\n\n  function describeExpected(expected) {\n    var descriptions = expected.map(describeExpectation);\n    var i, j;\n\n    descriptions.sort();\n\n    if (descriptions.length > 0) {\n      for (i = 1, j = 1; i < descriptions.length; i++) {\n        if (descriptions[i - 1] !== descriptions[i]) {\n          descriptions[j] = descriptions[i];\n          j++;\n        }\n      }\n      descriptions.length = j;\n    }\n\n    switch (descriptions.length) {\n      case 1:\n        return descriptions[0];\n\n      case 2:\n        return descriptions[0] + \" or \" + descriptions[1];\n\n      default:\n        return descriptions.slice(0, -1).join(\", \")\n          + \", or \"\n          + descriptions[descriptions.length - 1];\n    }\n  }\n\n  function describeFound(found) {\n    return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n  }\n\n  return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n  options = options !== undefined ? options : {};\n\n  var peg$FAILED = {};\n  var peg$source = options.grammarSource;\n\n  var peg$startRuleFunctions = { program: peg$parseprogram };\n  var peg$startRuleFunction = peg$parseprogram;\n\n  var peg$c0 = \",\";\n  var peg$c1 = \";\";\n  var peg$c2 = \"[\";\n  var peg$c3 = \"]\";\n  var peg$c4 = \":\";\n  var peg$c5 = \"{\";\n  var peg$c6 = \"}\";\n  var peg$c7 = \"=\";\n  var peg$c8 = \"label\";\n  var peg$c9 = \"color\";\n  var peg$c10 = \"class\";\n  var peg$c11 = \"active\";\n  var peg$c12 = \"type\";\n  var peg$c13 = \"regular\";\n  var peg$c14 = \"initial\";\n  var peg$c15 = \"terminate\";\n  var peg$c16 = \"final\";\n  var peg$c17 = \"parallel\";\n  var peg$c18 = \"history\";\n  var peg$c19 = \"deephistory\";\n  var peg$c20 = \"choice\";\n  var peg$c21 = \"forkjoin\";\n  var peg$c22 = \"fork\";\n  var peg$c23 = \"join\";\n  var peg$c24 = \"junction\";\n  var peg$c25 = \"width\";\n  var peg$c26 = \"external\";\n  var peg$c27 = \"internal\";\n  var peg$c28 = \"->\";\n  var peg$c29 = \"=>>\";\n  var peg$c30 = \"=>\";\n  var peg$c31 = \">>\";\n  var peg$c32 = \":>\";\n  var peg$c33 = \"--\";\n  var peg$c34 = \"==\";\n  var peg$c35 = \"<-\";\n  var peg$c36 = \"<<=\";\n  var peg$c37 = \"<=\";\n  var peg$c38 = \"<<\";\n  var peg$c39 = \"<:\";\n  var peg$c40 = \"#\";\n  var peg$c41 = \".\";\n  var peg$c42 = \"\\\"\";\n  var peg$c43 = \"\\\\\\\"\";\n  var peg$c44 = \"/*\";\n  var peg$c45 = \"*/\";\n  var peg$c46 = \"//\";\n\n  var peg$r0 = /^[0-9]/;\n  var peg$r1 = /^[a-zA-Z0-9_\\- ]/;\n  var peg$r2 = /^[,;{]/;\n  var peg$r3 = /^[;{]/;\n  var peg$r4 = /^[^;, \"\\t\\n\\r=\\-><:{[]/;\n  var peg$r5 = /^[ \\t]/;\n  var peg$r6 = /^[\\r\\n]/;\n  var peg$r7 = /^[^\\r\\n]/;\n\n  var peg$e0 = peg$otherExpectation(\"statemachine\");\n  var peg$e1 = peg$literalExpectation(\",\", false);\n  var peg$e2 = peg$literalExpectation(\";\", false);\n  var peg$e3 = peg$otherExpectation(\"state\");\n  var peg$e4 = peg$literalExpectation(\"[\", false);\n  var peg$e5 = peg$literalExpectation(\"]\", false);\n  var peg$e6 = peg$literalExpectation(\":\", false);\n  var peg$e7 = peg$literalExpectation(\"{\", false);\n  var peg$e8 = peg$literalExpectation(\"}\", false);\n  var peg$e9 = peg$otherExpectation(\"extended state attributes\");\n  var peg$e10 = peg$otherExpectation(\"extended state attribute\");\n  var peg$e11 = peg$literalExpectation(\"=\", false);\n  var peg$e12 = peg$otherExpectation(\"state attribute name\");\n  var peg$e13 = peg$literalExpectation(\"label\", true);\n  var peg$e14 = peg$literalExpectation(\"color\", true);\n  var peg$e15 = peg$otherExpectation(\"class attribute\");\n  var peg$e16 = peg$literalExpectation(\"class\", true);\n  var peg$e17 = peg$otherExpectation(\"state flag\");\n  var peg$e18 = peg$literalExpectation(\"active\", true);\n  var peg$e19 = peg$otherExpectation(\"state type\");\n  var peg$e20 = peg$literalExpectation(\"type\", true);\n  var peg$e21 = peg$otherExpectation(\"state type type\");\n  var peg$e22 = peg$literalExpectation(\"regular\", false);\n  var peg$e23 = peg$literalExpectation(\"initial\", false);\n  var peg$e24 = peg$literalExpectation(\"terminate\", false);\n  var peg$e25 = peg$literalExpectation(\"final\", false);\n  var peg$e26 = peg$literalExpectation(\"parallel\", false);\n  var peg$e27 = peg$literalExpectation(\"history\", false);\n  var peg$e28 = peg$literalExpectation(\"deephistory\", false);\n  var peg$e29 = peg$literalExpectation(\"choice\", false);\n  var peg$e30 = peg$literalExpectation(\"forkjoin\", false);\n  var peg$e31 = peg$literalExpectation(\"fork\", false);\n  var peg$e32 = peg$literalExpectation(\"join\", false);\n  var peg$e33 = peg$literalExpectation(\"junction\", false);\n  var peg$e34 = peg$otherExpectation(\"transition\");\n  var peg$e35 = peg$otherExpectation(\"extended transition attributes\");\n  var peg$e36 = peg$otherExpectation(\"extended transition attribute\");\n  var peg$e37 = peg$otherExpectation(\"transition attribute name\");\n  var peg$e38 = peg$otherExpectation(\"transition type name\");\n  var peg$e39 = peg$otherExpectation(\"numeric transition attribute name\");\n  var peg$e40 = peg$literalExpectation(\"width\", true);\n  var peg$e41 = peg$otherExpectation(\"transition type value\");\n  var peg$e42 = peg$literalExpectation(\"external\", false);\n  var peg$e43 = peg$literalExpectation(\"internal\", false);\n  var peg$e44 = peg$otherExpectation(\"left to right arrow\");\n  var peg$e45 = peg$literalExpectation(\"->\", false);\n  var peg$e46 = peg$literalExpectation(\"=>>\", false);\n  var peg$e47 = peg$literalExpectation(\"=>\", false);\n  var peg$e48 = peg$literalExpectation(\">>\", false);\n  var peg$e49 = peg$literalExpectation(\":>\", false);\n  var peg$e50 = peg$literalExpectation(\"--\", false);\n  var peg$e51 = peg$literalExpectation(\"==\", false);\n  var peg$e52 = peg$otherExpectation(\"right to left arrow\");\n  var peg$e53 = peg$literalExpectation(\"<-\", false);\n  var peg$e54 = peg$literalExpectation(\"<<=\", false);\n  var peg$e55 = peg$literalExpectation(\"<=\", false);\n  var peg$e56 = peg$literalExpectation(\"<<\", false);\n  var peg$e57 = peg$literalExpectation(\"<:\", false);\n  var peg$e58 = peg$literalExpectation(\"#\", false);\n  var peg$e59 = peg$literalExpectation(\".\", false);\n  var peg$e60 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n  var peg$e61 = peg$otherExpectation(\"double quoted string\");\n  var peg$e62 = peg$literalExpectation(\"\\\"\", false);\n  var peg$e63 = peg$literalExpectation(\"\\\\\\\"\", false);\n  var peg$e64 = peg$anyExpectation();\n  var peg$e65 = peg$otherExpectation(\"valid class string\");\n  var peg$e66 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\", \"-\", \" \"], false, false);\n  var peg$e67 = peg$classExpectation([\",\", \";\", \"{\"], false, false);\n  var peg$e68 = peg$classExpectation([\";\", \"{\"], false, false);\n  var peg$e69 = peg$otherExpectation(\"identifier\");\n  var peg$e70 = peg$classExpectation([\";\", \",\", \" \", \"\\\"\", \"\\t\", \"\\n\", \"\\r\", \"=\", \"-\", \">\", \"<\", \":\", \"{\", \"[\"], true, false);\n  var peg$e71 = peg$otherExpectation(\"whitespace\");\n  var peg$e72 = peg$classExpectation([\" \", \"\\t\"], false, false);\n  var peg$e73 = peg$otherExpectation(\"line end\");\n  var peg$e74 = peg$classExpectation([\"\\r\", \"\\n\"], false, false);\n  var peg$e75 = peg$literalExpectation(\"/*\", false);\n  var peg$e76 = peg$literalExpectation(\"*/\", false);\n  var peg$e77 = peg$literalExpectation(\"//\", false);\n  var peg$e78 = peg$classExpectation([\"\\r\", \"\\n\"], true, false);\n  var peg$e79 = peg$otherExpectation(\"comment\");\n\n  var peg$f0 = function(statemachine) {\n        statemachine.states = parserHelpers.extractUndeclaredStates(statemachine);\n        return parserHelpers.classifyForkJoins(statemachine);\n    };\n  var peg$f1 = function(states, transitions) {\n        let lStateMachine = {};\n        parserHelpers.setIf(lStateMachine, 'states', states);\n        parserHelpers.setIfNotEmpty(lStateMachine, 'transitions', transitions);\n\n        return lStateMachine;\n      };\n  var peg$f2 = function(state) {return state};\n  var peg$f3 = function(state) {return state};\n  var peg$f4 = function(states) {\n      return parserHelpers.uniq(states[0].concat(states[1]), parserHelpers.stateEqual);\n    };\n  var peg$f5 = function(notes, id, attrs) {return attrs};\n  var peg$f6 = function(notes, id, extended_state_attributes, act) {return act};\n  var peg$f7 = function(notes, id, extended_state_attributes, actions, sm) {return sm;};\n  var peg$f8 = function(notes, id, extended_state_attributes, actions, statemachine) {\n          let lState = parserHelpers.initState(id);\n          (extended_state_attributes || []).forEach(\n            pExtendedAttribute => parserHelpers.setIf(lState, pExtendedAttribute.name, pExtendedAttribute.value)\n          );\n          parserHelpers.setIf(lState, 'typeExplicitlySet', (extended_state_attributes || []).some(pExtendedAttribute => pExtendedAttribute.typeExplicitlySet));\n          parserHelpers.setIf(lState, 'statemachine', statemachine);\n          parserHelpers.setIfNotEmpty(lState, 'note', notes);\n\n          if (actions) {\n            parserHelpers.setIfNotEmpty(\n                lState,\n                'actions',\n                parserHelpers.extractActions(actions)\n            );\n          }\n\n          return lState;\n        };\n  var peg$f9 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f10 = function(name, value) {\n        return {name, value}\n    };\n  var peg$f11 = function(name) {\n        return {name, value:true}\n    };\n  var peg$f12 = function(name, value) {\n        return {name, value, typeExplicitlySet:true}\n    };\n  var peg$f13 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f14 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f15 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f16 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f17 = function(notes, trans, attrs) {return attrs};\n  var peg$f18 = function(notes, trans, extended_attributes, lbl) {return lbl};\n  var peg$f19 = function(notes, trans, extended_attributes, label) {\n      if (label) {\n          trans.label = label;\n          trans = Object.assign(\n              trans,\n              parserHelpers.parseTransitionExpression(label),\n          );\n      }\n      (extended_attributes || []).forEach(\n          pExtendedAttribute => parserHelpers.setIf(trans, pExtendedAttribute.name, pExtendedAttribute.value)\n      );\n      parserHelpers.setIfNotEmpty(trans, 'note', notes);\n\n      trans.id=options.counter.next();\n      return trans;\n    };\n  var peg$f20 = function(from_, to) {\n              return {\n                  from: from_,\n                  to: to\n              }\n          };\n  var peg$f21 = function(to, from_) {\n          return {\n              from: from_,\n              to: to\n          }\n      };\n  var peg$f22 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f23 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f24 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f25 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f26 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f27 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f28 = function(name) {\n        return name\n    };\n  var peg$f29 = function(com) {\n      return com.join(\"\").trim()\n    };\n  var peg$f30 = function(digits) { return parseFloat(digits.join(\"\")); };\n  var peg$f31 = function(digits) { return parseInt(digits.join(\"\"), 10); };\n  var peg$f32 = function(s) {return s.join(\"\").replace(/\\\\\\\"/g, \"\\\"\")};\n  var peg$f33 = function(c) {return c};\n  var peg$f34 = function(s) {return s.join(\"\")};\n  var peg$f35 = function(c) {return c};\n  var peg$f36 = function(s) {return s.join(\"\").trim()};\n  var peg$f37 = function(s) {return s.join(\"\").trim()};\n  var peg$f38 = function(c) {return c};\n  var peg$f39 = function(c) {return c};\n  var peg$f40 = function(chars) {return chars.join(\"\")};\n  var peg$currPos = options.peg$currPos | 0;\n  var peg$savedPos = peg$currPos;\n  var peg$posDetailsCache = [{ line: 1, column: 1 }];\n  var peg$maxFailPos = peg$currPos;\n  var peg$maxFailExpected = options.peg$maxFailExpected || [];\n  var peg$silentFails = options.peg$silentFails | 0;\n\n  var peg$result;\n\n  if (options.startRule) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function offset() {\n    return peg$savedPos;\n  }\n\n  function range() {\n    return {\n      source: peg$source,\n      start: peg$savedPos,\n      end: peg$currPos\n    };\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos];\n    var p;\n\n    if (details) {\n      return details;\n    } else {\n      if (pos >= peg$posDetailsCache.length) {\n        p = peg$posDetailsCache.length - 1;\n      } else {\n        p = pos;\n        while (!peg$posDetailsCache[--p]) {}\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos, offset) {\n    var startPosDetails = peg$computePosDetails(startPos);\n    var endPosDetails = peg$computePosDetails(endPos);\n\n    var res = {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n    if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n      res.start = peg$source.offset(res.start);\n      res.end = peg$source.offset(res.end);\n    }\n    return res;\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parseprogram() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parsestatemachine();\n    s3 = peg$parse_();\n    peg$savedPos = s0;\n    s0 = peg$f0(s2);\n\n    return s0;\n  }\n\n  function peg$parsestatemachine() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parsestates();\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    s2 = [];\n    s3 = peg$parsetransition();\n    while (s3 !== peg$FAILED) {\n      s2.push(s3);\n      s3 = peg$parsetransition();\n    }\n    peg$savedPos = s0;\n    s0 = peg$f1(s1, s2);\n    peg$silentFails--;\n    s1 = peg$FAILED;\n    if (peg$silentFails === 0) { peg$fail(peg$e0); }\n\n    return s0;\n  }\n\n  function peg$parsestates() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = [];\n    s3 = peg$currPos;\n    s4 = peg$parsestate();\n    if (s4 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 44) {\n        s5 = peg$c0;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e1); }\n      }\n      if (s5 !== peg$FAILED) {\n        peg$savedPos = s3;\n        s3 = peg$f2(s4);\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s3;\n      s3 = peg$FAILED;\n    }\n    while (s3 !== peg$FAILED) {\n      s2.push(s3);\n      s3 = peg$currPos;\n      s4 = peg$parsestate();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 44) {\n          s5 = peg$c0;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e1); }\n        }\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s3;\n          s3 = peg$f2(s4);\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n    }\n    s3 = peg$currPos;\n    s4 = peg$parsestate();\n    if (s4 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 59) {\n        s5 = peg$c1;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e2); }\n      }\n      if (s5 !== peg$FAILED) {\n        peg$savedPos = s3;\n        s3 = peg$f3(s4);\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s3;\n      s3 = peg$FAILED;\n    }\n    if (s3 !== peg$FAILED) {\n      s2 = [s2, s3];\n      s1 = s2;\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f4(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsestate() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parsenote();\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parsenote();\n    }\n    s2 = peg$parse_();\n    s3 = peg$parseidentifier();\n    if (s3 !== peg$FAILED) {\n      s4 = peg$parse_();\n      s5 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s6 = peg$c2;\n        peg$currPos++;\n      } else {\n        s6 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e4); }\n      }\n      if (s6 !== peg$FAILED) {\n        s7 = peg$parseextended_state_attributes();\n        if (input.charCodeAt(peg$currPos) === 93) {\n          s8 = peg$c3;\n          peg$currPos++;\n        } else {\n          s8 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e5); }\n        }\n        if (s8 !== peg$FAILED) {\n          peg$savedPos = s5;\n          s5 = peg$f5(s1, s3, s7);\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s5;\n        s5 = peg$FAILED;\n      }\n      if (s5 === peg$FAILED) {\n        s5 = null;\n      }\n      s6 = peg$parse_();\n      s7 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s8 = peg$c4;\n        peg$currPos++;\n      } else {\n        s8 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e6); }\n      }\n      if (s8 !== peg$FAILED) {\n        s9 = peg$parse_();\n        s10 = peg$parsestring();\n        if (s10 !== peg$FAILED) {\n          s11 = peg$parse_();\n          peg$savedPos = s7;\n          s7 = peg$f6(s1, s3, s5, s10);\n        } else {\n          peg$currPos = s7;\n          s7 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s7;\n        s7 = peg$FAILED;\n      }\n      if (s7 === peg$FAILED) {\n        s7 = null;\n      }\n      s8 = peg$parse_();\n      s9 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 123) {\n        s10 = peg$c5;\n        peg$currPos++;\n      } else {\n        s10 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e7); }\n      }\n      if (s10 !== peg$FAILED) {\n        s11 = peg$parse_();\n        s12 = peg$parsestatemachine();\n        if (s12 !== peg$FAILED) {\n          s13 = peg$parse_();\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s14 = peg$c6;\n            peg$currPos++;\n          } else {\n            s14 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e8); }\n          }\n          if (s14 !== peg$FAILED) {\n            peg$savedPos = s9;\n            s9 = peg$f7(s1, s3, s5, s7, s12);\n          } else {\n            peg$currPos = s9;\n            s9 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s9;\n          s9 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s9;\n        s9 = peg$FAILED;\n      }\n      if (s9 === peg$FAILED) {\n        s9 = null;\n      }\n      s10 = peg$parse_();\n      peg$savedPos = s0;\n      s0 = peg$f8(s1, s3, s5, s7, s9);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e3); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_attributes() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseextended_state_attribute();\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseextended_state_attribute();\n    }\n    peg$silentFails--;\n    s1 = peg$FAILED;\n    if (peg$silentFails === 0) { peg$fail(peg$e9); }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_attribute() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parseextended_state_string_attribute_name();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parse_();\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s4 = peg$c7;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e11); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse_();\n        s6 = peg$parsequotedstring();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f9(s2, s6);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      s2 = peg$parseclass_attribute_name();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s4 = peg$c7;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e11); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          s6 = peg$parseclass_string();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parse_();\n            peg$savedPos = s0;\n            s0 = peg$f10(s2, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        s2 = peg$parseextended_state_boolean_attribute_name();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f11(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parse_();\n          s2 = peg$parseextended_state_type_attribute_name();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parse_();\n            if (input.charCodeAt(peg$currPos) === 61) {\n              s4 = peg$c7;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e11); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              s6 = peg$parseextended_state_type_attribute_type();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                peg$savedPos = s0;\n                s0 = peg$f12(s2, s6);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e10); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_string_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c8) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e13); }\n    }\n    if (s1 === peg$FAILED) {\n      s1 = input.substr(peg$currPos, 5);\n      if (s1.toLowerCase() === peg$c9) {\n        peg$currPos += 5;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e14); }\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f13(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e12); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseclass_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c10) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e16); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f14(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e15); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_boolean_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 6);\n    if (s1.toLowerCase() === peg$c11) {\n      peg$currPos += 6;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e18); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f15(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e17); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_type_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 4);\n    if (s1.toLowerCase() === peg$c12) {\n      peg$currPos += 4;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e20); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f16(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e19); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_type_attribute_type() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 7) === peg$c13) {\n      s0 = peg$c13;\n      peg$currPos += 7;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e22); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 7) === peg$c14) {\n        s0 = peg$c14;\n        peg$currPos += 7;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e23); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 9) === peg$c15) {\n          s0 = peg$c15;\n          peg$currPos += 9;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e24); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c16) {\n            s0 = peg$c16;\n            peg$currPos += 5;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e25); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 8) === peg$c17) {\n              s0 = peg$c17;\n              peg$currPos += 8;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e26); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 7) === peg$c18) {\n                s0 = peg$c18;\n                peg$currPos += 7;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e27); }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.substr(peg$currPos, 11) === peg$c19) {\n                  s0 = peg$c19;\n                  peg$currPos += 11;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e28); }\n                }\n                if (s0 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 6) === peg$c20) {\n                    s0 = peg$c20;\n                    peg$currPos += 6;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e29); }\n                  }\n                  if (s0 === peg$FAILED) {\n                    if (input.substr(peg$currPos, 8) === peg$c21) {\n                      s0 = peg$c21;\n                      peg$currPos += 8;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$e30); }\n                    }\n                    if (s0 === peg$FAILED) {\n                      if (input.substr(peg$currPos, 4) === peg$c22) {\n                        s0 = peg$c22;\n                        peg$currPos += 4;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$e31); }\n                      }\n                      if (s0 === peg$FAILED) {\n                        if (input.substr(peg$currPos, 4) === peg$c23) {\n                          s0 = peg$c23;\n                          peg$currPos += 4;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$e32); }\n                        }\n                        if (s0 === peg$FAILED) {\n                          if (input.substr(peg$currPos, 8) === peg$c24) {\n                            s0 = peg$c24;\n                            peg$currPos += 8;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$e33); }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e21); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsetransition() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parsenote();\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parsenote();\n    }\n    s2 = peg$parsetransitionbase();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s4 = peg$c2;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e4); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseextended_transition_attributes();\n        if (input.charCodeAt(peg$currPos) === 93) {\n          s6 = peg$c3;\n          peg$currPos++;\n        } else {\n          s6 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e5); }\n        }\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s3;\n          s3 = peg$f17(s1, s2, s5);\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      s4 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s5 = peg$c4;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e6); }\n      }\n      if (s5 !== peg$FAILED) {\n        s6 = peg$parse_();\n        s7 = peg$parsetransitionstring();\n        if (s7 !== peg$FAILED) {\n          s8 = peg$parse_();\n          peg$savedPos = s4;\n          s4 = peg$f18(s1, s2, s3, s7);\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s4;\n        s4 = peg$FAILED;\n      }\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (input.charCodeAt(peg$currPos) === 59) {\n        s5 = peg$c1;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e2); }\n      }\n      if (s5 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f19(s1, s2, s3, s4);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e34); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsetransitionbase() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parseidentifier();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parse_();\n      s4 = peg$parsefwdarrowtoken();\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse_();\n        s6 = peg$parseidentifier();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f20(s2, s6);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      s2 = peg$parseidentifier();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        s4 = peg$parsebckarrowtoken();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          s6 = peg$parseidentifier();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parse_();\n            peg$savedPos = s0;\n            s0 = peg$f21(s2, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_attributes() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseextended_transition_attribute();\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseextended_transition_attribute();\n    }\n    peg$silentFails--;\n    s1 = peg$FAILED;\n    if (peg$silentFails === 0) { peg$fail(peg$e35); }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_attribute() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parseextended_transition_string_attribute_name();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parse_();\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s4 = peg$c7;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e11); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse_();\n        s6 = peg$parsequotedstring();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f22(s2, s6);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      s2 = peg$parseclass_attribute_name();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s4 = peg$c7;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e11); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          s6 = peg$parseclass_string();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parse_();\n            peg$savedPos = s0;\n            s0 = peg$f23(s2, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        s2 = peg$parseextended_transition_type_name();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (input.charCodeAt(peg$currPos) === 61) {\n            s4 = peg$c7;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e11); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            s6 = peg$parseextended_transition_type_value();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parse_();\n              peg$savedPos = s0;\n              s0 = peg$f24(s2, s6);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parse_();\n          s2 = peg$parseextended_transition_numeric_attribute_name();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parse_();\n            if (input.charCodeAt(peg$currPos) === 61) {\n              s4 = peg$c7;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e11); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              s6 = peg$parsepositive_number();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                peg$savedPos = s0;\n                s0 = peg$f25(s2, s6);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e36); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_string_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c9) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e14); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f26(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e37); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_type_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 4);\n    if (s1.toLowerCase() === peg$c12) {\n      peg$currPos += 4;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e20); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f27(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e38); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_numeric_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c25) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e40); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f28(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e39); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_type_value() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 8) === peg$c26) {\n      s0 = peg$c26;\n      peg$currPos += 8;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e42); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 8) === peg$c27) {\n        s0 = peg$c27;\n        peg$currPos += 8;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e43); }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e41); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsefwdarrowtoken() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 2) === peg$c28) {\n      s0 = peg$c28;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e45); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 3) === peg$c29) {\n        s0 = peg$c29;\n        peg$currPos += 3;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e46); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c30) {\n          s0 = peg$c30;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e47); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c31) {\n            s0 = peg$c31;\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e48); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c32) {\n              s0 = peg$c32;\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e49); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 2) === peg$c33) {\n                s0 = peg$c33;\n                peg$currPos += 2;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e50); }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.substr(peg$currPos, 2) === peg$c34) {\n                  s0 = peg$c34;\n                  peg$currPos += 2;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e51); }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e44); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsebckarrowtoken() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 2) === peg$c35) {\n      s0 = peg$c35;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e53); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 3) === peg$c36) {\n        s0 = peg$c36;\n        peg$currPos += 3;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e54); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c37) {\n          s0 = peg$c37;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e55); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c38) {\n            s0 = peg$c38;\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e56); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c39) {\n              s0 = peg$c39;\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e57); }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e52); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsenote() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (input.charCodeAt(peg$currPos) === 35) {\n      s2 = peg$c40;\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e58); }\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = [];\n      s4 = peg$parseslcomtok();\n      while (s4 !== peg$FAILED) {\n        s3.push(s4);\n        s4 = peg$parseslcomtok();\n      }\n      peg$savedPos = s0;\n      s0 = peg$f29(s3);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsepositive_number() {\n    var s0;\n\n    s0 = peg$parsepositive_real();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsecardinal();\n    }\n\n    return s0;\n  }\n\n  function peg$parsepositive_real() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parsecardinal();\n    if (s2 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 46) {\n        s3 = peg$c41;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e59); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parsecardinal();\n        if (s4 !== peg$FAILED) {\n          s2 = [s2, s3, s4];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f30(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsecardinal() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = input.charAt(peg$currPos);\n    if (peg$r0.test(s2)) {\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e60); }\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = input.charAt(peg$currPos);\n        if (peg$r0.test(s2)) {\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e60); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f31(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsetransitionstring() {\n    var s0;\n\n    s0 = peg$parsequotedstring();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseunquotedtransitionstring();\n    }\n\n    return s0;\n  }\n\n  function peg$parsestring() {\n    var s0;\n\n    s0 = peg$parsequotedstring();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseunquotedstring();\n    }\n\n    return s0;\n  }\n\n  function peg$parsequotedstring() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c42;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsestringcontent();\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f32(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e61); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsestringcontent() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s3 = peg$c42;\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c43) {\n        s3 = peg$c43;\n        peg$currPos += 2;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e63); }\n      }\n      if (s3 === peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e64); }\n        }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f33(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c43) {\n          s3 = peg$c43;\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e63); }\n        }\n        if (s3 === peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e64); }\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f33(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseclass_string() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c42;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseclass_stringcontent();\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f34(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e65); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseclass_stringcontent() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s3 = peg$c42;\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = input.charAt(peg$currPos);\n      if (peg$r1.test(s3)) {\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e66); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f35(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = input.charAt(peg$currPos);\n        if (peg$r1.test(s3)) {\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e66); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f35(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseunquotedtransitionstring() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parsetransitionnonsep();\n    peg$savedPos = s0;\n    s1 = peg$f36(s1);\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseunquotedstring() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parsenonsep();\n    peg$savedPos = s0;\n    s1 = peg$f37(s1);\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsenonsep() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    s3 = input.charAt(peg$currPos);\n    if (peg$r2.test(s3)) {\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e67); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e64); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f38(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      s3 = input.charAt(peg$currPos);\n      if (peg$r2.test(s3)) {\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e67); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e64); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f38(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsetransitionnonsep() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    s3 = input.charAt(peg$currPos);\n    if (peg$r3.test(s3)) {\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e68); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e64); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f39(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      s3 = input.charAt(peg$currPos);\n      if (peg$r3.test(s3)) {\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e68); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e64); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f39(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseidentifier() {\n    var s0, s1, s2;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = input.charAt(peg$currPos);\n    if (peg$r4.test(s2)) {\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e70); }\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = input.charAt(peg$currPos);\n        if (peg$r4.test(s2)) {\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e70); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f40(s1);\n    }\n    s0 = s1;\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsequotedstring();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e69); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsewhitespace() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = input.charAt(peg$currPos);\n    if (peg$r5.test(s0)) {\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e72); }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e71); }\n    }\n\n    return s0;\n  }\n\n  function peg$parselineend() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = input.charAt(peg$currPos);\n    if (peg$r6.test(s0)) {\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e74); }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e73); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomstart() {\n    var s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c44) {\n      s0 = peg$c44;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e75); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomend() {\n    var s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c45) {\n      s0 = peg$c45;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e76); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomtok() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 2) === peg$c45) {\n      s2 = peg$c45;\n      peg$currPos += 2;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e76); }\n    }\n    peg$silentFails--;\n    if (s2 === peg$FAILED) {\n      s1 = undefined;\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s2 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e64); }\n      }\n      if (s2 !== peg$FAILED) {\n        s1 = [s1, s2];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomment() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsemlcomstart();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsemlcomtok();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsemlcomtok();\n      }\n      s3 = peg$parsemlcomend();\n      if (s3 !== peg$FAILED) {\n        s1 = [s1, s2, s3];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseslcomstart() {\n    var s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c46) {\n      s0 = peg$c46;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e77); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseslcomtok() {\n    var s0;\n\n    s0 = input.charAt(peg$currPos);\n    if (peg$r7.test(s0)) {\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e78); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseslcomment() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseslcomstart();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseslcomtok();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseslcomtok();\n      }\n      s1 = [s1, s2];\n      s0 = s1;\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecomment() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$parseslcomment();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsemlcomment();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e79); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse_() {\n    var s0, s1;\n\n    s0 = [];\n    s1 = peg$parsewhitespace();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parselineend();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parsecomment();\n      }\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parsewhitespace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parselineend();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parsecomment();\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  if (options.peg$library) {\n    return /** @type {any} */ ({\n      peg$result,\n      peg$currPos,\n      peg$FAILED,\n      peg$maxFailExpected,\n      peg$maxFailPos\n    });\n  }\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nconst peg$allowedStartRules = [\n  \"program\"\n];\n\nexport {\n  peg$allowedStartRules as StartRules,\n  peg$SyntaxError as SyntaxError,\n  peg$parse as parse\n};\n", "import type { IStateMachine } from \"types/state-machine-cat.mjs\";\nimport { Counter } from \"../../counter.mjs\";\nimport { parse as pegParse } from \"./smcat-parser.mjs\";\n\nexport function parse(pScript: string): IStateMachine {\n  return pegParse(pScript, { counter: new Counter() });\n}\n", "/* eslint-disable security/detect-object-injection */\nimport fastxml from \"fast-xml-parser\";\nimport he from \"he\";\nimport traverse from \"neotraverse\";\nimport { Counter } from \"../../counter.mjs\";\nimport parserHelpers from \"../parser-helpers.mjs\";\nimport utl from \"../../transform/utl.mjs\";\nimport { castArray } from \"./utl.mjs\";\nimport { normalizeMachine } from \"./normalize-machine.mjs\";\n\nconst formatLabel = utl.formatLabel;\n\nfunction extractActions(pState, pActionType) {\n  return castArray(pState[pActionType]).map((pAction) => ({\n    type: pActionType === \"onexit\" ? \"exit\" : \"entry\",\n    body: he.decode(pAction).trim(),\n  }));\n}\n\nfunction extractActionsFromInvokes(pInvokeTriggers) {\n  return castArray(pInvokeTriggers).map((pInvokeTrigger) => {\n    const lId = he.decode(pInvokeTrigger.id || \"\").trim();\n\n    return {\n      type: \"activity\",\n      body: lId || he.decode(pInvokeTrigger || \"\").trim(),\n    };\n  });\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @returns {any[]}\n */\nfunction deriveActions(pState) {\n  let lReturnValue = [];\n\n  if (pState.onentry) {\n    lReturnValue = lReturnValue.concat(extractActions(pState, \"onentry\"));\n  }\n  if (pState.invoke) {\n    lReturnValue = lReturnValue.concat(\n      extractActionsFromInvokes(pState.invoke),\n    );\n  }\n  if (pState.onexit) {\n    lReturnValue = lReturnValue.concat(extractActions(pState, \"onexit\"));\n  }\n  return lReturnValue;\n}\n\n/**\n * @param {import(\"../../..\").StateType} pType\n * @param {import(\"./scxml\").ISCXMLHistoryState} pState\n * @param {any} pState\n * @returns {import(\"../../..\").StateType}\n */\nfunction deriveStateType(pType, pState) {\n  return pType === \"history\" && pState.type === \"deep\" ? \"deephistory\" : pType;\n}\n\n/**\n * @param {import(\"../../../types/state-machine-cat\").StateType} pType\n * @returns {(any) => import(\"../../..\").IState}\n */\nfunction mapState(pType) {\n  return (pState) => {\n    /** @type {import(\"../../../types/state-machine-cat\").IState} */\n    const lReturnValue = {\n      name: pState.id,\n      type: deriveStateType(pType, pState),\n    };\n\n    if (parserHelpers.getStateType(pState.id) !== lReturnValue.type) {\n      lReturnValue.typeExplicitlySet = true;\n    }\n    if (pState.onentry || pState.onexit || pState.invoke) {\n      lReturnValue.actions = deriveActions(pState);\n    }\n    if (\n      Object.keys(pState).some((pKey) =>\n        [\"initial\", \"state\", \"history\", \"parallel\", \"final\"].includes(pKey),\n      )\n    ) {\n      // recursion, so ...\n      // eslint-disable-next-line no-use-before-define\n      lReturnValue.statemachine = mapMachine(pState);\n    }\n    return lReturnValue;\n  };\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{event?: string; cond?: string; action?: string; type?: string;}}\n */\nfunction extractTransitionAttributesFromObject(pTransition) {\n  const lReturnValue = {};\n\n  if (pTransition.event) {\n    // SCXML uses spaces to distinguish multiple events\n    // the smcat ast uses linebreaks\n    lReturnValue.event = pTransition.event.split(/\\s+/).join(\"\\n\");\n  }\n  if (pTransition.cond) {\n    lReturnValue.cond = pTransition.cond;\n  }\n  if (pTransition[\"#text\"]) {\n    lReturnValue.action = he.decode(pTransition[\"#text\"]).trim();\n  }\n\n  if (pTransition.type) {\n    lReturnValue.type = pTransition.type;\n  }\n\n  return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{action?: string; label?: string;event?: string; cond?: string; type?: string}}\n */\nfunction extractTransitionAttributes(pTransition) {\n  const lReturnValue = {};\n\n  if (typeof pTransition === \"string\") {\n    lReturnValue.action = he.decode(pTransition).trim();\n  } else {\n    Object.assign(\n      lReturnValue,\n      extractTransitionAttributesFromObject(pTransition),\n    );\n  }\n\n  const lLabel = formatLabel(\n    lReturnValue.event,\n    lReturnValue.cond,\n    lReturnValue.action,\n  );\n\n  if (lLabel) {\n    lReturnValue.label = lLabel;\n  }\n\n  return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n */\nfunction reduceTransition(pState, pCounter) {\n  /**\n   * @param {import(\"./scxml\").ISCXMLTransition[]} pAllTransitions\n   * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n   * @returns {import(\"../../..\").ITransition}\n   */\n  return (pAllTransitions, pTransition) => {\n    // in SCXML spaces denote references to multiple states\n    // => split into multiple transitions\n    const lTargets = (pTransition?.target ?? pState.id).split(/\\s+/);\n    const lTransitionAttributes = extractTransitionAttributes(pTransition);\n\n    return pAllTransitions.concat(\n      lTargets.map((pTarget) => ({\n        id: pCounter.next(),\n        from: pState.id,\n        // a 'target-less transition' is typically\n        // a self-transition\n        to: pTarget,\n        ...lTransitionAttributes,\n      })),\n    );\n  };\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState[]} pStates\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n * @returns {import(\"../../../types/state-machine-cat\").ITransition[]}\n */\nfunction extractTransitions(pStates, pCounter) {\n  return pStates\n    .filter((pState) => Object.hasOwn(pState, \"transition\"))\n    .reduce((pAllTransitions, pThisState) => {\n      const lTransitionAsArray = castArray(pThisState.transition);\n      return pAllTransitions.concat(\n        lTransitionAsArray.reduce(reduceTransition(pThisState, pCounter), []),\n      );\n    }, []);\n}\n\n/**\n * @param {any} pSCXMLStateMachine\n * @returns {import(\"../../..\").IStateMachine}\n */\nfunction mapMachine(pSCXMLStateMachine) {\n  const lNormalizedMachine = normalizeMachine(pSCXMLStateMachine);\n  const lReturnValue = {\n    states: lNormalizedMachine.initial\n      .map(mapState(\"initial\"))\n      .concat(lNormalizedMachine.state.map(mapState(\"regular\")))\n      .concat(lNormalizedMachine.parallel.map(mapState(\"parallel\")))\n      .concat(lNormalizedMachine.history.map(mapState(\"history\")))\n      .concat(lNormalizedMachine.final.map(mapState(\"final\"))),\n  };\n  const lCounter = new Counter();\n\n  const lTransitions = extractTransitions(lNormalizedMachine.initial, lCounter)\n    .concat(extractTransitions(lNormalizedMachine.state, lCounter))\n    .concat(extractTransitions(lNormalizedMachine.parallel, lCounter));\n\n  if (lTransitions.length > 0) {\n    lReturnValue.transitions = lTransitions;\n  }\n\n  return lReturnValue;\n}\n\n/**\n * This funky looking replace  exists to make the output of the fast-xml-parser\n * backwards compatible with its version 3 that in case of conflicts between\n * attribute names and tag names gave preference to the attribute name (version 4\n * does the opposite). The previous behaviour was undocumented and for fast-xml-parser\n * likely a kind of edge case (normal people probably don't pass an empty attributeNamePrefix).\n *\n * @param {any} pObject\n * @param {string} pAttributeNamePrefix\n * @returns {any} the object, but\n * - with attributes that have the same name as tags in the same parent removed,\n * - attributes that don't have an equally named tag get their key renamed back\n *   to the one without the pAttributeNamePrefix\n */\nfunction deDuplicateAttributesAndTags(pObject, pAttributeNamePrefix) {\n  // - 'traverse' relies on the 'this' property a 'normal' function provides,\n  //   so this is not an arrow function.\n  // - while it looks iffy to have a map function without a return statement\n  //   it's canonical traverse use (as per https://github.com/ljharb/js-traverse/blob/v0.6.7/README.md)\n  // eslint-disable-next-line array-callback-return\n  return traverse(pObject).map(function deDuplicate() {\n    if (this.key?.startsWith(pAttributeNamePrefix)) {\n      const pUnPrefixedAttributeName = this.key.slice(\n        pAttributeNamePrefix.length,\n      );\n      if (this.parent.keys.includes(pUnPrefixedAttributeName)) {\n        this.remove();\n      } else {\n        this.parent.node[pUnPrefixedAttributeName] = this.node;\n        this.remove();\n      }\n    }\n  });\n}\n\n/**\n * Parses SCXML into a state machine AST.\n *\n * @param {string} pSCXMLString The SCXML to parse\n * @returns {import(\"../../../types/state-machine-cat\").IStateMachine} state machine AST\n */\nexport function parse(pSCXMLString) {\n  const lTrimmedSCXMLString = pSCXMLString.trim();\n  const lAttributeNamePrefix = \"@_\";\n  /** @type {import(\"./scxml\").ISCXMLAsJSON} */\n  let lXMLAsJSON = {};\n\n  const lXMLParser = new fastxml.XMLParser({\n    attributeNamePrefix: lAttributeNamePrefix,\n    ignoreAttributes: false,\n    parseTagValue: true,\n    processEntities: false,\n    tagValueProcessor: (_pTagName, pTagValue) => he.decode(pTagValue),\n    stopNodes: [\"*.onentry\", \"*.onexit\", \"*.transition\"],\n  });\n\n  try {\n    lXMLAsJSON = deDuplicateAttributesAndTags(\n      lXMLParser.parse(lTrimmedSCXMLString, true),\n      lAttributeNamePrefix,\n    );\n  } catch (pError) {\n    throw new Error(\"That doesn't look like valid xml ...\\n\");\n  }\n  return mapMachine(\n    lXMLAsJSON?.scxml ?? {\n      xmlns: \"http://www.w3.org/2005/07/scxml\",\n      version: \"1.0\",\n    },\n  );\n}\n", "// src/index.ts\nvar to_string = (obj) => Object.prototype.toString.call(obj);\nvar is_typed_array = (value) => ArrayBuffer.isView(value) && !(value instanceof DataView);\nvar is_date = (obj) => to_string(obj) === \"[object Date]\";\nvar is_regexp = (obj) => to_string(obj) === \"[object RegExp]\";\nvar is_error = (obj) => to_string(obj) === \"[object Error]\";\nvar is_boolean = (obj) => to_string(obj) === \"[object Boolean]\";\nvar is_number = (obj) => to_string(obj) === \"[object Number]\";\nvar is_string = (obj) => to_string(obj) === \"[object String]\";\nvar is_array = Array.isArray;\nvar gopd = Object.getOwnPropertyDescriptor;\nvar is_property_enumerable = Object.prototype.propertyIsEnumerable;\nvar get_own_property_symbols = Object.getOwnPropertySymbols;\nvar has_own_property = Object.prototype.hasOwnProperty;\nfunction own_enumerable_keys(obj) {\n  const res = Object.keys(obj);\n  const symbols = get_own_property_symbols(obj);\n  for (let i = 0; i < symbols.length; i++) {\n    if (is_property_enumerable.call(obj, symbols[i])) {\n      res.push(symbols[i]);\n    }\n  }\n  return res;\n}\nfunction is_writable(object, key) {\n  return !gopd(object, key)?.writable;\n}\nfunction copy(src, options) {\n  if (typeof src === \"object\" && src !== null) {\n    let dst;\n    if (is_array(src)) {\n      dst = [];\n    } else if (is_date(src)) {\n      dst = new Date(src.getTime ? src.getTime() : src);\n    } else if (is_regexp(src)) {\n      dst = new RegExp(src);\n    } else if (is_error(src)) {\n      dst = { message: src.message };\n    } else if (is_boolean(src) || is_number(src) || is_string(src)) {\n      dst = Object(src);\n    } else if (is_typed_array(src)) {\n      return src.slice();\n    } else {\n      dst = Object.create(Object.getPrototypeOf(src));\n    }\n    const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n    for (const key of iterator_function(src)) {\n      dst[key] = src[key];\n    }\n    return dst;\n  }\n  return src;\n}\nvar empty_null = {\n  includeSymbols: false,\n  immutable: false\n};\nfunction walk(root, cb, options = empty_null) {\n  const path = [];\n  const parents = [];\n  let alive = true;\n  const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n  const immutable = !!options.immutable;\n  return function walker(node_) {\n    const node = immutable ? copy(node_, options) : node_;\n    const modifiers = {};\n    let keep_going = true;\n    const state = {\n      node,\n      node_,\n      path: [].concat(path),\n      parent: parents[parents.length - 1],\n      parents,\n      key: path[path.length - 1],\n      isRoot: path.length === 0,\n      level: path.length,\n      circular: void 0,\n      isLeaf: false,\n      notLeaf: true,\n      notRoot: true,\n      isFirst: false,\n      isLast: false,\n      update: function(x, stopHere = false) {\n        if (!state.isRoot) {\n          state.parent.node[state.key] = x;\n        }\n        state.node = x;\n        if (stopHere) {\n          keep_going = false;\n        }\n      },\n      delete: function(stopHere) {\n        delete state.parent.node[state.key];\n        if (stopHere) {\n          keep_going = false;\n        }\n      },\n      remove: function(stopHere) {\n        if (is_array(state.parent.node)) {\n          state.parent.node.splice(state.key, 1);\n        } else {\n          delete state.parent.node[state.key];\n        }\n        if (stopHere) {\n          keep_going = false;\n        }\n      },\n      keys: null,\n      before: function(f) {\n        modifiers.before = f;\n      },\n      after: function(f) {\n        modifiers.after = f;\n      },\n      pre: function(f) {\n        modifiers.pre = f;\n      },\n      post: function(f) {\n        modifiers.post = f;\n      },\n      stop: function() {\n        alive = false;\n      },\n      block: function() {\n        keep_going = false;\n      }\n    };\n    if (!alive) {\n      return state;\n    }\n    function update_state() {\n      if (typeof state.node === \"object\" && state.node !== null) {\n        if (!state.keys || state.node_ !== state.node) {\n          state.keys = iterator_function(state.node);\n        }\n        state.isLeaf = state.keys.length === 0;\n        for (let i = 0; i < parents.length; i++) {\n          if (parents[i].node_ === node_) {\n            state.circular = parents[i];\n            break;\n          }\n        }\n      } else {\n        state.isLeaf = true;\n        state.keys = null;\n      }\n      state.notLeaf = !state.isLeaf;\n      state.notRoot = !state.isRoot;\n    }\n    update_state();\n    const ret = cb.call(state, state.node);\n    if (ret !== void 0 && state.update) {\n      state.update(ret);\n    }\n    if (modifiers.before) {\n      modifiers.before.call(state, state.node);\n    }\n    if (!keep_going) {\n      return state;\n    }\n    if (typeof state.node === \"object\" && state.node !== null && !state.circular) {\n      parents.push(state);\n      update_state();\n      for (const [index, key] of Object.entries(state.keys ?? [])) {\n        path.push(key);\n        if (modifiers.pre) {\n          modifiers.pre.call(state, state.node[key], key);\n        }\n        const child = walker(state.node[key]);\n        if (immutable && has_own_property.call(state.node, key) && !is_writable(state.node, key)) {\n          state.node[key] = child.node;\n        }\n        child.isLast = state.keys?.length ? +index === state.keys.length - 1 : false;\n        child.isFirst = +index === 0;\n        if (modifiers.post) {\n          modifiers.post.call(state, child);\n        }\n        path.pop();\n      }\n      parents.pop();\n    }\n    if (modifiers.after) {\n      modifiers.after.call(state, state.node);\n    }\n    return state;\n  }(root).node;\n}\nvar Traverse = class {\n  // ! Have to keep these public as legacy mode requires them\n  #value;\n  #options;\n  constructor(obj, options = empty_null) {\n    this.#value = obj;\n    this.#options = options;\n  }\n  /**\n   * Get the element at the array `path`.\n   */\n  get(paths) {\n    let node = this.#value;\n    for (let i = 0; node && i < paths.length; i++) {\n      const key = paths[i];\n      if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n        return void 0;\n      }\n      node = node[key];\n    }\n    return node;\n  }\n  /**\n   * Return whether the element at the array `path` exists.\n   */\n  has(paths) {\n    let node = this.#value;\n    for (let i = 0; node && i < paths.length; i++) {\n      const key = paths[i];\n      if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n        return false;\n      }\n      node = node[key];\n    }\n    return true;\n  }\n  /**\n   * Set the element at the array `path` to `value`.\n   */\n  set(path, value) {\n    let node = this.#value;\n    let i = 0;\n    for (i = 0; i < path.length - 1; i++) {\n      const key = path[i];\n      if (!has_own_property.call(node, key)) {\n        node[key] = {};\n      }\n      node = node[key];\n    }\n    node[path[i]] = value;\n    return value;\n  }\n  /**\n   * Execute `fn` for each node in the object and return a new object with the results of the walk. To update nodes in the result use `this.update(value)`.\n   */\n  map(cb) {\n    return walk(this.#value, cb, {\n      immutable: true,\n      includeSymbols: !!this.#options.includeSymbols\n    });\n  }\n  /**\n   * Execute `fn` for each node in the object but unlike `.map()`, when `this.update()` is called it updates the object in-place.\n   */\n  forEach(cb) {\n    this.#value = walk(this.#value, cb, this.#options);\n    return this.#value;\n  }\n  /**\n   * For each node in the object, perform a [left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function)) with the return value of `fn(acc, node)`.\n   *\n   * If `init` isn't specified, `init` is set to the root object for the first step and the root element is skipped.\n   */\n  reduce(cb, init) {\n    const skip = arguments.length === 1;\n    let acc = skip ? this.#value : init;\n    this.forEach(function(x) {\n      if (!this.isRoot || !skip) {\n        acc = cb.call(this, acc, x);\n      }\n    });\n    return acc;\n  }\n  /**\n   * Return an `Array` of every possible non-cyclic path in the object.\n   * Paths are `Array`s of string keys.\n   */\n  paths() {\n    const acc = [];\n    this.forEach(function() {\n      acc.push(this.path);\n    });\n    return acc;\n  }\n  /**\n   * Return an `Array` of every node in the object.\n   */\n  nodes() {\n    const acc = [];\n    this.forEach(function() {\n      acc.push(this.node);\n    });\n    return acc;\n  }\n  /**\n   * Create a deep clone of the object.\n   */\n  clone() {\n    const parents = [];\n    const nodes = [];\n    const options = this.#options;\n    if (is_typed_array(this.#value)) {\n      return this.#value.slice();\n    }\n    return function clone(src) {\n      for (let i = 0; i < parents.length; i++) {\n        if (parents[i] === src) {\n          return nodes[i];\n        }\n      }\n      if (typeof src === \"object\" && src !== null) {\n        const dst = copy(src, options);\n        parents.push(src);\n        nodes.push(dst);\n        const iteratorFunction = options.includeSymbols ? own_enumerable_keys : Object.keys;\n        for (const key of iteratorFunction(src)) {\n          dst[key] = clone(src[key]);\n        }\n        parents.pop();\n        nodes.pop();\n        return dst;\n      }\n      return src;\n    }(this.#value);\n  }\n};\nvar traverse = (obj, options) => {\n  return new Traverse(obj, options);\n};\ntraverse.get = (obj, paths, options) => {\n  return new Traverse(obj, options).get(paths);\n};\ntraverse.set = (obj, path, value, options) => {\n  return new Traverse(obj, options).set(path, value);\n};\ntraverse.has = (obj, paths, options) => {\n  return new Traverse(obj, options).has(paths);\n};\ntraverse.map = (obj, cb, options) => {\n  return new Traverse(obj, options).map(cb);\n};\ntraverse.forEach = (obj, cb, options) => {\n  return new Traverse(obj, options).forEach(cb);\n};\ntraverse.reduce = (obj, cb, init, options) => {\n  return new Traverse(obj, options).reduce(cb, init);\n};\ntraverse.paths = (obj, options) => {\n  return new Traverse(obj, options).paths();\n};\ntraverse.nodes = (obj, options) => {\n  return new Traverse(obj, options).nodes();\n};\ntraverse.clone = (obj, options) => {\n  return new Traverse(obj, options).clone();\n};\nvar src_default = traverse;\nexport {\n  Traverse,\n  src_default as default\n};\n", "function formatLabel(\n  pEvent?: string,\n  pCond?: string,\n  pActions?: string,\n): string {\n  let lReturnValue = \"\";\n\n  if (pEvent) {\n    lReturnValue += pEvent;\n  }\n  if (pCond) {\n    lReturnValue += ` [${pCond}]`;\n  }\n  if (pActions) {\n    lReturnValue += `/ ${pActions}`;\n  }\n  return lReturnValue.trim();\n}\n\nexport default {\n  formatLabel,\n};\n", "export function castArray(pAThing: unknown): Array {\n  return Array.isArray(pAThing) ? pAThing : [pAThing];\n}\n", "import { castArray } from \"./utl.mjs\";\nimport type { INormalizedSCXMLMachine, ISCXMLInitialState } from \"./scxml.js\";\n\nfunction normalizeInitialFromObject(\n  pInitialObject: Partial,\n  pId: string,\n): ISCXMLInitialState {\n  const lReturnValue = {\n    // ensure the 'initial' state has a unique name\n    id: pId ? `${pId}.initial` : \"initial\",\n  };\n\n  if (pInitialObject.transition) {\n    Object.assign(lReturnValue, {\n      transition: [pInitialObject.transition],\n    });\n  }\n\n  return lReturnValue;\n}\n\nfunction normalizeInitialFromString(pString: string): ISCXMLInitialState {\n  return {\n    id: \"initial\",\n    transition: [\n      {\n        target: pString,\n      },\n    ],\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalizeInitial(pMachine: any): ISCXMLInitialState[] {\n  const lReturnValue = [];\n\n  if (pMachine.initial) {\n    if (typeof pMachine.initial === \"string\") {\n      lReturnValue.push(normalizeInitialFromString(pMachine.initial));\n    } else {\n      lReturnValue.push(\n        normalizeInitialFromObject(pMachine.initial, pMachine.id),\n      );\n    }\n  }\n  return lReturnValue;\n}\n\n/**\n * Massages SCXML-as-json to be uniform:\n *\n * @param pMachine SCXML-as-json state machine\n * @returns Still an SCXML-as-json state machine,\n * but more consistent and easier to use\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nexport function normalizeMachine(pMachine: any): INormalizedSCXMLMachine {\n  return {\n    ...pMachine,\n    initial: normalizeInitial(pMachine),\n    state: castArray(pMachine?.state ?? []),\n    parallel: castArray(pMachine?.parallel ?? []),\n    history: castArray(pMachine?.history ?? []),\n    final: castArray(pMachine?.final ?? []),\n  };\n}\n", "export default {\n  $schema: \"http://json-schema.org/draft-07/schema#\",\n  title: \"state-machine-cat abstract syntax tree schema\",\n  $ref: \"#/definitions/StateMachineType\",\n  $id: \"org.js.state-machine-cat/v7.4.0\",\n  definitions: {\n    StateType: {\n      type: \"string\",\n      enum: [\n        \"regular\",\n        \"initial\",\n        \"terminate\",\n        \"final\",\n        \"parallel\",\n        \"history\",\n        \"deephistory\",\n        \"choice\",\n        \"forkjoin\",\n        \"fork\",\n        \"join\",\n        \"junction\",\n      ],\n    },\n    TransitionType: {\n      type: \"string\",\n      enum: [\"internal\", \"external\"],\n    },\n    NoteType: {\n      type: \"array\",\n      items: {\n        type: \"string\",\n      },\n    },\n    ActionTypeType: {\n      type: \"string\",\n      enum: [\"entry\", \"activity\", \"exit\"],\n    },\n    ActionType: {\n      type: \"object\",\n      required: [\"type\", \"body\"],\n      additionalProperties: false,\n      properties: {\n        type: { $ref: \"#/definitions/ActionTypeType\" },\n        body: { type: \"string\" },\n      },\n    },\n    ClassType: {\n      type: \"string\",\n      pattern: \"^[a-zA-Z0-9_\\\\- ]*$\",\n    },\n    StateMachineType: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"states\"],\n      properties: {\n        states: {\n          type: \"array\",\n          items: {\n            type: \"object\",\n            required: [\"name\", \"type\"],\n            additionalProperties: false,\n            properties: {\n              name: {\n                description:\n                  \"The name and identifier of the state. Unique within the root state machine.\",\n                type: \"string\",\n              },\n              type: {\n                description:\n                  \"What kind of state (or pseudo state) this state is. E.g. 'regular' for normal states or 'initial', 'final', 'choice' etc for pseudo states. Most UML (pseudo-) states are supported.\",\n                $ref: \"#/definitions/StateType\",\n              },\n              label: {\n                description:\n                  \"The display label of the state. If it's not present, most renderers will use the states' name in stead.\",\n                type: \"string\",\n              },\n              color: {\n                description:\n                  'Color to use for rendering the state. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n                type: \"string\",\n              },\n              class: {\n                description:\n                  \"Class name to give the state in dot and svg output.\",\n                $ref: \"#/definitions/ClassType\",\n              },\n              active: {\n                description:\n                  \"If true the state is considered to be active and rendered as such.\",\n                type: \"boolean\",\n              },\n              typeExplicitlySet: {\n                description:\n                  \"The default parser derives the `type` from the `name` with inband signaling. The user can override that behavior by explicitly setting the `type`. This attribute is there to express that (and make sure that on next parses & processing it doesn't get accidentily re-derived from the name again).\",\n                type: \"boolean\",\n              },\n              isComposite: {\n                description:\n                  \"convenience, derived attribute - set to true if there's a state machine inside the state; false in all other cases. For internal use - @deprecated\",\n                type: \"boolean\",\n              },\n              actions: {\n                type: \"array\",\n                description:\n                  \"A series of actions and their types. The type describe when the action takes place (on entry, exit, or otherwise ('activity'))\",\n                items: { $ref: \"#/definitions/ActionType\" },\n              },\n              note: {\n                description:\n                  \"Comments related to this state. Some renderers will use the note attribute to render a note (i.e. as a post-it) attached to the state.\",\n                $ref: \"#/definitions/NoteType\",\n              },\n              statemachine: {\n                description: \"state machine nested within the state.\",\n                $ref: \"#/definitions/StateMachineType\",\n              },\n            },\n          },\n        },\n        transitions: {\n          type: \"array\",\n          items: {\n            type: \"object\",\n            required: [\"id\", \"from\", \"to\"],\n            additionalProperties: false,\n            properties: {\n              id: {\n                type: \"number\",\n              },\n              from: {\n                description:\n                  \"The name of the state this transition transitions from\",\n                type: \"string\",\n              },\n              to: {\n                description:\n                  \"The name of the state this transition transitions to\",\n                type: \"string\",\n              },\n              label: {\n                description:\n                  \"A display label to represent this transition. Parsers can parse this label into events conditions and actions.\",\n                type: \"string\",\n              },\n              event: {\n                description: \"Event triggering the transition\",\n                type: \"string\",\n              },\n              cond: {\n                description: \"Condition for the transition to occur.\",\n                type: \"string\",\n              },\n              action: {\n                description: \"Action to execute when the transition occurs.\",\n                type: \"string\",\n              },\n              note: {\n                description: \"Comments related to this transition\",\n                $ref: \"#/definitions/NoteType\",\n              },\n              color: {\n                description:\n                  'Color to use for rendering the transition. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n                type: \"string\",\n              },\n              width: {\n                description:\n                  \"The line width to use for rendering the transition\",\n                type: \"number\",\n                minimum: 0,\n                maximum: 30,\n              },\n              class: {\n                description:\n                  \"Class name to give the state in dot and svg output.\",\n                $ref: \"#/definitions/ClassType\",\n              },\n              type: {\n                description:\n                  \"Whether the transition is external (default) or internal. See https://www.w3.org/TR/scxml/#transition for details.\",\n                $ref: \"#/definitions/TransitionType\",\n              },\n            },\n          },\n        },\n      },\n    },\n  },\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n  IStateMachine,\n  ITransition,\n  StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\nimport { Counter } from \"../counter.mjs\";\nimport utl from \"./utl.mjs\";\n\ntype ITransitionMap = {\n  [stateName: string]: ITransition[];\n};\n\nfunction fuseTransitionAttribute(\n  pIncomingThing: string | undefined,\n  pOutgoingThing: string,\n  pJoinChar: string,\n): string {\n  return pIncomingThing\n    ? `${pIncomingThing}${pJoinChar}${pOutgoingThing}`\n    : pOutgoingThing;\n}\n\nfunction fuseIncomingToOutgoing(\n  pIncomingTransition: ITransition,\n  pOutgoingTransition: ITransition,\n  pCounter: Counter,\n): ITransition {\n  // in:\n  // a => ]: event [condition]/ action;\n  // ] => b: event_to_b [condition_to_b]/ action to b;\n  //\n  // out:\n  // a => b: event [condition]/ action\\naction to b;\n  //\n  // events and conditions are illegal on transitions outgoing\n  // from forks, so we ignore them\n  const lReturnValue = {\n    ...pIncomingTransition,\n    ...pOutgoingTransition,\n    from: pIncomingTransition.from,\n    to: pOutgoingTransition.to,\n    id: pCounter.next(),\n  };\n\n  if (pOutgoingTransition.action) {\n    lReturnValue.action = fuseTransitionAttribute(\n      pIncomingTransition.action,\n      pOutgoingTransition.action,\n      \"\\n\",\n    );\n  }\n  if (lReturnValue.event || lReturnValue.cond || lReturnValue.action) {\n    lReturnValue.label = utl.formatLabel(\n      lReturnValue.event,\n      lReturnValue.cond,\n      lReturnValue.action,\n    );\n  }\n\n  return lReturnValue;\n}\n\nfunction fuseTransitions(\n  pTransitions: ITransition[],\n  pPseudoStateNames: string[],\n  pOutgoingTransitionMap: ITransitionMap,\n  pCounter: Counter,\n): ITransition[] {\n  return pTransitions.reduce(\n    (pAll: ITransition[], pTransition: ITransition) => {\n      pPseudoStateNames.forEach((pStateName, pIndex) => {\n        if (\n          pStateName === pTransition.to &&\n          pOutgoingTransitionMap[pStateName]\n        ) {\n          pAll = pAll.concat(\n            pOutgoingTransitionMap[pStateName].map((pOutgoingTransition) =>\n              fuseIncomingToOutgoing(\n                pTransition,\n                pOutgoingTransition,\n                pCounter,\n              ),\n            ),\n          );\n        } else {\n          pAll = pIndex === 0 ? pAll.concat(pTransition) : pAll;\n        }\n      });\n      return pAll;\n    },\n    [],\n  );\n}\n\nfunction deSugarPseudoStates(\n  pMachine: IStateMachine,\n  pPseudoStateNames: string[],\n  pOutgoingTransitionMap: ITransitionMap,\n  pCounter: Counter,\n): IStateMachine {\n  const lMachine = structuredClone(pMachine);\n\n  if (lMachine.transitions && pPseudoStateNames.length > 0) {\n    lMachine.transitions = fuseTransitions(\n      lMachine.transitions,\n      pPseudoStateNames,\n      pOutgoingTransitionMap,\n      pCounter,\n    );\n  }\n\n  lMachine.states = lMachine.states.map((pState) =>\n    pState.statemachine\n      ? {\n          ...pState,\n          statemachine: deSugarPseudoStates(\n            pState.statemachine,\n            pPseudoStateNames,\n            pOutgoingTransitionMap,\n            pCounter,\n          ),\n        }\n      : pState,\n  );\n\n  return lMachine;\n}\n\nfunction removeStatesCascading(\n  pMachine: IStateMachine,\n  pStateNames: string[],\n): IStateMachine {\n  const lMachine = structuredClone(pMachine);\n\n  if (lMachine.transitions) {\n    lMachine.transitions = lMachine.transitions.filter(\n      (pTransition) =>\n        !pStateNames.some(\n          (pJunctionStateName) =>\n            pJunctionStateName === pTransition.from ||\n            pJunctionStateName === pTransition.to,\n        ),\n    );\n  }\n\n  lMachine.states = lMachine.states\n    .filter((pState) => !pStateNames.includes(pState.name))\n    .map((pState) =>\n      pState.statemachine\n        ? {\n            ...pState,\n            statemachine: removeStatesCascading(\n              pState.statemachine,\n              pStateNames,\n            ),\n          }\n        : pState,\n    );\n  return lMachine;\n}\n\n/**\n * Takes a state machine and replaces all forks with transitions from its\n * respective inputs and outputs\n *\n * e.g.\n * ```smcat\n * a => ];\n * b => ];\n * ] => c;\n * ] => d;\n * ```\n *\n * will become\n * ```smcat\n * a => c;\n * a => d;\n * b => c;\n * b => d;\n * ```\n */\nexport default (\n  pMachine: IStateMachine,\n  pDesugarableStates: StateType[] = [\"fork\", \"junction\", \"choice\"],\n): IStateMachine => {\n  const lModel = new StateMachineModel(pMachine);\n\n  const lPseudoStateNames = lModel\n    .findStatesByTypes(pDesugarableStates)\n    .map(({ name }) => name);\n\n  const lOutgoingTransitionMap: ITransitionMap = lPseudoStateNames.reduce(\n    (pAll, pStateName) => {\n      pAll[pStateName] = lModel.findTransitionsByFrom(pStateName);\n      return pAll;\n    },\n    {},\n  );\n  const lMaximumTransitionId = lModel.getMaximumTransitionId();\n\n  const lMachine = deSugarPseudoStates(\n    pMachine,\n    lPseudoStateNames,\n    lOutgoingTransitionMap,\n    new Counter(lMaximumTransitionId),\n  );\n\n  return removeStatesCascading(lMachine, lPseudoStateNames);\n};\n", "import type {\n  IActionType,\n  IState,\n  IStateMachine,\n  IRenderOptions,\n  ITransition,\n} from \"../../types/state-machine-cat.mjs\";\n\nconst NAME_QUOTABLE = /[;,{[ ]/;\nconst ACTIONS_QUOTABLE = /[;,{}]/;\nconst LABEL_QUOTABLE = /[;{]/;\n\nconst RENDERABLE_STATE_ATTRIBUTES = [\n  \"label\",\n  \"type\",\n  \"color\",\n  \"active\",\n  \"class\",\n];\n\nconst RENDERABLE_TRANSITION_ATTRIBUTES = [\"type\", \"color\", \"class\"];\n\nfunction quoteIfNecessary(pRegExp: RegExp, pString: string): string {\n  return pRegExp.test(pString) ? `\"${pString}\"` : pString;\n}\n\nfunction stateHasExtendedAttributes(pState: IState): boolean {\n  return (\n    Object.hasOwn(pState, \"label\") ||\n    Object.hasOwn(pState, \"typeExplicitlySet\") ||\n    Object.hasOwn(pState, \"color\") ||\n    Object.hasOwn(pState, \"active\") ||\n    Object.hasOwn(pState, \"class\")\n  );\n}\n\nfunction note(pNote: string[], pIndent: string = \"\"): string {\n  return pNote.map((pNoteLine) => `${pIndent}# ${pNoteLine}`).join(\"\\n\");\n}\n\nfunction extendedAttribute(pKey: string, pValue: string): string {\n  if (pKey === \"type\") {\n    // looks a lot like the default return, but this guy's without quotes\n    return `${pKey}=${pValue}`;\n  }\n  if (pKey === \"active\") {\n    return pValue ? pKey : \"\";\n  }\n  return `${pKey}=\"${pValue}\"`;\n}\n\nfunction extendedStateAttributes(pState: IState): string {\n  return Object.entries(pState)\n    .filter(([pKey]) => RENDERABLE_STATE_ATTRIBUTES.includes(pKey))\n    .filter(([pKey]) => pKey !== \"type\" || pState.typeExplicitlySet)\n    .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n    .join(\" \");\n}\n\nfunction actions(pActions: IActionType[]): string {\n  return pActions\n    .map(\n      (pAction) =>\n        `${pAction.type === \"activity\" ? \"\" : `${pAction.type}/ `}${pAction.body}`,\n    )\n    .map((pAction) => quoteIfNecessary(ACTIONS_QUOTABLE, pAction))\n    .join(\"\\n    \");\n}\n\nfunction state(pState: IState, pIndent: string = \"\"): string {\n  let lReturnValue = pIndent + quoteIfNecessary(NAME_QUOTABLE, pState.name);\n  if (pState.note) {\n    lReturnValue = `${note(pState.note, pIndent)}\\n${lReturnValue}`;\n  }\n  if (stateHasExtendedAttributes(pState)) {\n    lReturnValue += ` [${extendedStateAttributes(pState)}]`;\n  }\n  if (pState.actions) {\n    lReturnValue += `: ${actions(pState.actions)}`;\n  }\n  if (pState.statemachine) {\n    lReturnValue += \" {\\n\";\n    // eslint-disable-next-line no-use-before-define\n    lReturnValue += renderSmcat(pState.statemachine, null, `${pIndent}    `);\n    lReturnValue += `${pIndent}}`;\n  }\n\n  return lReturnValue;\n}\n\nfunction states(pStates: IState[], pIndent: string = \"\"): string {\n  return pStates\n    .map((pState) => state(pState, pIndent))\n    .join(\",\\n\")\n    .concat(pStates.length > 0 ? \";\\n\\n\" : \"\");\n}\n\nfunction transitionHasExtendedAttributes(pTransition: ITransition): boolean {\n  return Object.entries(pTransition).some(([pKey]) =>\n    RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey),\n  );\n}\n\nfunction extendedTransitionAttributes(pTransition: ITransition): string {\n  return (\n    Object.entries(pTransition)\n      .filter(([pKey]) => RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey))\n      // lazily re-using the extendedStateAttribute function, even though it does\n      // a little more than necessary\n      .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n      .join(\" \")\n  );\n}\n\nfunction transition(pTransition: ITransition, pIndent: string = \"\"): string {\n  let lReturnValue = `${pIndent}${quoteIfNecessary(NAME_QUOTABLE, pTransition.from)} => ${quoteIfNecessary(\n    NAME_QUOTABLE,\n    pTransition.to,\n  )}`;\n  if (pTransition.note) {\n    lReturnValue = `${note(pTransition.note, pIndent)}\\n${lReturnValue}`;\n  }\n  if (transitionHasExtendedAttributes(pTransition)) {\n    lReturnValue += ` [${extendedTransitionAttributes(pTransition)}]`;\n  }\n  if (pTransition.label) {\n    lReturnValue += `: ${quoteIfNecessary(LABEL_QUOTABLE, pTransition.label)}`;\n  }\n  return lReturnValue;\n}\n\nfunction transitions(\n  pTransitions: ITransition[],\n  pIndent: string = \"\",\n): string {\n  return pTransitions\n    .map((pTransition) => `${transition(pTransition, pIndent)};\\n`)\n    .join(\"\");\n}\n\nexport default function renderSmcat(\n  pStateMachine: IStateMachine,\n  _pOptions: IRenderOptions | null = {},\n  pIndent: string = \"\",\n): string {\n  return (\n    states(pStateMachine.states, pIndent) +\n    transitions(pStateMachine.transitions || [], pIndent)\n  );\n}\n", "/* eslint-disable max-params */\n/* eslint-disable max-lines */\n/* eslint-disable no-use-before-define */\n/* eslint-disable complexity */\nimport he from \"he\";\nimport type {\n  IStateMachine,\n  IRenderOptions,\n  IState,\n  ITransition,\n  StateType,\n  IActionType,\n} from \"../../../types/state-machine-cat.mjs\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport {\n  buildGraphAttributes,\n  buildNodeAttributes,\n  buildEdgeAttributes,\n} from \"./attributebuilder.mjs\";\nimport {\n  escapeLabelString,\n  formatActionType,\n  getTransitionPorts,\n  isCompositeSelf,\n  isVertical,\n  type IStateNormalized,\n  noteToLabel,\n  normalizeState,\n  stateNote,\n} from \"./utl.mjs\";\n\nfunction initial(pState: IStateNormalized, pIndent: string): string {\n  const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n\n  return `${pIndent}  \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction regularStateActions(pActions: IActionType[], pIndent: string): string {\n  return pActions\n    .map((pAction) =>\n      he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n    )\n    .map((pActionString, pIndex) => {\n      let lReturnValue = `${pActionString}`;\n      if (pIndex === 0) {\n        lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\n// TODO: regularStateActions and compositeStateActions differ by the 'cellpadding' attribute\n// - would it hurt to add it to the composite, so we can have just one function?\n// - if not - parametrize?\nfunction compositeStateActions(\n pActions: IActionType[],\n pIndent: string,\n): string {\n return pActions\n .map((pAction) =>\n he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n )\n .map((pActionString, pIndex) => {\n let lReturnValue = `${pActionString}`;\n if (pIndex === 0) {\n lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\nfunction atomicRegular(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=1 style=rounded\" : \"\";\n // eslint-disable-next-line no-magic-numbers\n const lCellPadding = (pState.actions?.length ?? 0) > 0 ? 2 : 7;\n const lActions = regularStateActions(pState?.actions ?? [], pIndent);\n\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `\n${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n return `${pIndent} \"${pState.name}\" [margin=0 class=\"${pState.class}\" label= <${lLabelTag}\n${pIndent} >${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction compositeRegular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n // eslint-disable-next-line no-nested-ternary\n const lPenWidth = pState.isParallelArea\n ? \"1.0\"\n : pState.active\n ? \"3.0\"\n : \"2.0\";\n const lStyle = pState.isParallelArea ? \"dashed\" : \"rounded\";\n const lActions = compositeStateActions(pState?.actions ?? [], pIndent);\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n const lSelfTransitionHelperPoints = pModel\n .findExternalSelfTransitions(pState.name)\n .map(\n (pTransition) =>\n `${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [shape=point style=invis width=0 height=0 fixedsize=true]\\n`,\n )\n .join(\"\");\n\n return `${lSelfTransitionHelperPoints}${pIndent} subgraph \"cluster_${pState.name}\" {\n${pIndent} class=\"${pState.class}\" label= <\n${lLabelTag}\n${pIndent} > style=${lStyle} penwidth=${lPenWidth}${pState.colorAttribute}${pState.fontColorAttribute}\n${pIndent} \"${pState.name}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n${states(pState?.statemachine?.states ?? [], `${pIndent} `, pOptions, pModel, pRenderedTransitions)}\n${pIndent} }${pState.noteText}`;\n}\n\nfunction regular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n if (pState.statemachine) {\n return compositeRegular(\n pState,\n pIndent,\n pOptions,\n pModel,\n pRenderedTransitions,\n );\n }\n return atomicRegular(pState, pIndent);\n}\n\nfunction history(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction deepHistory(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H*\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction choiceActions(pActions: IActionType[], pActive: boolean): string {\n return pActions\n .map((pAction) => {\n let lReturnValue = he.escape(\n `${formatActionType(pAction.type)}${pAction.body}`,\n );\n if (pActive) {\n lReturnValue = `${lReturnValue}`;\n }\n return lReturnValue;\n })\n .join(\"\\\\n\");\n}\n\nfunction choice(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lActions = choiceActions(\n pState?.actions ?? [],\n pState?.active ?? false,\n );\n const lLabelTag = lActions;\n const lDiamond = `${pIndent} \"${pState.name}\" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 label=\" \" class=\"${pState.class}\"${pState.colorAttribute}${lActiveAttribute}]`;\n const lLabelConstruct = `${pIndent} \"${pState.name}\" -> \"${pState.name}\" [color=\"#FFFFFF01\" fontcolor=\"${pState.color}\" class=\"${pState.class}\" label=<${lLabelTag}>]`;\n\n return `${lDiamond}\\n${lLabelConstruct}${pState.noteText}`;\n}\n\nfunction forkjoin(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n const lSizingExtras = isVertical(lDirection) ? \" height=0.1\" : \" width=0.1\";\n\n return `${pIndent} \"${pState.name}\" [shape=rect fixedsize=true label=\" \" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}${lSizingExtras}]${pState.noteText}`;\n}\n\nfunction junction(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n const lNote = stateNote(pState, pIndent);\n\n return `${pIndent} \"${pState.name}\" [shape=circle fixedsize=true height=0.15 label=\"\" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}]${lNote}`;\n}\n\nfunction terminate(pState: IStateNormalized, pIndent: string): string {\n const lLabelTag = `\n${pIndent} \n${pIndent} \n${pIndent} \n${pIndent}
X
${pState.label}
`;\n\n return `${pIndent} \"${pState.name}\" [label= <${lLabelTag}\n${pIndent} > class=\"${pState.class}\"]${pState.noteText}`;\n}\n\nfunction final(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 peripheries=2 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n// @ts-expect-error - TS is yapping about something that just works :shrug:\nconst STATE_TYPE2FUNCTION = new Map<\n StateType,\n (\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel?: StateMachineModel,\n ) => string\n>([\n [\"initial\", initial],\n [\"regular\", regular],\n [\"history\", history],\n [\"deephistory\", deepHistory],\n [\"choice\", choice],\n [\"fork\", forkjoin],\n [\"forkjoin\", forkjoin],\n [\"join\", forkjoin],\n [\"junction\", junction],\n [\"terminate\", terminate],\n [\"final\", final],\n // parallel\n]);\n\nfunction state(\n pState: IState,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n const lState = normalizeState(pState, pOptions, pIndent);\n const lCandidateTransitions = pModel.findTransitionsToSiblings(\n pState.name,\n pRenderedTransitions,\n );\n lCandidateTransitions.forEach((pTransition) => {\n pRenderedTransitions.add(pTransition.id);\n });\n const lTransitions = transitions(\n lCandidateTransitions,\n pIndent,\n pOptions,\n pModel,\n );\n\n return (\n // eslint-disable-next-line prefer-template\n (STATE_TYPE2FUNCTION.get(pState.type) ?? regular)(\n lState,\n pIndent,\n pOptions,\n pModel,\n pRenderedTransitions,\n ) +\n lTransitions +\n \"\\n\"\n );\n}\n\nfunction states(\n pStates: IState[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n return pStates\n .map((pState) =>\n state(pState, pIndent, pOptions, pModel, pRenderedTransitions),\n )\n .join(\"\");\n}\n\n// eslint-disable-next-line max-statements, max-lines-per-function\nfunction transition(\n pTransition: ITransition,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n // TODO: should also be he.escape'd?\n const lLabel = `${escapeLabelString(pTransition.label ?? \" \")}`;\n // using a default color (`pTransition.color ?? \"black\"`) makes the output\n // look more consistent and easier to check, but it also blocks the 'inheritance'\n //\n const lColorAttribute = pTransition.color\n ? ` color=\"${pTransition.color}\"`\n : \"\";\n const lFontColorAttribute = pTransition.color\n ? ` fontcolor=\"${pTransition.color}\"`\n : \"\";\n const lPenWidth = pTransition.width ? ` penwidth=${pTransition.width}` : \"\";\n const lClass = pTransition.class\n ? // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type + \" \" : \" \"}${pTransition.class}`\n : // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type : \"\"}`;\n // for transitions to/ from composite states put the _cluster_ as the head\n // instead of the state itself\n const lTail = pModel.findStateByName(pTransition.from)?.statemachine\n ? ` ltail=\"cluster_${pTransition.from}\"`\n : \"\";\n const lHead = pModel.findStateByName(pTransition.to)?.statemachine\n ? ` lhead=\"cluster_${pTransition.to}\"`\n : \"\";\n const lTransitionName = `tr_${pTransition.from}_${pTransition.to}_${pTransition.id}`;\n\n if (isCompositeSelf(pModel, pTransition)) {\n // for self-transitions to/ from composite states ensure the transition leaves\n // and enters to/ from the right side of the state\n const { lTailPorts, lHeadPorts } = getTransitionPorts(\n pOptions,\n pModel,\n pTransition,\n );\n // as for composite self-transitions the transition is already split, we just\n // have to connect any note to that same split point\n let lNoteAndLine = \"\";\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lLineToNote = `\\n${pIndent} \"${lNoteName}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n lNoteAndLine = lLineToNote + lNote;\n }\n\n // the invisible 'self' node is declared with the state (so not here). If we\n // do it later than in the state the transition is guaranteed to look ugly.\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [label=\"${lLabel}\" arrowhead=none class=\"${lClass}\"${lTailPorts}${lTail}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" -> \"${pTransition.to}\" [class=\"${lClass}\"${lHead}${lHeadPorts}${lColorAttribute}${lPenWidth}]`;\n return lTransitionFrom + lTransitionTo + lNoteAndLine;\n }\n\n // to attach a note, split the transition in half, reconnect them via an\n // in-between point and connect the note to that in-between point as well\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lNoteNodeName = `i_${lNoteName}`;\n const lNoteNode = `\\n${pIndent} \"${lNoteNodeName}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]`;\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"${lNoteNodeName}\" [arrowhead=none${lTail}${lColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${pTransition.to}\" [label=\"${lLabel}\"${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lLineToNote = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n return lNoteNode + lTransitionFrom + lTransitionTo + lLineToNote + lNote;\n }\n\n return `\\n${pIndent} \"${pTransition.from}\" -> \"${pTransition.to}\" [label=\"${lLabel}\" class=\"${lClass}\"${lTail}${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n}\n\nfunction transitions(\n pTransitions: ITransition[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n return pTransitions\n .map((pTransition) => transition(pTransition, pIndent, pOptions, pModel))\n .join(\"\");\n}\n\n// eslint-disable-next-line max-lines-per-function\nexport default function renderDot(\n pStateMachine: IStateMachine,\n pOptions: IRenderOptions = {},\n pIndent: string = \"\",\n): string {\n const lGraphAttributes = buildGraphAttributes(\n getOptionValue(pOptions, \"engine\") as string,\n getOptionValue(pOptions, \"direction\") as string,\n pOptions?.dotGraphAttrs || [],\n );\n const lNodeAttributes = buildNodeAttributes(pOptions.dotNodeAttrs || []);\n const lEdgeAttributes = buildEdgeAttributes(pOptions.dotEdgeAttrs || []);\n const lModel = new StateMachineModel(pStateMachine);\n const lRenderedTransitions: Set = new Set();\n const lStates = states(\n pStateMachine.states,\n pIndent,\n pOptions,\n lModel,\n lRenderedTransitions,\n );\n // ideally, we render transitions together with the states. However, in graphviz\n // that only renders as we want to if we if the transition is _within_ the state.\n // In this guy 'a' is rendered within cluster_b, though\n // digraph {\n // a\n // subgraph \"cluster_b\" {\n // label=b\n // ba\n // ba -> a\n // }\n // }\n // This is documented and defined behavior in graphviz, so we will have to\n // work around that...\n // - one way is to render all transitions separately in one go which (accidentally)\n // did in the previous render engine. That is guaranteed to work, but\n // some transitions might look ugly (i.e. when attaching a note the note\n // and the intermediate node will be in the outer state)\n // - Another way would be to render the transitions in the most outer state of\n // the (to, from). This is a nice idea, but it's not guaranteed to work\n // because how the graphviz engine works. If there's a transition defined in\n // state A to substate BB of state B, it will only show up if BB is already\n // declared in the graph. If it's not, the transition will be ignored.\n // - The compromise we landed with is to\n // 1. Render transitions within a composite state if _both_ ends of the transition\n // are in that state (see the state function above). That means at least\n // comments on transitions for these will look a bit nicer.\n // 2. Render all other transitions separately (below)\n const lRemainingTransitions = transitions(\n lModel.flattenedTransitions.filter(\n (pTransition) => !lRenderedTransitions.has(pTransition.id),\n ),\n pIndent,\n pOptions,\n lModel,\n );\n\n return `digraph \"state transitions\" {\n ${lGraphAttributes}\n node [${lNodeAttributes}]\n edge [${lEdgeAttributes}]\n\n${lStates}${lRemainingTransitions}\n}\n`;\n}\n", "/* eslint-disable security/detect-object-injection */\ninterface INameValuePair {\n name: string;\n value: string | number;\n}\nconst GENERIC_GRAPH_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: '\"Helvetica\"' },\n { name: \"fontsize\", value: \"12\" },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst GRAPH_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n dot: [\n { name: \"splines\", value: \"true\" },\n { name: \"ordering\", value: \"out\" },\n { name: \"compound\", value: \"true\" },\n { name: \"overlap\", value: \"scale\" },\n { name: \"nodesep\", value: \"0.3\" },\n { name: \"ranksep\", value: \"0.1\" },\n ],\n fdp: [{ name: \"K\", value: \"0.9\" }],\n osage: [{ name: \"pack\", value: \"42\" }],\n neato: [{ name: \"epsilon\", value: \"0.9\" }],\n};\n\nconst DIRECTION_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n \"bottom-top\": [{ name: \"rankdir\", value: \"BT\" }],\n \"left-right\": [{ name: \"rankdir\", value: \"LR\" }],\n \"right-left\": [{ name: \"rankdir\", value: \"RL\" }],\n};\n\nconst NODE_ATTRIBUTES: INameValuePair[] = [\n { name: \"shape\", value: \"plaintext\" },\n { name: \"style\", value: \"filled\" },\n { name: \"fillcolor\", value: '\"#FFFFFF01\"' },\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 12 },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst EDGE_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 10 },\n];\n\nfunction toNameValueString(pAttribute: INameValuePair): string {\n return `${pAttribute.name}=${pAttribute.value}`;\n}\n\nexport function buildGraphAttributes(\n pEngine: string,\n pDirection: string,\n pDotGraphAttributes?: INameValuePair[],\n): string {\n return GENERIC_GRAPH_ATTRIBUTES.concat(GRAPH_ATTRIBUTES[pEngine] || [])\n .concat(DIRECTION_ATTRIBUTES[pDirection] || [])\n .concat(pDotGraphAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildNodeAttributes(\n pDotNodeAttributes?: INameValuePair[],\n): string {\n return NODE_ATTRIBUTES.concat(pDotNodeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildEdgeAttributes(\n pDotEdgeAttributes?: INameValuePair[],\n): string {\n return EDGE_ATTRIBUTES.concat(pDotEdgeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport default {\n buildGraphAttributes,\n buildNodeAttributes,\n buildEdgeAttributes,\n};\n", "import he from \"he\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport type {\n dotAttributesType,\n IRenderOptions,\n IState,\n ITransition,\n} from \"../../../types/state-machine-cat.mjs\";\nimport type StateMachineModel from \"../../state-machine-model.mjs\";\n\n// eslint-disable-next-line complexity\nfunction getStateColor(\n pState: IState,\n pNodeAttributes?: dotAttributesType,\n): string {\n const lNodeColor = (pNodeAttributes || []).find(\n (pAttribute) => pAttribute.name === \"color\",\n )?.value;\n\n if (\n lNodeColor &&\n !pState.color &&\n [\n \"initial\",\n \"fork\",\n \"join\",\n \"junction\",\n \"forkjoin\",\n \"terminate\",\n \"final\",\n ].includes(pState.type)\n ) {\n return lNodeColor;\n }\n return pState.color ?? \"black\";\n}\n\nexport function escapeString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \"\\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\"\\\\l\");\n}\n\nexport function escapeLabelString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \" \\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\" \\\\l\");\n}\n\n// TODO integrate this into the normalization\n\nexport function isVertical(pDirection: string): boolean {\n const lDirection = pDirection || \"top-down\";\n\n return lDirection === \"top-down\" || lDirection === \"bottom-top\";\n}\n\nexport function isCompositeSelf(\n pStateMachineModel: StateMachineModel,\n pTransition: ITransition,\n): boolean {\n return (\n pTransition.from === pTransition.to &&\n (pStateMachineModel.findStateByName(pTransition.from)?.statemachine ??\n false) &&\n pTransition.type !== \"internal\"\n );\n}\n\nexport interface IStateNormalized extends IState {\n colorAttribute: string;\n fontColorAttribute: string;\n class: string;\n label: string;\n noteText: string;\n isParallelArea: boolean;\n}\n\nexport function noteToLabel(pNote: string[]): string {\n return pNote.map(escapeString).join(\"\");\n}\n\nexport function stateNote(pState: IState, pIndent: string): string {\n if (pState.note) {\n const lNoteName = `note_${pState.name}`;\n let lReturnValue = `\\n${pIndent} \"${lNoteName}\" [color=black fontcolor=black label=\"${noteToLabel(pState.note)}\" shape=note fontsize=10 fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n lReturnValue += `\\n${pIndent} \"${pState.name}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none]`;\n\n return lReturnValue;\n }\n return \"\";\n}\n\n// eslint-disable-next-line complexity\nexport function normalizeState(\n pState: IState & Partial,\n pOptions: IRenderOptions,\n pIndent: string,\n): IStateNormalized {\n const lReturnValue = structuredClone(pState) as IStateNormalized;\n\n // TODO: this is kludgy\n // we use these in regular, composite and history states\n lReturnValue.colorAttribute = pState.color ? ` color=\"${pState.color}\"` : \"\";\n lReturnValue.fontColorAttribute = pState.color\n ? ` fontcolor=\"${pState.color}\"`\n : \"\";\n // we use these in initial, fork, join, junction, forkjoin, terminal and final states\n lReturnValue.color = getStateColor(pState, pOptions.dotNodeAttrs);\n\n lReturnValue.class = pState.class\n ? `state ${pState.type} ${pState.class}`\n : `state ${pState.type}`;\n lReturnValue.label = he.escape(pState.label ?? pState.name);\n lReturnValue.noteText = stateNote(pState, pIndent);\n if (\n !pState.isParallelArea &&\n pState.type === \"parallel\" &&\n (pState.statemachine?.states ?? []).length > 0\n ) {\n // @ts-expect-error as lReturnValue is a clone of pStates statemachine && states\n // are bound to exist on there as well.\n lReturnValue.statemachine.states = pState.statemachine.states.map(\n (pChildState) => ({\n ...pChildState,\n isParallelArea: pChildState.type === \"regular\",\n }),\n );\n }\n\n return lReturnValue;\n}\n\nexport function formatActionType(pString: string): string {\n return pString === \"activity\" ? \"\" : `${pString}/ `;\n}\n\nexport function getTransitionPorts(\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pTransition: ITransition,\n) {\n let lTailPorts = ' tailport=\"n\" headport=\"n\"';\n let lHeadPorts = ' tailport=\"n\"';\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n if (isVertical(lDirection)) {\n lTailPorts = ' tailport=\"e\" headport=\"e\"';\n lHeadPorts = ' tailport=\"w\"';\n } else if (pModel.findStateByName(pTransition.from)?.parent ?? false) {\n lTailPorts = ' tailport=\"n\" headport=\"n\"';\n lHeadPorts = ' tailport=\"s\"';\n }\n return { lTailPorts, lHeadPorts };\n}\n", "var un=ArrayBuffer,$=Uint8Array,$e=Uint16Array,cn=Int16Array;var Ve=Int32Array,cr=function(c,_,l){if($.prototype.slice)return $.prototype.slice.call(c,_,l);(_==null||_<0)&&(_=0),(l==null||l>c.length)&&(l=c.length);var s=new $(l-_);return s.set(c.subarray(_,l)),s},Ue=function(c,_,l,s){if($.prototype.fill)return $.prototype.fill.call(c,_,l,s);for((l==null||l<0)&&(l=0),(s==null||s>c.length)&&(s=c.length);lc.length)&&(s=c.length);l2046MB)\",\"invalid block type\",\"FSE accuracy too high\",\"match distance too far back\",\"unexpected EOF\"],V=function(c,_,l){var s=new Error(_||_n[c]);if(s.code=c,Error.captureStackTrace&&Error.captureStackTrace(s,V),!l)throw s;return s},Hr=function(c,_,l){for(var s=0,d=0;s>>0},dn=function(c,_){var l=c[0]|c[1]<<8|c[2]<<16;if(l==3126568&&c[3]==253){var s=c[4],d=s>>5&1,h=s>>2&1,p=s&3,E=s>>6;s&8&&V(0);var G=6-d,j=p==3?4:p,q=Hr(c,G,j);G+=j;var U=E?1<>3);K=J+(J>>3)*(c[5]&7)}K>2145386496&&V(1);var L=new $((_==1?H||K:_?0:K)+12);return L[0]=1,L[4]=4,L[8]=8,{b:G+U,y:0,l:0,d:q,w:_&&_!=1?_:L.subarray(12),e:K,o:new Ve(L.buffer,0,3),u:H,c:h,m:Math.min(131072,K)}}else if((l>>4|c[3]<<20)==25481893)return ln(c,4)+8;V(0)},Le=function(c){for(var _=0;1<<_<=c;++_);return _-1},He=function(c,_,l){var s=(_<<3)+4,d=(c[_]&15)+5;d>l&&V(3);for(var h=1<0;){var X=Le(p+1),W=s>>3,fe=(1<>(s&7)&fe,m=(1<m&&(C-=Q)),H[++E]=--C,C==-1?(p+=C,T[--q]=E):p-=C,!C)do{var ie=s>>3;G=(c[ie]|c[ie+1]<<8)>>(s&7)&3,s+=2,E+=G}while(G==3)}(E>255||p)&&V(0);for(var B=0,R=(h>>1)+(h>>3)+3,ae=h-1,ne=0;ne<=E;++ne){var Z=H[ne];if(Z<1){K[ne]=-Z;continue}for(j=0;j=q)}}for(B&&V(0),j=0;j>3,{b:d,s:T,n:te,t:J}]},vn=function(c,_){var l=0,s=-1,d=new $(292),h=c[_],p=d.subarray(0,256),E=d.subarray(256,268),G=new $e(d.buffer,268);if(h<128){var j=He(c,_+1,6),q=j[0],U=j[1];_+=h;var H=q<<3,K=c[_];K||V(0);for(var J=0,L=0,T=U.b,te=T,X=(++_<<3)-8+Le(K);X-=T,!(X>3;if(J+=(c[W]|c[W+1]<<8)>>(X&7)&(1<>3,L+=(c[W]|c[W+1]<<8)>>(X&7)&(1<255&&V(0)}else{for(s=h-127;l>4,p[l+1]=fe&15}++_}var C=0;for(l=0;l11&&V(0),C+=m&&1<0;--l){var ne=G[l];Ue(ae,l,ne,G[l-1]=ne+E[l]*(1<E&&U>3,K=(c[H]|c[H+1]<<8|c[H+2]<<16)>>(q&7);G=(G<>2,p=h<<1,E=h+p;je(c.subarray(s,s+=c[0]|c[1]<<8),_.subarray(0,h),l),je(c.subarray(s,s+=c[2]|c[3]<<8),_.subarray(h,p),l),je(c.subarray(s,s+=c[4]|c[5]<<8),_.subarray(p,E),l),je(c.subarray(s),_.subarray(E),l)},Bn=function(c,_,l){var s,d=_.b,h=c[d],p=h>>1&3;_.l=h&1;var E=h>>3|c[d+1]<<5|c[d+2]<<13,G=(d+=3)+E;if(p==1)return d>=c.length?void 0:(_.b=d+1,l?(Ue(l,c[d],_.y,_.y+=E),l):Ue(new $(E),c[d]));if(!(G>c.length)){if(p==0)return _.b=G,l?(l.set(c.subarray(d,G),_.y),_.y+=E,l):cr(c,d,G);if(p==2){var j=c[d],q=j&3,U=j>>2&3,H=j>>4,K=0,J=0;q<2?U&1?H|=c[++d]<<4|(U&2&&c[++d]<<12):H=j>>3:(J=U,U<2?(H|=(c[++d]&63)<<4,K=c[d]>>6|c[++d]<<2):U==2?(H|=c[++d]<<4|(c[++d]&3)<<12,K=c[d]>>2|c[++d]<<6):(H|=c[++d]<<4|(c[++d]&63)<<12,K=c[d]>>6|c[++d]<<2|c[++d]<<10)),++d;var L=l?l.subarray(_.y,_.y+_.m):new $(_.m),T=L.length-H;if(q==0)L.set(c.subarray(d,d+=H),T);else if(q==1)Ue(L,c[d++],T);else{var te=_.h;if(q==2){var X=vn(c,d);K+=d-(d=X[0]),_.h=te=X[1]}else te||V(0);(J?wn:je)(c.subarray(d,d+=K),L.subarray(T),te)}var W=c[d++];if(W){W==255?W=(c[d++]|c[d++]<<8)+32512:W>127&&(W=W-128<<8|c[d++]);var fe=c[d++];fe&3&&V(0);for(var C=[pn,yn,hn],m=2;m>-1;--m){var Q=fe>>(m<<1)+2&3;if(Q==1){var k=new $([0,0,c[d++]]);C[m]={s:k.subarray(2,3),n:k.subarray(0,1),t:new $e(k.buffer,0,1),b:0}}else Q==2?(s=He(c,d,9-(m&1)),d=s[0],C[m]=s[1]):Q==3&&(_.t||V(0),C[m]=_.t[m])}var ie=_.t=C,B=ie[0],R=ie[1],ae=ie[2],ne=c[G-1];ne||V(0);var Z=(G<<3)-8+Le(ne)-ae.b,I=Z>>3,A=0,Ie=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var xe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var Oe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var qe=1<>>(Z&7)&qe-1);I=(Z-=_r[Te])>>3;var he=mn[Te]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<<_r[Te])-1);I=(Z-=fr[Pe])>>3;var pe=En[Pe]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<>3,Ie=ae.t[Ie]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,Oe=B.t[Oe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,xe=R.t[xe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<3)_.o[2]=_.o[1],_.o[1]=_.o[0],_.o[0]=_e-=3;else{var Me=_e-(pe!=0);Me?(_e=Me==3?_.o[0]-1:_.o[Me],Me>1&&(_.o[2]=_.o[1]),_.o[1]=_.o[0],_.o[0]=_e):_e=_.o[0]}for(var m=0;mhe&&(Fe=he);for(var m=0;m{var c=typeof document<\"u\"?document.currentScript?.src:void 0;return function(_={}){var l,s=_,d,h,p=new Promise((e,r)=>{d=e,h=r}),E=!1,G=Object.assign({},s),j=\"./this.program\",q=(e,r)=>{throw r},U=\"\";function H(e){return U+e}var K,J,L=console.log.bind(console),T=console.error.bind(console);Object.assign(s,G),G=null;var te=s.wasmBinary,X,W=!1,fe;function C(e,r){e||pe(r)}var m,Q,k,ie,B,R,ae,ne;function Z(){var e=X.buffer;s.HEAP8=m=new Int8Array(e),s.HEAP16=k=new Int16Array(e),s.HEAPU8=Q=new Uint8Array(e),s.HEAPU16=ie=new Uint16Array(e),s.HEAP32=B=new Int32Array(e),s.HEAPU32=R=new Uint32Array(e),s.HEAPF32=ae=new Float32Array(e),s.HEAPF64=ne=new Float64Array(e)}var I=[],A=[],Ie=[],xe=!1;function Oe(){ke(I)}function Pe(){xe=!0,!s.noFSInit&&!n.initialized&&n.init(),n.ignorePermissions=!1,Ge.init(),ke(A)}function Qe(){ke(Ie)}function Te(e){A.unshift(e)}var me=0,be=null,we=null;function qe(e){return e}function _e(e){me++}function he(e){if(me--,me==0&&(be!==null&&(clearInterval(be),be=null),we)){var r=we;we=null,r()}}function pe(e){e=\"Aborted(\"+e+\")\",T(e),W=!0,e+=\". Build with -sASSERTIONS for more info.\";var r=new WebAssembly.RuntimeError(e);throw h(r),r}var Me=\"data:application/octet-stream;base64,\",Be=e=>e.startsWith(Me),Fe=e=>e.startsWith(\"file://\");function Je(){var e=\"graphvizlib.wasm\";return Be(e)?e:H(e)}var Ne;function dr(e){if(e==Ne&&te)return new Uint8Array(te);if(J)return J(e);throw\"both async and sync fetching of the wasm failed\"}function Vr(e){return te?Promise.resolve().then(()=>dr(e)):K(e).then(r=>new Uint8Array(r),()=>dr(e))}function vr(e,r,t){return Vr(e).then(o=>WebAssembly.instantiate(o,r)).then(t,o=>{T(`failed to asynchronously prepare wasm: ${o}`),pe(o)})}function qr(e,r,t,o){return!e&&typeof WebAssembly.instantiateStreaming==\"function\"&&!Be(r)&&!Fe(r)&&typeof fetch==\"function\"?fetch(r,{credentials:\"same-origin\"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(o,function(u){return T(`wasm streaming compile failed: ${u}`),T(\"falling back to ArrayBuffer instantiation\"),vr(r,t,o)})}):vr(r,t,o)}function Jr(){return{a:Jt}}function Nr(){function e(o,i){return z=o.exports,X=z.B,Z(),Te(z.C),he(\"wasm-instantiate\"),z}_e(\"wasm-instantiate\");function r(o){e(o.instance)}var t=Jr();return Ne??=Je(),qr(te,Ne,t,r).catch(h),{}}var O,N,kr={173064:(e,r)=>{var t=se(e),o=se(r);n.createPath(\"/\",S.dirname(t)),n.writeFile(S.join(\"/\",t),o)}};class Ar{name=\"ExitStatus\";constructor(r){this.message=`Program terminated with exit(${r})`,this.status=r}}var ke=e=>{for(;e.length>0;)e.shift()(s)};class et{constructor(r){this.excPtr=r,this.ptr=r-24}set_type(r){R[this.ptr+4>>2]=r}get_type(){return R[this.ptr+4>>2]}set_destructor(r){R[this.ptr+8>>2]=r}get_destructor(){return R[this.ptr+8>>2]}set_caught(r){r=r?1:0,m[this.ptr+12]=r}get_caught(){return m[this.ptr+12]!=0}set_rethrown(r){r=r?1:0,m[this.ptr+13]=r}get_rethrown(){return m[this.ptr+13]!=0}init(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)}set_adjusted_ptr(r){R[this.ptr+16>>2]=r}get_adjusted_ptr(){return R[this.ptr+16>>2]}}var hr=0,rt=0,tt=(e,r,t)=>{var o=new et(e);throw o.init(r,t),hr=e,rt++,hr},S={isAbs:e=>e.charAt(0)===\"/\",splitPath:e=>{var r=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return r.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,o=e.length-1;o>=0;o--){var i=e[o];i===\".\"?e.splice(o,1):i===\"..\"?(e.splice(o,1),t++):t&&(e.splice(o,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:e=>{var r=S.isAbs(e),t=e.substr(-1)===\"/\";return e=S.normalizeArray(e.split(\"/\").filter(o=>!!o),!r).join(\"/\"),!e&&!r&&(e=\".\"),e&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:e=>{var r=S.splitPath(e),t=r[0],o=r[1];return!t&&!o?\".\":(o&&(o=o.substr(0,o.length-1)),t+o)},basename:e=>{if(e===\"/\")return\"/\";e=S.normalize(e),e=e.replace(/\\/$/,\"\");var r=e.lastIndexOf(\"/\");return r===-1?e:e.substr(r+1)},join:(...e)=>S.normalize(e.join(\"/\")),join2:(e,r)=>S.normalize(e+\"/\"+r)},nt=()=>{if(typeof crypto==\"object\"&&typeof crypto.getRandomValues==\"function\")return e=>crypto.getRandomValues(e);pe(\"initRandomDevice\")},pr=e=>(pr=nt())(e),ge={resolve:(...e)=>{for(var r=\"\",t=!1,o=e.length-1;o>=-1&&!t;o--){var i=o>=0?e[o]:n.cwd();if(typeof i!=\"string\")throw new TypeError(\"Arguments to path.resolve must be strings\");if(!i)return\"\";r=i+\"/\"+r,t=S.isAbs(i)}return r=S.normalizeArray(r.split(\"/\").filter(a=>!!a),!t).join(\"/\"),(t?\"/\":\"\")+r||\".\"},relative:(e,r)=>{e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);function t(F){for(var b=0;b=0&&F[Y]===\"\";Y--);return b>Y?[]:F.slice(b,Y-b+1)}for(var o=t(e.split(\"/\")),i=t(r.split(\"/\")),a=Math.min(o.length,i.length),u=a,f=0;f{for(var o=r+t,i=r;e[i]&&!(i>=o);)++i;if(i-r>16&&e.buffer&&yr)return yr.decode(e.subarray(r,i));for(var a=\"\";r>10,56320|F&1023)}}return a},Ae=[],er=e=>{for(var r=0,t=0;t=55296&&o<=57343?(r+=4,++t):r+=3}return r},rr=(e,r,t,o)=>{if(!(o>0))return 0;for(var i=t,a=t+o-1,u=0;u=55296&&f<=57343){var v=e.charCodeAt(++u);f=65536+((f&1023)<<10)|v&1023}if(f<=127){if(t>=a)break;r[t++]=f}else if(f<=2047){if(t+1>=a)break;r[t++]=192|f>>6,r[t++]=128|f&63}else if(f<=65535){if(t+2>=a)break;r[t++]=224|f>>12,r[t++]=128|f>>6&63,r[t++]=128|f&63}else{if(t+3>=a)break;r[t++]=240|f>>18,r[t++]=128|f>>12&63,r[t++]=128|f>>6&63,r[t++]=128|f&63}}return r[t]=0,t-i};function tr(e,r,t){var o=t>0?t:er(e)+1,i=new Array(o),a=rr(e,i,0,i.length);return r&&(i.length=a),i}var ot=()=>{if(!Ae.length){var e=null;if(!e)return null;Ae=tr(e,!0)}return Ae.shift()},Ge={ttys:[],init(){},shutdown(){},register(e,r){Ge.ttys[e]={input:[],output:[],ops:r},n.registerDevice(e,Ge.stream_ops)},stream_ops:{open(e){var r=Ge.ttys[e.node.rdev];if(!r)throw new n.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,o,i){if(!e.tty||!e.tty.ops.get_char)throw new n.ErrnoError(60);for(var a=0,u=0;u0&&(L(Re(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){r===null||r===10?(T(Re(e.output)),e.output=[]):r!=0&&e.output.push(r)},fsync(e){e.output&&e.output.length>0&&(T(Re(e.output)),e.output=[])}}},it=(e,r)=>{Q.fill(0,e,e+r)},nr=(e,r)=>Math.ceil(e/r)*r,Er=e=>{e=nr(e,65536);var r=jr(65536,e);return r&&it(r,e),r},g={ops_table:null,mount(e){return g.createNode(null,\"/\",16895,0)},createNode(e,r,t,o){if(n.isBlkdev(t)||n.isFIFO(t))throw new n.ErrnoError(63);g.ops_table||={dir:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,lookup:g.node_ops.lookup,mknod:g.node_ops.mknod,rename:g.node_ops.rename,unlink:g.node_ops.unlink,rmdir:g.node_ops.rmdir,readdir:g.node_ops.readdir,symlink:g.node_ops.symlink},stream:{llseek:g.stream_ops.llseek}},file:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:{llseek:g.stream_ops.llseek,read:g.stream_ops.read,write:g.stream_ops.write,allocate:g.stream_ops.allocate,mmap:g.stream_ops.mmap,msync:g.stream_ops.msync}},link:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,readlink:g.node_ops.readlink},stream:{}},chrdev:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:n.chrdev_stream_ops}};var i=n.createNode(e,r,t,o);return n.isDir(i.mode)?(i.node_ops=g.ops_table.dir.node,i.stream_ops=g.ops_table.dir.stream,i.contents={}):n.isFile(i.mode)?(i.node_ops=g.ops_table.file.node,i.stream_ops=g.ops_table.file.stream,i.usedBytes=0,i.contents=null):n.isLink(i.mode)?(i.node_ops=g.ops_table.link.node,i.stream_ops=g.ops_table.link.stream):n.isChrdev(i.mode)&&(i.node_ops=g.ops_table.chrdev.node,i.stream_ops=g.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){var o=1024*1024;r=Math.max(r,t*(t>>0),t!=0&&(r=Math.max(r,256));var i=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,r){if(e.usedBytes!=r)if(r==0)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr(e){var r={};return r.dev=n.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,n.isDir(e.mode)?r.size=4096:n.isFile(e.mode)?r.size=e.usedBytes:n.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){r.mode!==void 0&&(e.mode=r.mode),r.timestamp!==void 0&&(e.timestamp=r.timestamp),r.size!==void 0&&g.resizeFileStorage(e,r.size)},lookup(e,r){throw g.doesNotExistError},mknod(e,r,t,o){return g.createNode(e,r,t,o)},rename(e,r,t){if(n.isDir(e.mode)){var o;try{o=n.lookupNode(r,t)}catch{}if(o)for(var i in o.contents)throw new n.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp},unlink(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir(e,r){var t=n.lookupNode(e,r);for(var o in t.contents)throw new n.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir(e){var r=[\".\",\"..\"];for(var t of Object.keys(e.contents))r.push(t);return r},symlink(e,r,t){var o=g.createNode(e,r,41471,0);return o.link=t,o},readlink(e){if(!n.isLink(e.mode))throw new n.ErrnoError(28);return e.link}},stream_ops:{read(e,r,t,o,i){var a=e.node.contents;if(i>=e.node.usedBytes)return 0;var u=Math.min(e.node.usedBytes-i,o);if(u>8&&a.subarray)r.set(a.subarray(i,i+u),t);else for(var f=0;f0||t+r{var i=o?\"\":`al ${e}`;K(e).then(a=>{r(new Uint8Array(a)),i&&he(i)},a=>{if(t)t();else throw`Loading data file \"${e}\" failed.`}),i&&_e(i)},st=(e,r,t,o,i,a)=>{n.createDataFile(e,r,t,o,i,a)},ut=[],ct=(e,r,t,o)=>{typeof Browser<\"u\"&&Browser.init();var i=!1;return ut.forEach(a=>{i||a.canHandle(r)&&(a.handle(e,r,t,o),i=!0)}),i},ft=(e,r,t,o,i,a,u,f,v,F)=>{var b=r?ge.resolve(S.join2(e,r)):e,Y=`cp ${b}`;function x(w){function M(ee){F?.(),f||st(e,r,ee,o,i,v),a?.(),he(Y)}ct(w,b,M,()=>{u?.(),he(Y)})||M(w)}_e(Y),typeof t==\"string\"?at(t,x,u):x(t)},_t=e=>{var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090},t=r[e];if(typeof t>\"u\")throw new Error(`Unknown file open mode: ${e}`);return t},or=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},n={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,ErrnoError:class{name=\"ErrnoError\";constructor(e){this.errno=e}},filesystems:null,syncFSRequests:0,FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,o){e||(e=this),this.parent=e,this.mount=e.mount,this.id=n.nextInode++,this.name=r,this.mode=t,this.rdev=o}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return n.isDir(this.mode)}get isDevice(){return n.isChrdev(this.mode)}},lookupPath(e,r={}){if(e=ge.resolve(e),!e)return{path:\"\",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new n.ErrnoError(32);for(var o=e.split(\"/\").filter(Y=>!!Y),i=n.root,a=\"/\",u=0;u40)throw new n.ErrnoError(32)}}return{path:a,node:i}},getPath(e){for(var r;;){if(n.isRoot(e)){var t=e.mount.mountpoint;return r?t[t.length-1]!==\"/\"?`${t}/${r}`:t+r:t}r=r?`${e.name}/${r}`:e.name,e=e.parent}},hashName(e,r){for(var t=0,o=0;o>>0)%n.nameTable.length},hashAddNode(e){var r=n.hashName(e.parent.id,e.name);e.name_next=n.nameTable[r],n.nameTable[r]=e},hashRemoveNode(e){var r=n.hashName(e.parent.id,e.name);if(n.nameTable[r]===e)n.nameTable[r]=e.name_next;else for(var t=n.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=n.mayLookup(e);if(t)throw new n.ErrnoError(t);for(var o=n.hashName(e.id,r),i=n.nameTable[o];i;i=i.name_next){var a=i.name;if(i.parent.id===e.id&&a===r)return i}return n.lookup(e,r)},createNode(e,r,t,o){var i=new n.FSNode(e,r,t,o);return n.hashAddNode(i),i},destroyNode(e){n.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var r=[\"r\",\"w\",\"rw\"][e&3];return e&512&&(r+=\"w\"),r},nodePermissions(e,r){return n.ignorePermissions?0:r.includes(\"r\")&&!(e.mode&292)||r.includes(\"w\")&&!(e.mode&146)||r.includes(\"x\")&&!(e.mode&73)?2:0},mayLookup(e){if(!n.isDir(e.mode))return 54;var r=n.nodePermissions(e,\"x\");return r||(e.node_ops.lookup?0:2)},mayCreate(e,r){try{var t=n.lookupNode(e,r);return 20}catch{}return n.nodePermissions(e,\"wx\")},mayDelete(e,r,t){var o;try{o=n.lookupNode(e,r)}catch(a){return a.errno}var i=n.nodePermissions(e,\"wx\");if(i)return i;if(t){if(!n.isDir(o.mode))return 54;if(n.isRoot(o)||n.getPath(o)===n.cwd())return 10}else if(n.isDir(o.mode))return 31;return 0},mayOpen(e,r){return e?n.isLink(e.mode)?32:n.isDir(e.mode)&&(n.flagsToPermissionString(r)!==\"r\"||r&512)?31:n.nodePermissions(e,n.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=n.MAX_OPEN_FDS;e++)if(!n.streams[e])return e;throw new n.ErrnoError(33)},getStreamChecked(e){var r=n.getStream(e);if(!r)throw new n.ErrnoError(8);return r},getStream:e=>n.streams[e],createStream(e,r=-1){return e=Object.assign(new n.FSStream,e),r==-1&&(r=n.nextfd()),e.fd=r,n.streams[r]=e,e},closeStream(e){n.streams[e]=null},dupStream(e,r=-1){var t=n.createStream(e,r);return t.stream_ops?.dup?.(t),t},chrdev_stream_ops:{open(e){var r=n.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new n.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,r)=>e<<8|r,registerDevice(e,r){n.devices[e]={stream_ops:r}},getDevice:e=>n.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var o=t.pop();r.push(o),t.push(...o.mounts)}return r},syncfs(e,r){typeof e==\"function\"&&(r=e,e=!1),n.syncFSRequests++,n.syncFSRequests>1&&T(`warning: ${n.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=n.getMounts(n.root.mount),o=0;function i(u){return n.syncFSRequests--,r(u)}function a(u){if(u)return a.errored?void 0:(a.errored=!0,i(u));++o>=t.length&&i(null)}t.forEach(u=>{if(!u.type.syncfs)return a(null);u.type.syncfs(u,e,a)})},mount(e,r,t){var o=t===\"/\",i=!t,a;if(o&&n.root)throw new n.ErrnoError(10);if(!o&&!i){var u=n.lookupPath(t,{follow_mount:!1});if(t=u.path,a=u.node,n.isMountpoint(a))throw new n.ErrnoError(10);if(!n.isDir(a.mode))throw new n.ErrnoError(54)}var f={type:e,opts:r,mountpoint:t,mounts:[]},v=e.mount(f);return v.mount=f,f.root=v,o?n.root=v:a&&(a.mounted=f,a.mount&&a.mount.mounts.push(f)),v},unmount(e){var r=n.lookupPath(e,{follow_mount:!1});if(!n.isMountpoint(r.node))throw new n.ErrnoError(28);var t=r.node,o=t.mounted,i=n.getMounts(o);Object.keys(n.nameTable).forEach(u=>{for(var f=n.nameTable[u];f;){var v=f.name_next;i.includes(f.mount)&&n.destroyNode(f),f=v}}),t.mounted=null;var a=t.mount.mounts.indexOf(o);t.mount.mounts.splice(a,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var o=n.lookupPath(e,{parent:!0}),i=o.node,a=S.basename(e);if(!a||a===\".\"||a===\"..\")throw new n.ErrnoError(28);var u=n.mayCreate(i,a);if(u)throw new n.ErrnoError(u);if(!i.node_ops.mknod)throw new n.ErrnoError(63);return i.node_ops.mknod(i,a,r,t)},statfs(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:n.nextInode,ffree:n.nextInode-1,fsid:42,flags:2,namelen:255},t=n.lookupPath(e,{follow:!0}).node;return t?.node_ops.statfs&&Object.assign(r,t.node_ops.statfs(t.mount.opts.root)),r},create(e,r=438){return r&=4095,r|=32768,n.mknod(e,r,0)},mkdir(e,r=511){return r&=1023,r|=16384,n.mknod(e,r,0)},mkdirTree(e,r){for(var t=e.split(\"/\"),o=\"\",i=0;i\"u\"&&(t=r,r=438),r|=8192,n.mknod(e,r,t)},symlink(e,r){if(!ge.resolve(e))throw new n.ErrnoError(44);var t=n.lookupPath(r,{parent:!0}),o=t.node;if(!o)throw new n.ErrnoError(44);var i=S.basename(r),a=n.mayCreate(o,i);if(a)throw new n.ErrnoError(a);if(!o.node_ops.symlink)throw new n.ErrnoError(63);return o.node_ops.symlink(o,i,e)},rename(e,r){var t=S.dirname(e),o=S.dirname(r),i=S.basename(e),a=S.basename(r),u,f,v;if(u=n.lookupPath(e,{parent:!0}),f=u.node,u=n.lookupPath(r,{parent:!0}),v=u.node,!f||!v)throw new n.ErrnoError(44);if(f.mount!==v.mount)throw new n.ErrnoError(75);var F=n.lookupNode(f,i),b=ge.relative(e,o);if(b.charAt(0)!==\".\")throw new n.ErrnoError(28);if(b=ge.relative(r,t),b.charAt(0)!==\".\")throw new n.ErrnoError(55);var Y;try{Y=n.lookupNode(v,a)}catch{}if(F!==Y){var x=n.isDir(F.mode),w=n.mayDelete(f,i,x);if(w)throw new n.ErrnoError(w);if(w=Y?n.mayDelete(v,a,x):n.mayCreate(v,a),w)throw new n.ErrnoError(w);if(!f.node_ops.rename)throw new n.ErrnoError(63);if(n.isMountpoint(F)||Y&&n.isMountpoint(Y))throw new n.ErrnoError(10);if(v!==f&&(w=n.nodePermissions(f,\"w\"),w))throw new n.ErrnoError(w);n.hashRemoveNode(F);try{f.node_ops.rename(F,v,a),F.parent=v}catch(M){throw M}finally{n.hashAddNode(F)}}},rmdir(e){var r=n.lookupPath(e,{parent:!0}),t=r.node,o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!0);if(a)throw new n.ErrnoError(a);if(!t.node_ops.rmdir)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.rmdir(t,o),n.destroyNode(i)},readdir(e){var r=n.lookupPath(e,{follow:!0}),t=r.node;if(!t.node_ops.readdir)throw new n.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var r=n.lookupPath(e,{parent:!0}),t=r.node;if(!t)throw new n.ErrnoError(44);var o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!1);if(a)throw new n.ErrnoError(a);if(!t.node_ops.unlink)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.unlink(t,o),n.destroyNode(i)},readlink(e){var r=n.lookupPath(e),t=r.node;if(!t)throw new n.ErrnoError(44);if(!t.node_ops.readlink)throw new n.ErrnoError(28);return t.node_ops.readlink(t)},stat(e,r){var t=n.lookupPath(e,{follow:!r}),o=t.node;if(!o)throw new n.ErrnoError(44);if(!o.node_ops.getattr)throw new n.ErrnoError(63);return o.node_ops.getattr(o)},lstat(e){return n.stat(e,!0)},chmod(e,r,t){var o;if(typeof e==\"string\"){var i=n.lookupPath(e,{follow:!t});o=i.node}else o=e;if(!o.node_ops.setattr)throw new n.ErrnoError(63);o.node_ops.setattr(o,{mode:r&4095|o.mode&-4096,timestamp:Date.now()})},lchmod(e,r){n.chmod(e,r,!0)},fchmod(e,r){var t=n.getStreamChecked(e);n.chmod(t.node,r)},chown(e,r,t,o){var i;if(typeof e==\"string\"){var a=n.lookupPath(e,{follow:!o});i=a.node}else i=e;if(!i.node_ops.setattr)throw new n.ErrnoError(63);i.node_ops.setattr(i,{timestamp:Date.now()})},lchown(e,r,t){n.chown(e,r,t,!0)},fchown(e,r,t){var o=n.getStreamChecked(e);n.chown(o.node,r,t)},truncate(e,r){if(r<0)throw new n.ErrnoError(28);var t;if(typeof e==\"string\"){var o=n.lookupPath(e,{follow:!0});t=o.node}else t=e;if(!t.node_ops.setattr)throw new n.ErrnoError(63);if(n.isDir(t.mode))throw new n.ErrnoError(31);if(!n.isFile(t.mode))throw new n.ErrnoError(28);var i=n.nodePermissions(t,\"w\");if(i)throw new n.ErrnoError(i);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate(e,r){var t=n.getStreamChecked(e);if(!(t.flags&2097155))throw new n.ErrnoError(28);n.truncate(t.node,r)},utime(e,r,t){var o=n.lookupPath(e,{follow:!0}),i=o.node;i.node_ops.setattr(i,{timestamp:Math.max(r,t)})},open(e,r,t=438){if(e===\"\")throw new n.ErrnoError(44);r=typeof r==\"string\"?_t(r):r,r&64?t=t&4095|32768:t=0;var o;if(typeof e==\"object\")o=e;else{e=S.normalize(e);try{var i=n.lookupPath(e,{follow:!(r&131072)});o=i.node}catch{}}var a=!1;if(r&64)if(o){if(r&128)throw new n.ErrnoError(20)}else o=n.mknod(e,t,0),a=!0;if(!o)throw new n.ErrnoError(44);if(n.isChrdev(o.mode)&&(r&=-513),r&65536&&!n.isDir(o.mode))throw new n.ErrnoError(54);if(!a){var u=n.mayOpen(o,r);if(u)throw new n.ErrnoError(u)}r&512&&!a&&n.truncate(o,0),r&=-131713;var f=n.createStream({node:o,path:n.getPath(o),flags:r,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return f.stream_ops.open&&f.stream_ops.open(f),f},close(e){if(n.isClosed(e))throw new n.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(r){throw r}finally{n.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new n.ErrnoError(70);if(t!=0&&t!=1&&t!=2)throw new n.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,o,i){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if((e.flags&2097155)===1)throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.read)throw new n.ErrnoError(28);var a=typeof i<\"u\";if(!a)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var u=e.stream_ops.read(e,r,t,o,i);return a||(e.position+=u),u},write(e,r,t,o,i,a){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.write)throw new n.ErrnoError(28);e.seekable&&e.flags&1024&&n.llseek(e,0,2);var u=typeof i<\"u\";if(!u)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var f=e.stream_ops.write(e,r,t,o,i,a);return u||(e.position+=f),f},allocate(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(r<0||t<=0)throw new n.ErrnoError(28);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(!n.isFile(e.node.mode)&&!n.isDir(e.node.mode))throw new n.ErrnoError(43);if(!e.stream_ops.allocate)throw new n.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap(e,r,t,o,i){if(o&2&&!(i&2)&&(e.flags&2097155)!==2)throw new n.ErrnoError(2);if((e.flags&2097155)===1)throw new n.ErrnoError(2);if(!e.stream_ops.mmap)throw new n.ErrnoError(43);if(!r)throw new n.ErrnoError(28);return e.stream_ops.mmap(e,r,t,o,i)},msync(e,r,t,o,i){return e.stream_ops.msync?e.stream_ops.msync(e,r,t,o,i):0},ioctl(e,r,t){if(!e.stream_ops.ioctl)throw new n.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||\"binary\",r.encoding!==\"utf8\"&&r.encoding!==\"binary\")throw new Error(`Invalid encoding type \"${r.encoding}\"`);var t,o=n.open(e,r.flags),i=n.stat(e),a=i.size,u=new Uint8Array(a);return n.read(o,u,0,a,0),r.encoding===\"utf8\"?t=Re(u):r.encoding===\"binary\"&&(t=u),n.close(o),t},writeFile(e,r,t={}){t.flags=t.flags||577;var o=n.open(e,t.flags,t.mode);if(typeof r==\"string\"){var i=new Uint8Array(er(r)+1),a=rr(r,i,0,i.length);n.write(o,i,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))n.write(o,r,0,r.byteLength,void 0,t.canOwn);else throw new Error(\"Unsupported data type\");n.close(o)},cwd:()=>n.currentPath,chdir(e){var r=n.lookupPath(e,{follow:!0});if(r.node===null)throw new n.ErrnoError(44);if(!n.isDir(r.node.mode))throw new n.ErrnoError(54);var t=n.nodePermissions(r.node,\"x\");if(t)throw new n.ErrnoError(t);n.currentPath=r.path},createDefaultDirectories(){n.mkdir(\"/tmp\"),n.mkdir(\"/home\"),n.mkdir(\"/home/web_user\")},createDefaultDevices(){n.mkdir(\"/dev\"),n.registerDevice(n.makedev(1,3),{read:()=>0,write:(o,i,a,u,f)=>u,llseek:()=>0}),n.mkdev(\"/dev/null\",n.makedev(1,3)),Ge.register(n.makedev(5,0),Ge.default_tty_ops),Ge.register(n.makedev(6,0),Ge.default_tty1_ops),n.mkdev(\"/dev/tty\",n.makedev(5,0)),n.mkdev(\"/dev/tty1\",n.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(r===0&&(r=pr(e).byteLength),e[--r]);n.createDevice(\"/dev\",\"random\",t),n.createDevice(\"/dev\",\"urandom\",t),n.mkdir(\"/dev/shm\"),n.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){n.mkdir(\"/proc\");var e=n.mkdir(\"/proc/self\");n.mkdir(\"/proc/self/fd\"),n.mount({mount(){var r=n.createNode(e,\"fd\",16895,73);return r.node_ops={lookup(t,o){var i=+o,a=n.getStreamChecked(i),u={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>a.path}};return u.parent=u,u}},r}},{},\"/proc/self/fd\")},createStandardStreams(e,r,t){e?n.createDevice(\"/dev\",\"stdin\",e):n.symlink(\"/dev/tty\",\"/dev/stdin\"),r?n.createDevice(\"/dev\",\"stdout\",null,r):n.symlink(\"/dev/tty\",\"/dev/stdout\"),t?n.createDevice(\"/dev\",\"stderr\",null,t):n.symlink(\"/dev/tty1\",\"/dev/stderr\");var o=n.open(\"/dev/stdin\",0),i=n.open(\"/dev/stdout\",1),a=n.open(\"/dev/stderr\",1)},staticInit(){n.nameTable=new Array(4096),n.mount(g,{},\"/\"),n.createDefaultDirectories(),n.createDefaultDevices(),n.createSpecialDirectories(),n.filesystems={MEMFS:g}},init(e,r,t){n.initialized=!0,n.createStandardStreams(e,r,t)},quit(){n.initialized=!1;for(var e=0;ethis.length-1||w<0)){var M=w%this.chunkSize,ee=w/this.chunkSize|0;return this.getter(ee)[M]}}setDataGetter(w){this.getter=w}cacheLength(){var w=new XMLHttpRequest;if(w.open(\"HEAD\",t,!1),w.send(null),!(w.status>=200&&w.status<300||w.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+w.status);var M=Number(w.getResponseHeader(\"Content-length\")),ee,le=(ee=w.getResponseHeader(\"Accept-Ranges\"))&&ee===\"bytes\",oe=(ee=w.getResponseHeader(\"Content-Encoding\"))&&ee===\"gzip\",de=1024*1024;le||(de=M);var ve=(ye,Ye)=>{if(ye>Ye)throw new Error(\"invalid range (\"+ye+\", \"+Ye+\") or no bytes requested!\");if(Ye>M-1)throw new Error(\"only \"+M+\" bytes available! programmer error!\");var re=new XMLHttpRequest;if(re.open(\"GET\",t,!1),M!==de&&re.setRequestHeader(\"Range\",\"bytes=\"+ye+\"-\"+Ye),re.responseType=\"arraybuffer\",re.overrideMimeType&&re.overrideMimeType(\"text/plain; charset=x-user-defined\"),re.send(null),!(re.status>=200&&re.status<300||re.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+re.status);return re.response!==void 0?new Uint8Array(re.response||[]):tr(re.responseText||\"\",!0)},Se=this;Se.setDataGetter(ye=>{var Ye=ye*de,re=(ye+1)*de-1;if(re=Math.min(re,M-1),typeof Se.chunks[ye]>\"u\"&&(Se.chunks[ye]=ve(Ye,re)),typeof Se.chunks[ye]>\"u\")throw new Error(\"doXHR failed!\");return Se.chunks[ye]}),(oe||!M)&&(de=M=1,M=this.getter(0).length,de=M,L(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=M,this._chunkSize=de,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<\"u\"){if(!E)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var u=new a,f={isDevice:!1,contents:u}}else var f={isDevice:!1,url:t};var v=n.createFile(e,r,f,o,i);f.contents?v.contents=f.contents:f.url&&(v.contents=null,v.url=f.url),Object.defineProperties(v,{usedBytes:{get:function(){return this.contents.length}}});var F={},b=Object.keys(v.stream_ops);b.forEach(x=>{var w=v.stream_ops[x];F[x]=(...M)=>(n.forceLoadFile(v),w(...M))});function Y(x,w,M,ee,le){var oe=x.node.contents;if(le>=oe.length)return 0;var de=Math.min(oe.length-le,ee);if(oe.slice)for(var ve=0;ve(n.forceLoadFile(v),Y(x,w,M,ee,le)),F.mmap=(x,w,M,ee,le)=>{n.forceLoadFile(v);var oe=Er(w);if(!oe)throw new n.ErrnoError(48);return Y(x,m,oe,w,M),{ptr:oe,allocated:!0}},v.stream_ops=F,v}},se=(e,r)=>e?Re(Q,e,r):\"\",P={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(S.isAbs(r))return r;var o;if(e===-100)o=n.cwd();else{var i=P.getStreamFromFD(e);o=i.path}if(r.length==0){if(!t)throw new n.ErrnoError(44);return o}return S.join2(o,r)},doStat(e,r,t){var o=e(r);B[t>>2]=o.dev,B[t+4>>2]=o.mode,R[t+8>>2]=o.nlink,B[t+12>>2]=o.uid,B[t+16>>2]=o.gid,B[t+20>>2]=o.rdev,N=[o.size>>>0,(O=o.size,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+24>>2]=N[0],B[t+28>>2]=N[1],B[t+32>>2]=4096,B[t+36>>2]=o.blocks;var i=o.atime.getTime(),a=o.mtime.getTime(),u=o.ctime.getTime();return N=[Math.floor(i/1e3)>>>0,(O=Math.floor(i/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+40>>2]=N[0],B[t+44>>2]=N[1],R[t+48>>2]=i%1e3*1e3*1e3,N=[Math.floor(a/1e3)>>>0,(O=Math.floor(a/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+56>>2]=N[0],B[t+60>>2]=N[1],R[t+64>>2]=a%1e3*1e3*1e3,N=[Math.floor(u/1e3)>>>0,(O=Math.floor(u/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+72>>2]=N[0],B[t+76>>2]=N[1],R[t+80>>2]=u%1e3*1e3*1e3,N=[o.ino>>>0,(O=o.ino,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+88>>2]=N[0],B[t+92>>2]=N[1],0},doMsync(e,r,t,o,i){if(!n.isFile(r.node.mode))throw new n.ErrnoError(43);if(o&2)return 0;var a=Q.slice(e,e+t);n.msync(r,a,i,t,o)},getStreamFromFD(e){var r=n.getStreamChecked(e);return r},varargs:void 0,getStr(e){var r=se(e);return r}};function lt(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),t&-8)return-28;var i=n.lookupPath(r,{follow:!0}),a=i.node;if(!a)return-44;var u=\"\";return t&4&&(u+=\"r\"),t&2&&(u+=\"w\"),t&1&&(u+=\"x\"),u&&n.nodePermissions(a,u)?-2:0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}var We=()=>{var e=B[+P.varargs>>2];return P.varargs+=4,e},De=We;function dt(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 0:{var i=We();if(i<0)return-28;for(;n.streams[i];)i++;var a;return a=n.dupStream(o,i),a.fd}case 1:case 2:return 0;case 3:return o.flags;case 4:{var i=We();return o.flags|=i,0}case 12:{var i=De(),u=0;return k[i+u>>1]=2,0}case 13:case 14:return 0}return-28}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function vt(e,r){try{var t=P.getStreamFromFD(e);return P.doStat(n.stat,t.path,r)}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}function ht(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 21509:return o.tty?0:-59;case 21505:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcgets){var i=o.tty.ops.ioctl_tcgets(o),a=De();B[a>>2]=i.c_iflag||0,B[a+4>>2]=i.c_oflag||0,B[a+8>>2]=i.c_cflag||0,B[a+12>>2]=i.c_lflag||0;for(var u=0;u<32;u++)m[a+u+17]=i.c_cc[u]||0;return 0}return 0}case 21510:case 21511:case 21512:return o.tty?0:-59;case 21506:case 21507:case 21508:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcsets){for(var a=De(),f=B[a>>2],v=B[a+4>>2],F=B[a+8>>2],b=B[a+12>>2],Y=[],u=0;u<32;u++)Y.push(m[a+u+17]);return o.tty.ops.ioctl_tcsets(o.tty,r,{c_iflag:f,c_oflag:v,c_cflag:F,c_lflag:b,c_cc:Y})}return 0}case 21519:{if(!o.tty)return-59;var a=De();return B[a>>2]=0,0}case 21520:return o.tty?-28:-59;case 21531:{var a=De();return n.ioctl(o,r,a)}case 21523:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tiocgwinsz){var x=o.tty.ops.ioctl_tiocgwinsz(o.tty),a=De();k[a>>1]=x[0],k[a+2>>1]=x[1]}return 0}case 21524:return o.tty?0:-59;case 21515:return o.tty?0:-59;default:return-28}}catch(w){if(typeof n>\"u\"||w.name!==\"ErrnoError\")throw w;return-w.errno}}function pt(e,r,t,o){try{r=P.getStr(r);var i=o&256,a=o&4096;return o=o&-6401,r=P.calculateAt(e,r,a),P.doStat(i?n.lstat:n.stat,r,t)}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return-u.errno}}function yt(e,r,t,o){P.varargs=o;try{r=P.getStr(r),r=P.calculateAt(e,r);var i=o?We():0;return n.open(r,t,i).fd}catch(a){if(typeof n>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}var Ze=(e,r,t)=>rr(e,Q,r,t);function Et(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),o<=0)return-28;var i=n.readlink(r),a=Math.min(o,er(i)),u=m[t+a];return Ze(i,t,o+1),m[t+a]=u,a}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function mt(e){try{return e=P.getStr(e),n.rmdir(e),0}catch(r){if(typeof n>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}function wt(e,r){try{return e=P.getStr(e),P.doStat(n.stat,e,r)}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return-t.errno}}function Bt(e,r,t){try{return r=P.getStr(r),r=P.calculateAt(e,r),t===0?n.unlink(r):t===512?n.rmdir(r):pe(\"Invalid flags passed to unlinkat\"),0}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}var gt=()=>pe(\"\"),Gt=1,Ft=()=>Gt,Lt=(e,r,t)=>Q.copyWithin(e,r,r+t),ir=(e,r)=>r+2097152>>>0<4194305-!!e?(e>>>0)+r*4294967296:NaN;function It(e,r,t,o,i,a,u,f){var v=ir(i,a);try{if(isNaN(v))return 61;var F=P.getStreamFromFD(o),b=n.mmap(F,e,v,r,t),Y=b.ptr;return B[u>>2]=b.allocated,R[f>>2]=Y,0}catch(x){if(typeof n>\"u\"||x.name!==\"ErrnoError\")throw x;return-x.errno}}function xt(e,r,t,o,i,a,u){var f=ir(a,u);try{var v=P.getStreamFromFD(i);t&2&&P.doMsync(e,v,r,o,f)}catch(F){if(typeof n>\"u\"||F.name!==\"ErrnoError\")throw F;return-F.errno}}var Ot=(e,r,t,o)=>{var i=new Date().getFullYear(),a=new Date(i,0,1),u=new Date(i,6,1),f=a.getTimezoneOffset(),v=u.getTimezoneOffset(),F=Math.max(f,v);R[e>>2]=F*60,B[r>>2]=+(f!=v);var b=w=>{var M=w>=0?\"-\":\"+\",ee=Math.abs(w),le=String(Math.floor(ee/60)).padStart(2,\"0\"),oe=String(ee%60).padStart(2,\"0\");return`UTC${M}${le}${oe}`},Y=b(f),x=b(v);v{ar.length=0;for(var t;t=Q[e++];){var o=t!=105;o&=t!=112,r+=o&&r%8?4:0,ar.push(t==112?R[r>>2]:t==105?B[r>>2]:ne[r>>3]),r+=o?8:4}return ar},Mt=(e,r,t)=>{var o=bt(r,t);return kr[e](...o)},Rt=(e,r,t)=>Mt(e,r,t),Dt=()=>Date.now(),Yt=()=>2147483648,Pt=e=>{var r=X.buffer,t=(e-r.byteLength+65535)/65536|0;try{return X.grow(t),Z(),1}catch{}},Tt=e=>{var r=Q.length;e>>>=0;var t=Yt();if(e>t)return!1;for(var o=1;o<=4;o*=2){var i=r*(1+.2/o);i=Math.min(i,e+100663296);var a=Math.min(t,nr(Math.max(e,i),65536)),u=Pt(a);if(u)return!0}return!1},sr={},Zt=()=>j||\"./this.program\",ze=()=>{if(!ze.strings){var e=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",r={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:e,_:Zt()};for(var t in sr)sr[t]===void 0?delete r[t]:r[t]=sr[t];var o=[];for(var t in r)o.push(`${t}=${r[t]}`);ze.strings=o}return ze.strings},zt=(e,r)=>{for(var t=0;t{var t=0;return ze().forEach((o,i)=>{var a=r+t;R[e+i*4>>2]=a,zt(o,a),t+=o.length+1}),0},jt=(e,r)=>{var t=ze();R[e>>2]=t.length;var o=0;return t.forEach(i=>o+=i.length+1),R[r>>2]=o,0},Ut=()=>!0,Ht=e=>{fe=e,Ut()||(W=!0),q(e,new Ar(e))},Kt=(e,r)=>{fe=e,Ht(e)},Qt=Kt;function Wt(e){try{var r=P.getStreamFromFD(e);return n.close(r),0}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return t.errno}}var Ct=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.read(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}function $t(e,r,t,o,i){var a=ir(r,t);try{if(isNaN(a))return 61;var u=P.getStreamFromFD(e);return n.llseek(u,a,o),N=[u.position>>>0,(O=u.position,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[i>>2]=N[0],B[i+4>>2]=N[1],u.getdents&&a===0&&o===0&&(u.getdents=null),0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return f.errno}}var Vt=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.write(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}n.createPreloadedFile=ft,n.staticInit(),g.doesNotExistError=new n.ErrnoError(44),g.doesNotExistError.stack=\"\";var Jt={a:tt,i:lt,f:dt,x:vt,k:ht,v:pt,h:yt,q:Et,r:mt,w:wt,s:Bt,j:gt,y:Ft,z:Lt,l:It,m:xt,o:Ot,A:Rt,c:Dt,p:Tt,t:St,u:jt,g:Qt,b:Wt,e:Xt,n:$t,d:qt},z=Nr(),Nt=()=>(Nt=z.C)(),kt=s._webidl_free=e=>(kt=s._webidl_free=z.D)(e),At=s._free=e=>(At=s._free=z.E)(e),en=s._webidl_malloc=e=>(en=s._webidl_malloc=z.F)(e),rn=s._malloc=e=>(rn=s._malloc=z.G)(e),mr=s._emscripten_bind_VoidPtr___destroy___0=e=>(mr=s._emscripten_bind_VoidPtr___destroy___0=z.H)(e),wr=s._emscripten_bind_Graphviz_Graphviz_2=(e,r)=>(wr=s._emscripten_bind_Graphviz_Graphviz_2=z.I)(e,r),Br=s._emscripten_bind_Graphviz_version_0=()=>(Br=s._emscripten_bind_Graphviz_version_0=z.J)(),gr=s._emscripten_bind_Graphviz_lastError_0=()=>(gr=s._emscripten_bind_Graphviz_lastError_0=z.K)(),Gr=s._emscripten_bind_Graphviz_createFile_2=(e,r,t)=>(Gr=s._emscripten_bind_Graphviz_createFile_2=z.L)(e,r,t),Fr=s._emscripten_bind_Graphviz_layout_3=(e,r,t,o)=>(Fr=s._emscripten_bind_Graphviz_layout_3=z.M)(e,r,t,o),Lr=s._emscripten_bind_Graphviz_acyclic_3=(e,r,t,o)=>(Lr=s._emscripten_bind_Graphviz_acyclic_3=z.N)(e,r,t,o),Ir=s._emscripten_bind_Graphviz_tred_3=(e,r,t,o)=>(Ir=s._emscripten_bind_Graphviz_tred_3=z.O)(e,r,t,o),xr=s._emscripten_bind_Graphviz_unflatten_4=(e,r,t,o,i)=>(xr=s._emscripten_bind_Graphviz_unflatten_4=z.P)(e,r,t,o,i),Or=s._emscripten_bind_Graphviz_get_layout_result_0=e=>(Or=s._emscripten_bind_Graphviz_get_layout_result_0=z.Q)(e),br=s._emscripten_bind_Graphviz_set_layout_result_1=(e,r)=>(br=s._emscripten_bind_Graphviz_set_layout_result_1=z.R)(e,r),Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=e=>(Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=z.S)(e),Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=(e,r)=>(Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=z.T)(e,r),Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=e=>(Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=z.U)(e),Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=(e,r)=>(Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=z.V)(e,r),Pr=s._emscripten_bind_Graphviz_get_tred_out_0=e=>(Pr=s._emscripten_bind_Graphviz_get_tred_out_0=z.W)(e),Tr=s._emscripten_bind_Graphviz_set_tred_out_1=(e,r)=>(Tr=s._emscripten_bind_Graphviz_set_tred_out_1=z.X)(e,r),Zr=s._emscripten_bind_Graphviz_get_tred_err_0=e=>(Zr=s._emscripten_bind_Graphviz_get_tred_err_0=z.Y)(e),zr=s._emscripten_bind_Graphviz_set_tred_err_1=(e,r)=>(zr=s._emscripten_bind_Graphviz_set_tred_err_1=z.Z)(e,r),Sr=s._emscripten_bind_Graphviz___destroy___0=e=>(Sr=s._emscripten_bind_Graphviz___destroy___0=z._)(e),jr=(e,r)=>(jr=z.aa)(e,r);s.UTF8ToString=se;var Ce;we=function e(){Ce||Ur(),Ce||(we=e)};function Ur(){if(me>0||(Oe(),me>0))return;function e(){Ce||(Ce=!0,s.calledRun=!0,!W&&(Pe(),d(s),Qe()))}e()}Ur();function ue(){}ue.prototype=Object.create(ue.prototype),ue.prototype.constructor=ue,ue.prototype.__class__=ue,ue.__cache__={},s.WrapperObject=ue;function Xe(e){return(e||ue).__cache__}s.getCache=Xe;function ur(e,r){var t=Xe(r),o=t[e];return o||(o=Object.create((r||ue).prototype),o.ptr=e,t[e]=o)}s.wrapPointer=ur;function tn(e,r){return ur(e.ptr,r)}s.castObject=tn,s.NULL=ur(0);function nn(e){if(!e.__destroy__)throw\"Error: Cannot destroy object. (Did you create it yourself?)\";e.__destroy__(),delete Xe(e.__class__)[e.ptr]}s.destroy=nn;function on(e,r){return e.ptr===r.ptr}s.compare=on;function an(e){return e.ptr}s.getPointer=an;function sn(e){return e.__class__}s.getClass=sn;var D={buffer:0,size:0,pos:0,temps:[],needed:0,prepare(){if(D.needed){for(var e=0;e=D.size?(C(o>0),D.needed+=o,i=s._webidl_malloc(o),D.temps.push(i)):(i=D.buffer+D.pos,D.pos+=o),i},copy(e,r,t){t/=r.BYTES_PER_ELEMENT;for(var o=0;o88?13:14;do l.push(s&255),s>>=8,d-=8;while(d>7);h=-1}}return h>-1&&l.push((s|h<\n\n`}}function On(c){return c.map(xn)}function bn(c,_){let l={images:[],files:[],..._};[...l.files,...On(l.images)].forEach(s=>c.createFile(s.path,s.data))}var $r=class c{constructor(_){this._module=_}static load(){return Cr().then(_=>new c(_))}static unload(){Xr()}version(){return this._module.Graphviz.prototype.version()}layout(_,l=\"svg\",s=\"dot\",d){if(!_)return\"\";let h=new this._module.Graphviz(d?.yInvert?1:0,d?.nop?d?.nop:0),p=\"\",E=\"\";try{bn(h,d);try{p=h.layout(_,l,s)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}acyclic(_,l=!1,s=!1){if(!_)return{acyclic:!1,num_rev:0,outFile:\"\"};let d=new this._module.Graphviz,h=!1,p=0,E=\"\",G=\"\";try{try{h=d.acyclic(_,l,s),p=d.acyclic_num_rev,E=d.acyclic_outFile}catch(j){G=j.message}G=d.lastError()||G}finally{this._module.destroy(d)}if(G)throw c.unload(),new Error(G);return{acyclic:h,num_rev:p,outFile:E}}tred(_,l=!1,s=!1){if(!_)return{out:\"\",err:\"\"};let d=new this._module.Graphviz,h=\"\",p=\"\",E=\"\";try{try{d.tred(_,l,s),h=d.tred_out,p=d.tred_err}catch(G){E=G.message}E=d.lastError()||E}finally{this._module.destroy(d)}if(!h&&E)throw c.unload(),new Error(E);return{out:h,err:p}}unflatten(_,l=0,s=!1,d=0){if(!_)return\"\";let h=new this._module.Graphviz,p=\"\",E=\"\";try{try{p=h.unflatten(_,l,s,d)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}circo(_,l=\"svg\",s){return this.layout(_,l,\"circo\",s)}dot(_,l=\"svg\",s){return this.layout(_,l,\"dot\",s)}fdp(_,l=\"svg\",s){return this.layout(_,l,\"fdp\",s)}sfdp(_,l=\"svg\",s){return this.layout(_,l,\"sfdp\",s)}neato(_,l=\"svg\",s){return this.layout(_,l,\"neato\",s)}osage(_,l=\"svg\",s){return this.layout(_,l,\"osage\",s)}patchwork(_,l=\"svg\",s){return this.layout(_,l,\"patchwork\",s)}twopi(_,l=\"svg\",s){return this.layout(_,l,\"twopi\",s)}nop(_){return this.layout(_,\"dot\",\"nop\")}nop2(_){return this.layout(_,\"dot\",\"nop2\")}};export{$r as Graphviz};\n", "import type {\n IRenderOptions,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport { type Engine, type Format, Graphviz } from \"@hpcc-js/wasm-graphviz\";\nimport options from \"../../options.mjs\";\nimport ast2dot from \"../dot/index.mjs\";\n\nconst OUTPUT_TYPE2FORMAT: { [name: string]: string } = {\n oldsvg: \"svg\",\n oldps2: \"ps2\",\n oldeps: \"eps\",\n};\nconst gGraphViz = await Graphviz.load();\n\nfunction getFormat(pOptions?: IRenderOptions): Format {\n return (OUTPUT_TYPE2FORMAT[\n options.getOptionValue(pOptions as IRenderOptions, \"outputType\") as string\n ] || \"svg\") as Format;\n}\n\nfunction getEngine(pOptions?: IRenderOptions): Engine {\n return options.getOptionValue(pOptions as IRenderOptions, \"engine\") as Engine;\n}\n\nconst renderVectorWithWasm: StringRenderFunctionType = (\n pStateMachine,\n pOptions,\n) =>\n gGraphViz.layout(\n ast2dot(pStateMachine, pOptions),\n getFormat(pOptions),\n getEngine(pOptions),\n );\n\nexport default renderVectorWithWasm;\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\nconst NAME_CHAR_FORBIDDEN_RE =\n /[\\u0000-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_NAME_CHAR_FORBIDDEN_EXTRA_RE =\n /[-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/g;\n\nfunction makeValidNameChars(pCandidateNameTail: string): string {\n return pCandidateNameTail.replace(NAME_CHAR_FORBIDDEN_RE, \"_\");\n}\n\n/**\n * if it's an invalid NameStartChar but a valid NameChar smack a '_' in front of it\n * if it's an invalid NameChar as well - run it through the makeValidNameChars replacer\n */\nfunction makeValidNameStartChar(pCandidateChar: string): string {\n let lReturnValue = makeValidNameChars(pCandidateChar);\n\n if (lReturnValue.match(START_NAME_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateChar}`;\n }\n return lReturnValue;\n}\n\n/**\n * Takes any string and returns a valid XMLName using these rules:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string '__empty'\n */\nexport default (pCandidateName: string): string => {\n pCandidateName = pCandidateName || \"\";\n\n if (pCandidateName.length === 0) {\n return `__empty`;\n }\n return makeValidNameStartChar(pCandidateName[0]).concat(\n makeValidNameChars(pCandidateName.slice(1)),\n );\n};\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\n// EVENT_CHAR_FORBIDDEN_RE === forbidden for NameStartChar, except \"-\" and [0-9]\n// The SCXML xsd doesn't seem to mention '*' (\\u002A) as an allowed character. But\n// they _are_ used in event descriptors in the SCXML spec. So we've excluded\n// them from forbidden characters\nconst EVENT_CHAR_FORBIDDEN_RE =\n /[\\u00B7\\u0300-\\u036F\\u203F-\\u2040\\u0000-\\u0029\\u002B-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_EVENT_CHAR_FORBIDDEN_EXTRA_RE = /[.]/g;\n\nfunction makeValidEventChar(pCandidateEventStringTail: string): string {\n return pCandidateEventStringTail.replace(EVENT_CHAR_FORBIDDEN_RE, \"_\");\n}\n\nfunction makeValidEventStartChar(pCandidateEventStringStart: string): string {\n let lReturnValue = makeValidEventChar(pCandidateEventStringStart);\n\n if (lReturnValue.match(START_EVENT_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateEventStringStart}`;\n }\n return lReturnValue;\n}\n\nfunction makeValidEventName(pCandidateEventName: string): string {\n pCandidateEventName = pCandidateEventName.replace(/\\s+/g, \" \").trim();\n\n return makeValidEventStartChar(pCandidateEventName[0]).concat(\n makeValidEventChar(pCandidateEventName.slice(1)),\n );\n}\n/**\n * Takes any string and returns a valid SCXML events string:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string 'empty'\n * *\n * @returns a valid SCXML events string\n */\nexport default (pCandidateEventNames?: string): string => {\n const lCandidateEventNames = pCandidateEventNames ?? \"\";\n\n if (lCandidateEventNames.length === 0) {\n return \"empty\";\n }\n\n return lCandidateEventNames\n .split(/[\\n\\r]+/)\n .filter((pCandidateEventName) => pCandidateEventName.length > 0)\n .map(makeValidEventName)\n .join(\" \");\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n ActionTypeType,\n IActionType,\n IRenderOptions,\n IState,\n IStateMachine,\n ITransition,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"./scjson.js\";\nimport makeValidXMLName from \"./make-valid-xml-name.mjs\";\nimport makeValidEventNames from \"./make-valid-event-names.mjs\";\n\nconst STATE_TYPE2SCXML_STATE_KIND: { [stateType: string]: string } = {\n regular: \"state\",\n initial: \"initial\",\n final: \"final\",\n terminate: \"final\",\n parallel: \"parallel\",\n history: \"history\",\n deephistory: \"history\",\n};\n\nfunction stateType2SCXMLStateKind(pStateType: string): string {\n return STATE_TYPE2SCXML_STATE_KIND[pStateType] || \"state\";\n}\n\nfunction transformTransition(pTransition: ITransition): ISCJSONTransition {\n const lReturnValue: ISCJSONTransition = {\n target: makeValidXMLName(pTransition.to),\n };\n\n if (pTransition.event) {\n lReturnValue.event = makeValidEventNames(pTransition.event);\n }\n if (pTransition.cond) {\n lReturnValue.cond = pTransition.cond;\n }\n if (pTransition.action) {\n lReturnValue.action = pTransition.action;\n }\n if (pTransition.type) {\n lReturnValue.type = pTransition.type;\n }\n return lReturnValue;\n}\n\nfunction extractTriggers(\n pTriggers: IActionType[],\n pTriggerType: ActionTypeType,\n): string[] {\n return pTriggers\n .filter((pTrigger) => pTrigger.type === pTriggerType)\n .map((pTrigger) => pTrigger.body);\n}\n\nfunction pullOutActionType(\n pReturnValue: ISCJSONState,\n pTriggersType: \"onentries\" | \"onexits\",\n pActions: IActionType[],\n pActionType: ActionTypeType,\n): void {\n const lTriggerArray: string[] = extractTriggers(pActions, pActionType);\n\n if (lTriggerArray.length > 0) {\n pReturnValue[pTriggersType] = (pReturnValue[pTriggersType] || []).concat(\n lTriggerArray,\n );\n }\n}\n\nfunction transformTriggers(pReturnValue: ISCJSONState, pState: IState): void {\n if (pState.actions) {\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"entry\");\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"activity\");\n pullOutActionType(pReturnValue, \"onexits\", pState.actions, \"exit\");\n }\n}\n\nfunction transformTransitions(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n const lTransitions = pTransitions\n .filter((pTransition) => pTransition.from === pState.name)\n .map(transformTransition);\n\n if (lTransitions.length > 0) {\n pReturnValue.transitions = lTransitions;\n }\n}\n\nfunction transformCompositeState(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n if (pState.statemachine) {\n // recursion, so ...\n // eslint-disable-next-line no-use-before-define, no-undefined\n const lRenderedState = render(pState.statemachine, undefined, pTransitions);\n\n pReturnValue.states = (pReturnValue.states || []).concat(\n lRenderedState.states,\n );\n if (lRenderedState.initial) {\n pReturnValue.initial = lRenderedState.initial;\n }\n }\n}\n\nfunction transformState(pTransitions: ITransition[]) {\n pTransitions = pTransitions || [];\n\n return (pState: IState): ISCJSONState => {\n const lReturnValue: ISCJSONState = {\n kind: stateType2SCXMLStateKind(pState.type),\n id: makeValidXMLName(pState.name),\n };\n\n if (pState.type === \"deephistory\") {\n // as 'shallow' is the default anyway, we leave it out\n lReturnValue.type = \"deep\";\n }\n\n transformTriggers(lReturnValue, pState);\n\n transformTransitions(lReturnValue, pState, pTransitions);\n\n transformCompositeState(lReturnValue, pState, pTransitions);\n return lReturnValue;\n };\n}\n\nfunction findInitialPseudoStateName(\n pStateMachine: IStateMachine,\n): string | undefined {\n const lInitial = pStateMachine.states.filter(\n (pState) => pState.type === \"initial\",\n );\n\n if (lInitial.length > 0) {\n return lInitial[0].name;\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n}\n\nfunction findInitialStateName(\n pStateMachine: IStateMachine,\n pInitialPseudoStateName?: string,\n): string | undefined {\n let lReturnValue = pInitialPseudoStateName;\n\n if (pInitialPseudoStateName && pStateMachine.transitions) {\n const lInitialTransitions = pStateMachine.transitions.filter(\n (pTransition) => pTransition.from === pInitialPseudoStateName,\n );\n\n if (lInitialTransitions.length > 0 && !lInitialTransitions[0].action) {\n lReturnValue = lInitialTransitions[0].to;\n }\n }\n return lReturnValue;\n}\n\nexport default function render(\n pStateMachine: IStateMachine,\n _pOptions?: IRenderOptions,\n pTransitions?: ITransition[],\n): ISCJSONMachine {\n const lInitialPseudoStateName = findInitialPseudoStateName(pStateMachine);\n const lInitialStateName = findInitialStateName(\n pStateMachine,\n lInitialPseudoStateName,\n );\n const lReturnValue: ISCJSONMachine = {\n states: pStateMachine.states\n .filter((pState) => {\n if (\n lInitialStateName &&\n lInitialStateName !== lInitialPseudoStateName\n ) {\n return pState.type !== \"initial\";\n }\n return true;\n })\n .map(\n transformState(\n pTransitions ||\n new StateMachineModel(pStateMachine).flattenedTransitions,\n ),\n ),\n };\n\n if (lInitialStateName) {\n lReturnValue.initial = makeValidXMLName(lInitialStateName);\n }\n return lReturnValue;\n}\n", "import he from \"he\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"../scjson/scjson.js\";\n\nconst INDENT_LENGTH = 4;\n\nfunction indentString(pString: string, pCount: number): string {\n const lRegex = /^(?!\\s*$)/gm;\n\n return pString.replace(lRegex, \" \".repeat(pCount));\n}\n\nfunction renderTransitionAttributes(pTransition: ISCJSONTransition): string {\n let lReturnValue = \"\";\n if (pTransition.event) {\n lReturnValue += ` event=\"${he.escape(pTransition.event)}\"`;\n }\n if (pTransition.cond) {\n lReturnValue += ` cond=\"${he.escape(pTransition.cond)}\"`;\n }\n if (pTransition.type) {\n lReturnValue += ` type=\"${he.escape(pTransition.type)}\"`;\n }\n lReturnValue += ` target=\"${he.escape(pTransition.target)}\"`;\n return lReturnValue;\n}\n\nfunction renderRegularTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n const lReturnValue = `\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderActionTransition(\n pTransition: ISCJSONTransition & { action: string },\n pDepth: number,\n): string {\n const lReturnValue = `\n\n ${he.escape(pTransition.action)}\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n if (pTransition.action) {\n return renderActionTransition(\n pTransition as ISCJSONTransition & { action: string },\n pDepth,\n );\n }\n\n return renderRegularTransition(pTransition, pDepth);\n}\n\nfunction renderTransitions(\n pTransitions?: ISCJSONTransition[],\n // @ts-expect-error Yes. pDepth follows optional parameter. So What?\n pDepth: number,\n): string {\n return (pTransitions ?? [])\n .map((pTransition) => renderTransition(pTransition, pDepth))\n .join(\"\");\n}\n\nfunction renderSimpleTag(\n pOnExit: string,\n pTag: string,\n pDepth: number,\n): string {\n const lReturnValue = `\n<${pTag}>${he.escape(pOnExit)}`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnEntries(pOnEntries?: string[], pDepth: number): string {\n return (pOnEntries ?? [])\n .map((pOnEntry) => renderSimpleTag(pOnEntry, \"onentry\", pDepth))\n .join(\"\");\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnExits(pOnExits?: string[], pDepth: number): string {\n return (pOnExits ?? [])\n .map((pOnExit) => renderSimpleTag(pOnExit, \"onexit\", pDepth))\n .join(\"\");\n}\n\nfunction renderStateAttributes(pState: ISCJSONState): string {\n let lReturnValue = ` id=\"${he.escape(pState.id)}\"`;\n if (pState.initial) {\n lReturnValue += ` initial=\"${he.escape(pState.initial)}\"`;\n }\n if (pState.type) {\n lReturnValue += ` type=\"${he.escape(pState.type)}\"`;\n }\n return lReturnValue;\n}\n\nfunction renderState(pState: ISCJSONState, pDepth: number): string {\n let lReturnValue = `\\n<${pState.kind}${renderStateAttributes(pState)}>`;\n // eslint-disable-next-line no-use-before-define -- recursion\n lReturnValue += renderStates(pState.states, pDepth);\n lReturnValue += renderOnEntries(pState.onentries, pDepth);\n lReturnValue += renderOnExits(pState.onexits, pDepth);\n lReturnValue += renderTransitions(pState.transitions, pDepth);\n lReturnValue += `\\n`;\n\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderStates(pStates?: ISCJSONState[], pDepth = 1): string {\n return (pStates ?? []).map((pState) => renderState(pState, pDepth)).join(\"\");\n}\n\nfunction renderInitialAttribute(pInitialString?: string): string {\n return pInitialString ? `initial=\"${pInitialString}\" ` : \"\";\n}\n\nexport default function renderSCXML(pSCJSON: ISCJSONMachine): string {\n return `\n${renderStates(pSCJSON.states)}\n\n`;\n}\n", "import type { StringRenderFunctionType } from \"types/state-machine-cat.mjs\";\nimport ast2scjson from \"../scjson/index.mjs\";\nimport renderFomSCJSON from \"./render-from-scjson.mjs\";\n\nconst renderSCXML: StringRenderFunctionType = (pStateMachine) =>\n renderFomSCJSON(ast2scjson(pStateMachine));\n\nexport default renderSCXML;\n", "import type {\n OutputType,\n RenderFunctionType,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport smcatRendererAsImported from \"./smcat.mjs\";\nimport renderDot from \"./dot/index.mjs\";\nimport svg from \"./vector/vector-with-wasm.mjs\";\nimport scjson from \"./scjson/index.mjs\";\nimport scxml from \"./scxml/index.mjs\";\n\n// tsc doesn't recognize the function that smcat/index.js exports as\n// StringRenderFunctionType, so we hack around it\nconst smcat = smcatRendererAsImported as StringRenderFunctionType;\n\nexport default function getRenderFunction(\n pOutputType: OutputType,\n): RenderFunctionType {\n const lOutputType2RenderFunctionMap: Map =\n // @ts-expect-error - now renderDot is typed, typescript seems to have an issue\n // with it. Works perfectly fine, though, so we're ignoring it for now.\n new Map([\n [\"smcat\", smcat],\n [\"dot\", renderDot],\n [\"svg\", svg],\n [\"oldsvg\", svg],\n [\"scjson\", scjson],\n [\"scxml\", scxml],\n ]);\n\n return lOutputType2RenderFunctionMap.get(pOutputType) ?? ((pX) => pX);\n}\n", "// generated by tools/get-version.mts - edits will be overwritten\nexport const version = \"12.0.20\";\n", "/* eslint-disable budapestian/global-constant-pattern */\nimport type {\n IAllowedValues,\n IRenderOptions,\n IStateMachine,\n OutputType,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"./options.mjs\";\nimport parse from \"./parse/index.mjs\";\nimport desugar from \"./transform/desugar.mjs\";\nimport getRenderFunction from \"./render/index.mjs\";\nimport { version as _version } from \"./version.mjs\";\n\n/**\n * Translates the input script to an output-script.\n *\n * @throws {Error} if an error occurred and no callback\n * function was passed: the error\n *\n * Options: see https://github.com/sverweij/state-machine-cat/docs/api.md\n *\n */\nexport function render(\n pScript: string | IStateMachine,\n pOptions: IRenderOptions,\n): string {\n const lOptions = pOptions ?? {};\n const lStateMachine = parse.getAST(pScript, lOptions);\n const lDesugar = options.getOptionValue(lOptions, \"desugar\");\n\n return getRenderFunction(\n options.getOptionValue(lOptions, \"outputType\") as OutputType,\n )(lDesugar ? desugar(lStateMachine) : lStateMachine, lOptions);\n}\n\n/**\n * The current (semver compliant) version number string of\n * state machine cat\n */\nexport const version: string = _version;\n\n/**\n * Returns an object with each of the options you can pass to\n * the render function\n * - the default value\n * - the possible values in an array of objects, each of which\n * has the properties:\n * - name: the value\n */\nexport function getAllowedValues(): IAllowedValues {\n return options.getAllowedValues();\n}\n\nexport default {\n render,\n version,\n getAllowedValues,\n};\n", "const MAX_SIGNED_SHORT = 32767;\n\nexport const toRasterURI = (pSVG, pCallback) => {\n const lImg = document.createElement(\"img\");\n\n lImg.src =\n \"data:image/svg+xml;charset=utf-8,\" +\n encodeURIComponent(']>'.concat(pSVG));\n lImg.addEventListener(\"load\", function(pEvent) {\n const lCanvas = document.createElement(\"canvas\");\n const lCanvasContext = lCanvas.getContext(\"2d\");\n const lImage = pEvent.target;\n\n /*\n * When the passed image is too big for the browser to handle\n * return an error string\n *\n * See https://github.com/sverweij/mscgen_js/issues/248 for\n * an overview of the practical limits in various browsers and\n * pointers for further research.\n */\n if (lImage.width > MAX_SIGNED_SHORT || lImage.height > MAX_SIGNED_SHORT) {\n pCallback(null, \"image-too-big\");\n } else {\n lCanvas.width = lImage.width;\n lCanvas.height = lImage.height;\n\n lCanvasContext.drawImage(lImage, 0, 0);\n pCallback(lCanvas.toDataURL(\"image/png\", 0.8));\n }\n });\n};\n", "export const themeAttributeMap = {\n engineering: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"dodgerblue\" },\n { name: \"color\", value: \"white\" },\n { name: \"fontname\", value: \"courier\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontname\", value: \"courier\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontname\", value: \"courier\" },\n { name: \"fontcolor\", value: \"white\" }\n ]\n },\n reverse: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"black\" },\n { name: \"color\", value: \"white\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontcolor\", value: \"white\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"white\" },\n { name: \"fontcolor\", value: \"white\" }\n ]\n },\n contrast: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"black\" },\n { name: \"color\", value: \"yellow\" },\n { name: \"fontcolor\", value: \"yellow\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"yellow\" },\n { name: \"fontcolor\", value: \"yellow\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"yellow\" },\n { name: \"fontcolor\", value: \"yellow\" }\n ]\n },\n policetape: {\n dotGraphAttrs: [{ name: \"bgcolor\", value: \"yellow\" }],\n dotNodeAttrs: [],\n dotEdgeAttrs: []\n },\n transparent: {\n dotGraphAttrs: [{ name: \"bgcolor\", value: \"transparent\" }],\n dotNodeAttrs: [],\n dotEdgeAttrs: []\n },\n zany: {\n dotGraphAttrs: [\n { name: \"bgcolor\", value: \"deeppink\" },\n { name: \"color\", value: \"green\" },\n { name: \"fontname\", value: '\"Comic Sans MS\"' },\n { name: \"fontcolor\", value: \"green\" },\n { name: \"nslimit\", value: \"0\" },\n { name: \"nslimit1\", value: \"1\" }\n ],\n dotNodeAttrs: [\n { name: \"color\", value: \"green\" },\n { name: \"fontname\", value: '\"Comic Sans MS\"' },\n { name: \"fontcolor\", value: \"green\" }\n ],\n dotEdgeAttrs: [\n { name: \"color\", value: \"green\" },\n { name: \"fontname\", value: '\"Comic Sans MS\"' },\n { name: \"fontcolor\", value: \"green\" }\n ]\n }\n};\n", "import queryString from \"query-string\";\nimport smcat from \"../src/index.mjs\";\nimport { toRasterURI } from \"./sitesrc/to-raster-uri\";\nimport { themeAttributeMap } from \"./sitesrc/theme-attribute-map\";\n\nconst LOCALSTORAGE_KEY = `state-machine-cat-${smcat.version.split(\".\")[0]}`;\nconst DEFAULT_INPUTSCRIPT = `initial,\n\"media player off\",\n\n\"media player on\" {\n stopped, playing, paused;\n\n stopped => playing : play;\n playing => stopped : stop;\n playing => paused : pause;\n paused => playing : pause;\n paused => stopped : stop;\n};\n\ninitial => \"media player off\";\n\"media player off\" => stopped : power;\n\"media player on\" => \"media player off\" : power;`;\n\nlet gModel = {\n outputType: \"svg\",\n inputType: \"smcat\",\n engine: \"dot\",\n theme: \"vanilla\",\n direction: \"top-down\",\n fitToWidth: false,\n desugar: false,\n autoRender: true,\n inputscript: DEFAULT_INPUTSCRIPT,\n sample: \"/samples/mediaplayer.smcat\",\n};\n\nfunction startsWith(pCharacter) {\n return (pKey) => pKey.substr(0, 1) === pCharacter;\n}\n\nfunction toKeyValue(pQueryParams) {\n return (pKey) => ({ name: pKey.substr(1), value: pQueryParams[pKey] });\n}\n\nfunction persistState(pKey, pState) {\n if (typeof localStorage !== \"undefined\") {\n localStorage.setItem(pKey, JSON.stringify(pState));\n }\n}\nfunction getState(pKey, pDefault) {\n let lRetval = pDefault;\n if (typeof localStorage !== \"undefined\") {\n try {\n lRetval = JSON.parse(localStorage.getItem(pKey)) || pDefault;\n } catch (e) {\n console.warn(e);\n }\n }\n return lRetval;\n}\n\nfunction toVectorURI(pSVGSource) {\n return (\n \"data:image/svg+xml;charset=utf-8,\" +\n encodeURIComponent(\n ']>'.concat(pSVGSource),\n )\n );\n}\n\nfunction updateViewModel(pTarget) {\n return (pEvent) => {\n gModel[pTarget || pEvent.target.id] =\n pEvent.target.type === \"checkbox\"\n ? pEvent.target.checked\n : pEvent.target.value;\n persistState(LOCALSTORAGE_KEY, gModel);\n showModel(gModel);\n };\n}\n\nfunction outputIsSaveable() {\n const lSVGs = window.output.getElementsByTagName(\"svg\");\n return lSVGs.length > 0;\n}\n\nfunction showModel(pModel) {\n document.getElementById(\"autoRender\").checked = pModel.autoRender;\n document.getElementById(\"fitToWidth\").checked = pModel.fitToWidth;\n document.getElementById(\"desugar\").checked = pModel.desugar;\n document.getElementById(\"engine\").value = pModel.engine;\n document.getElementById(\"theme\").value = pModel.theme;\n document.getElementById(\"direction\").value = pModel.direction;\n document.getElementById(\"sample\").value = pModel.sample;\n document.getElementById(\"inputscript\").value = pModel.inputscript;\n document.getElementById(pModel.outputType).checked = true;\n document.getElementById(`input_${pModel.inputType}`).checked = true;\n\n if (gModel.autoRender) {\n document.getElementById(\"render\").style = \"display : none\";\n render();\n } else {\n document.getElementById(\"render\").style = \"\";\n }\n\n if (outputIsSaveable()) {\n const lSVGs = window.output.getElementsByTagName(\"svg\");\n const lUniqueIshPostfix = new Date().toISOString();\n document.getElementById(\"save-svg\").href = toVectorURI(lSVGs[0].outerHTML);\n document.getElementById(\"save-svg\").download =\n `state-machine-${lUniqueIshPostfix}.svg`;\n toRasterURI(lSVGs[0].outerHTML, (pRasterURI) => {\n document.getElementById(\"save-png\").href = pRasterURI;\n document.getElementById(\"save-png\").download =\n `state-machine-${lUniqueIshPostfix}.png`;\n });\n }\n}\n\nfunction getAttrFromQueryParams(pQueryParams) {\n const lDotGraphAttrs = Object.keys(pQueryParams)\n .filter(startsWith(\"G\"))\n .map(toKeyValue(pQueryParams));\n const lDotNodeAttrs = Object.keys(pQueryParams)\n .filter(startsWith(\"N\"))\n .map(toKeyValue(pQueryParams));\n const lDotEdgeAttrs = Object.keys(pQueryParams)\n .filter(startsWith(\"E\"))\n .map(toKeyValue(pQueryParams));\n let lRetval = {};\n if (lDotGraphAttrs.length > 0) {\n lRetval.dotGraphAttrs = lDotGraphAttrs;\n }\n if (lDotNodeAttrs.length > 0) {\n lRetval.dotNodeAttrs = lDotNodeAttrs;\n }\n if (lDotEdgeAttrs.length > 0) {\n lRetval.dotEdgeAttrs = lDotEdgeAttrs;\n }\n\n return lRetval;\n}\n\nfunction theme2attr(pThemeAttributeMap, pTheme) {\n return (\n pThemeAttributeMap[pTheme] || {\n dotGraphAttrs: [],\n dotNodeAttrs: [],\n dotEdgeAttrs: [],\n }\n );\n}\n\nfunction sanitizeLocation(pLocationString) {\n return pLocationString.slice(0, 1024).replace(/ pOption.name === \"bgcolor\",\n ) || {\n value: \"transparent\",\n }\n ).value\n }`;\n window.output.innerHTML = formatToOutput(\n lResult,\n gModel.outputType,\n gModel.fitToWidth,\n );\n } catch (pError) {\n window.output.innerHTML = pError;\n }\n}\n\nfunction formatToOutput(pResult, pOutputType, pFitToWidth) {\n switch (pOutputType) {\n case \"json\":\n case \"scjson\": {\n return `
${JSON.stringify(pResult, null, \"    \").replace(\n        /`;\n    }\n    case \"svg\": {\n      return pFitToWidth\n        ? pResult.replace(/svg width=\"[^\"]+\"/g, 'svg width=\"100%\"')\n        : pResult;\n    }\n    default: {\n      return `
${pResult.replace(/`;\n    }\n  }\n}\n\nfunction setTextAreaToWindowHeight() {\n  window.inputscript.style.height = \"${height}px\".replace(\n    \"${height}\",\n    window.innerHeight - 120,\n  );\n}\n\nfunction showContextMenu(pX, pY) {\n  window.contextmenu.style = `display: block; position: absolute; z-index: 2; left: ${pX}px; top: ${\n    pY - 70\n  }px`;\n}\n\nfunction hideContextMenu() {\n  window.contextmenu.style = \"display : none\";\n}\n\nfunction logError(pError) {\n  LOG && console.error(pError);\n}\n\ngModel = getState(LOCALSTORAGE_KEY, gModel);\n\nwindow.svg.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.dot.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.json.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.smcat.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.scjson.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.scxml.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.svg.addEventListener(\"click\", updateViewModel(\"outputType\"), false);\nwindow.inputscript.addEventListener(\"input\", updateViewModel());\nwindow.direction.addEventListener(\"change\", updateViewModel());\nwindow.engine.addEventListener(\"change\", updateViewModel());\nwindow.theme.addEventListener(\"change\", updateViewModel());\nwindow.input_json.addEventListener(\n  \"click\",\n  updateViewModel(\"inputType\"),\n  false,\n);\nwindow.input_smcat.addEventListener(\n  \"click\",\n  updateViewModel(\"inputType\"),\n  false,\n);\nwindow.input_scxml.addEventListener(\n  \"click\",\n  updateViewModel(\"inputType\"),\n  false,\n);\nwindow.fitToWidth.addEventListener(\"click\", updateViewModel(), false);\nwindow.autoRender.addEventListener(\"click\", updateViewModel(), false);\nwindow.desugar.addEventListener(\"click\", updateViewModel(), false);\nwindow.render.addEventListener(\"click\", () => render(), false);\nwindow.addEventListener(\"resize\", setTextAreaToWindowHeight);\nwindow.output.addEventListener(\"contextmenu\", (pEvent) => {\n  if (outputIsSaveable()) {\n    pEvent.preventDefault();\n\n    showContextMenu(pEvent.clientX, pEvent.clientY);\n  }\n});\n\ndocument.getElementById(\"save-svg\").addEventListener(\"click\", hideContextMenu);\ndocument.getElementById(\"save-png\").addEventListener(\"click\", hideContextMenu);\n\nwindow.output.addEventListener(\"click\", hideContextMenu);\n\nwindow.addEventListener(\"keyup\", (pEvent) => {\n  if (pEvent.code === \"Escape\") {\n    hideContextMenu();\n  }\n});\n\nwindow.sample.addEventListener(\"change\", (pEvent) => {\n  if (pEvent.target.value) {\n    gModel.sample = pEvent.target.value;\n\n    fetch(pEvent.target.value)\n      .then((pResponse) => {\n        if (pResponse.status === 200) {\n          return pResponse.text();\n        }\n        logError(pResponse);\n      })\n      .then((pSourceText) => {\n        if (pSourceText) {\n          gModel.inputscript = pSourceText;\n          persistState(LOCALSTORAGE_KEY, gModel);\n          showModel(gModel);\n        }\n      })\n      .catch(logError);\n  }\n});\n\nwindow.version.innerHTML = \"state machine cat ${version}\".replace(\n  \"${version}\",\n  smcat.version,\n);\nsetTextAreaToWindowHeight();\nshowModel(gModel);\n/* global LOG */\n"],
+  "mappings": "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YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,MAAM,OAAO,MAAM,SAAS,KAAK,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAO,OAAO,OAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,GAAK,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,OAAS,UAAU,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,QAAQ,OAAS,QAAQ,SAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,SAAS,OAAS,MAAM,OAAS,MAAM,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,OAAS,OAAO,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,SAAS,QAAQ,OAAS,UAAU,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,KAAK,OAAO,QAAQ,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,UAAU,OAAS,UAAU,OAAS,KAAK,OAAS,MAAM,OAAS,KAAK,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,UAAU,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,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",
   "names": ["_CodeOrName", "exports", "Name", "s", "_Code", "code", "item", "_a", "c", "names", "_", "strs", "args", "i", "addCodeArg", "plus", "str", "expr", "safeStringify", "optimize", "arg", "interpolate", "res", "mergeExprItems", "a", "b", "strConcat", "c1", "c2", "x", "stringify", "getProperty", "key", "getEsmExportName", "regexpCode", "rx", "code_1", "ValueError", "name", "UsedValueState", "exports", "Scope", "prefixes", "parent", "nameOrPrefix", "prefix", "ng", "_b", "_a", "ValueScopeName", "nameStr", "value", "property", "itemIndex", "line", "ValueScope", "opts", "valueKey", "vs", "_name", "s", "keyOrRef", "scopeName", "values", "usedValues", "getCode", "valueCode", "code", "nameSet", "c", "def", "code_1", "scope_1", "code_2", "exports", "scope_2", "Node", "_names", "_constants", "Def", "varKind", "name", "rhs", "es5", "_n", "names", "constants", "optimizeExpr", "Assign", "lhs", "sideEffects", "addExprNames", "AssignOp", "op", "Label", "label", "Break", "Throw", "error", "AnyCode", "code", "ParentNode", "nodes", "opts", "i", "n", "subtractNames", "addNames", "BlockNode", "Root", "Else", "If", "_If", "condition", "cond", "e", "ns", "not", "_a", "For", "ForLoop", "iteration", "ForRange", "from", "to", "ForIter", "loop", "iterable", "Func", "args", "async", "Return", "Try", "_b", "Catch", "Finally", "CodeGen", "extScope", "prefix", "prefixOrName", "value", "keyOrRef", "scopeName", "nameOrPrefix", "constant", "_constant", "c", "keyValues", "key", "thenBody", "elseBody", "node", "forBody", "arr", "obj", "tryBody", "catchCode", "finallyCode", "body", "nodeCount", "len", "toClose", "funcBody", "N1", "N2", "expr", "replaceName", "canOptimize", "items", "x", "par", "andCode", "mappend", "and", "orCode", "or", "y", "codegen_1", "code_1", "toHash", "arr", "hash", "item", "exports", "alwaysValidSchema", "it", "schema", "checkUnknownRules", "schemaHasRules", "opts", "self", "rules", "key", "checkStrictMode", "schemaHasRulesButRef", "RULES", "schemaRefOrVal", "topSchemaRef", "schemaPath", "keyword", "$data", "unescapeFragment", "str", "unescapeJsonPointer", "escapeFragment", "escapeJsonPointer", "eachItem", "xs", "f", "x", "makeMergeEvaluated", "mergeNames", "mergeToName", "mergeValues", "resultToName", "gen", "from", "to", "toName", "res", "setEvaluated", "evaluatedPropsToName", "items", "ps", "props", "p", "snippets", "useFunc", "Type", "getErrorPath", "dataProp", "dataPropType", "jsPropertySyntax", "isNumber", "msg", "mode", "codegen_1", "names", "exports", "codegen_1", "util_1", "names_1", "exports", "keyword", "schemaType", "reportError", "cxt", "error", "errorPaths", "overrideAllErrors", "it", "gen", "compositeRule", "allErrors", "errObj", "errorObjectCode", "addError", "returnErrors", "reportExtraError", "resetErrorsCount", "errsCount", "extendErrors", "schemaValue", "data", "err", "i", "errs", "validateName", "schemaEnv", "E", "createErrors", "errorObject", "keyValues", "errorInstancePath", "errorSchemaPath", "extraErrorProps", "errorPath", "instancePath", "instPath", "errSchemaPath", "schemaPath", "parentSchema", "schPath", "params", "message", "opts", "propertyName", "topSchemaRef", "errors_1", "codegen_1", "names_1", "boolError", "topBoolOrEmptySchema", "it", "gen", "schema", "validateName", "falseSchemaError", "exports", "boolOrEmptySchema", "valid", "overrideAllErrors", "data", "cxt", "_jsonTypes", "jsonTypes", "isJSONType", "x", "exports", "getRules", "groups", "schemaHasRulesForType", "schema", "self", "type", "group", "shouldUseGroup", "exports", "rule", "shouldUseRule", "_a", "kwd", "rules_1", "applicability_1", "errors_1", "codegen_1", "util_1", "DataType", "exports", "getSchemaTypes", "schema", "types", "getJSONTypes", "ts", "coerceAndCheckDataType", "it", "gen", "data", "opts", "coerceTo", "coerceToTypes", "checkTypes", "wrongType", "checkDataTypes", "coerceData", "reportTypeError", "COERCIBLE", "coerceTypes", "t", "dataType", "coerced", "coerceSpecificType", "assignParentData", "parentData", "parentDataProperty", "expr", "checkDataType", "strictNums", "correct", "EQ", "cond", "numCond", "_cond", "dataTypes", "notObj", "typeError", "schemaValue", "cxt", "getTypeErrorContext", "schemaCode", "codegen_1", "util_1", "assignDefaults", "it", "ty", "properties", "items", "key", "assignDefault", "sch", "exports", "prop", "defaultValue", "gen", "compositeRule", "data", "opts", "childData", "condition", "codegen_1", "util_1", "names_1", "util_2", "checkReportMissingProp", "cxt", "prop", "gen", "data", "it", "noPropertyInData", "exports", "checkMissingProp", "opts", "properties", "missing", "reportMissingProp", "hasPropFunc", "isOwnProperty", "property", "propertyInData", "ownProperties", "cond", "allSchemaProperties", "schemaMap", "p", "schemaProperties", "callValidateCode", "schemaCode", "topSchemaRef", "schemaPath", "errorPath", "func", "context", "passSchema", "dataAndSchema", "valCxt", "args", "newRegExp", "usePattern", "pattern", "u", "regExp", "rx", "validateArray", "keyword", "valid", "validArr", "validateItems", "notValid", "len", "i", "validateUnion", "schema", "sch", "schValid", "_sch", "schCxt", "codegen_1", "names_1", "code_1", "errors_1", "macroKeywordCode", "cxt", "def", "gen", "keyword", "schema", "parentSchema", "it", "macroSchema", "schemaRef", "useKeyword", "valid", "exports", "funcKeywordCode", "$data", "checkAsyncKeyword", "validate", "validateRef", "validateKeyword", "_a", "assignValid", "modifyData", "reportErrs", "ruleErrs", "validateAsync", "validateSync", "addErrs", "e", "validateErrs", "_await", "passCxt", "passSchema", "errors", "data", "errs", "schemaEnv", "result", "validSchemaType", "schemaType", "allowUndefined", "st", "validateKeywordUsage", "opts", "self", "errSchemaPath", "deps", "kwd", "msg", "codegen_1", "util_1", "getSubschema", "it", "keyword", "schemaProp", "schema", "schemaPath", "errSchemaPath", "topSchemaRef", "sch", "exports", "extendSubschemaData", "subschema", "dataProp", "dpType", "data", "dataTypes", "propertyName", "gen", "errorPath", "dataPathArr", "opts", "nextData", "dataContextProps", "_nextData", "extendSubschemaMode", "jtdDiscriminator", "jtdMetadata", "compositeRule", "createErrors", "allErrors", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "equal", "a", "b", "length", "i", "keys", "key", "require_json_schema_traverse", "__commonJSMin", "exports", "module", "traverse", "schema", "opts", "cb", "pre", "post", "_traverse", "jsonPtr", "rootSchema", "parentJsonPtr", "parentKeyword", "parentSchema", "keyIndex", "key", "sch", "i", "prop", "escapeJsonPtr", "str", "util_1", "equal", "traverse", "SIMPLE_INLINED", "inlineRef", "schema", "limit", "hasRef", "countKeys", "exports", "REF_KEYWORDS", "key", "sch", "count", "getFullPath", "resolver", "id", "normalize", "normalizeId", "p", "_getFullPath", "TRAILING_SLASH_HASH", "resolveUrl", "baseId", "ANCHOR", "getSchemaRefs", "schemaId", "uriResolver", "schId", "baseIds", "pathPrefix", "localRefs", "schemaRefs", "jsonPtr", "parentJsonPtr", "fullPath", "innerBaseId", "addRef", "addAnchor", "ref", "_resolve", "ambiguos", "schOrRef", "checkAmbiguosRef", "anchor", "sch1", "sch2", "boolSchema_1", "dataType_1", "applicability_1", "dataType_2", "defaults_1", "keyword_1", "subschema_1", "codegen_1", "names_1", "resolve_1", "util_1", "errors_1", "validateFunctionCode", "it", "isSchemaObj", "checkKeywords", "schemaCxtHasRules", "topSchemaObjCode", "validateFunction", "exports", "gen", "validateName", "schema", "schemaEnv", "opts", "body", "funcSourceUrl", "destructureValCxtES5", "destructureValCxt", "commentKeyword", "checkNoDefault", "resetEvaluated", "typeAndKeywords", "returnResults", "schId", "subschemaCode", "valid", "subSchemaObjCode", "self", "key", "updateContext", "checkAsyncSchema", "errsCount", "checkRefsAndKeywords", "schemaKeywords", "types", "checkedTypes", "errSchemaPath", "msg", "schemaPath", "rootName", "ValidationError", "assignEvaluated", "evaluated", "props", "items", "typeErrors", "data", "allErrors", "RULES", "keywordCode", "checkStrictTypes", "group", "groupKeywords", "iterateKeywords", "useDefaults", "rule", "checkContextTypes", "checkMultipleTypes", "checkKeywordTypes", "t", "includesType", "strictTypesError", "narrowSchemaTypes", "ts", "rules", "keyword", "type", "hasApplicableType", "schTs", "kwdT", "withTypes", "KeywordCxt", "def", "getData", "condition", "successAction", "failAction", "schemaCode", "append", "errorParams", "errorPaths", "cond", "obj", "assign", "codeBlock", "$dataValid", "schemaType", "wrong$DataType", "invalid$DataSchema", "st", "validateSchemaRef", "appl", "subschema", "nextContext", "schemaCxt", "toName", "ruleType", "cxt", "JSON_POINTER", "RELATIVE_JSON_POINTER", "$data", "dataLevel", "dataNames", "dataPathArr", "jsonPointer", "matches", "up", "errorMsg", "expr", "segments", "segment", "pointerType", "ValidationError", "errors", "exports", "resolve_1", "MissingRefError", "resolver", "baseId", "ref", "msg", "exports", "codegen_1", "validation_error_1", "names_1", "resolve_1", "util_1", "validate_1", "SchemaEnv", "env", "schema", "_a", "exports", "compileSchema", "sch", "_sch", "getCompilingSchema", "rootId", "es5", "lines", "ownProperties", "gen", "_ValidationError", "validateName", "schemaCxt", "sourceCode", "validateCode", "validate", "props", "items", "e", "resolveRef", "root", "baseId", "ref", "schOrFunc", "resolve", "schemaId", "inlineOrCompile", "schEnv", "sameSchemaEnv", "s1", "s2", "resolveSchema", "p", "refPath", "getJsonPointer", "id", "schOrRef", "schId", "PREVENT_SCOPE_CHANGE", "parsedRef", "part", "partSchema", "$ref", "require_data", "__commonJSMin", "exports", "module", "require_scopedChars", "__commonJSMin", "exports", "module", "HEX", "require_utils", "__commonJSMin", "exports", "module", "HEX", "normalizeIPv4", "host", "findToken", "matches", "address", "stripLeadingZeros", "stringArrayToHexStripped", "input", "keepZero", "acc", "strip", "c", "getIPV6", "tokenCount", "output", "buffer", "isZone", "endipv6Encountered", "endIpv6", "consume", "hex", "i", "cursor", "normalizeIPv6", "opts", "ipv6", "newHost", "escapedHost", "str", "token", "out", "skip", "l", "ind", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "normalizeComponentEncoding", "components", "esc", "func", "recomposeAuthority", "options", "uriTokens", "ipV4res", "ipV6res", "require_schemes", "__commonJSMin", "exports", "module", "UUID_REG", "URN_REG", "isSecure", "wsComponents", "httpParse", "components", "httpSerialize", "secure", "wsParse", "wsSerialize", "path", "query", "urnParse", "urnComponents", "options", "matches", "scheme", "urnScheme", "schemeHandler", "SCHEMES", "urnSerialize", "nid", "uriComponents", "nss", "urnuuidParse", "uuidComponents", "urnuuidSerialize", "http", "https", "ws", "wss", "urn", "urnuuid", "require_fast_uri", "__commonJSMin", "exports", "module", "normalizeIPv6", "normalizeIPv4", "removeDotSegments", "recomposeAuthority", "normalizeComponentEncoding", "SCHEMES", "normalize", "uri", "options", "serialize", "parse", "resolve", "baseURI", "relativeURI", "schemelessOptions", "resolved", "resolveComponents", "base", "relative", "skipNormalization", "target", "equal", "uriA", "uriB", "cmpts", "opts", "components", "uriTokens", "schemeHandler", "authority", "s", "hexLookUp", "v", "k", "nonSimpleDomain", "value", "code", "i", "len", "URI_PARSE", "parsed", "gotEncoding", "isIP", "matches", "ipv4result", "ipv6result", "e", "fastUri", "uri", "exports", "validate_1", "exports", "codegen_1", "validation_error_1", "ref_error_1", "rules_1", "compile_1", "codegen_2", "resolve_1", "dataType_1", "util_1", "$dataRefSchema", "uri_1", "defaultRegExp", "str", "flags", "META_IGNORE_OPTIONS", "EXT_SCOPE_NAMES", "removedOptions", "deprecatedOptions", "MAX_EXPRESSION", "requiredOptions", "o", "s", "_optz", "_a", "optimize", "regExp", "_c", "_b", "uriResolver", "_d", "_f", "_e", "_h", "_g", "_k", "_j", "_m", "_l", "_p", "_o", "_q", "_r", "_s", "_t", "_u", "_v", "_w", "_x", "_y", "_z", "_0", "Ajv", "opts", "es5", "lines", "getLogger", "formatOpt", "checkOptions", "getMetaSchemaOptions", "addInitialFormats", "addInitialKeywords", "addInitialSchemas", "$data", "meta", "schemaId", "_dataRefSchema", "schemaKeyRef", "data", "v", "valid", "schema", "_meta", "sch", "loadSchema", "runCompileAsync", "_schema", "loadMetaSchema", "_compileAsync", "$ref", "e", "checkLoaded", "loadMissingSchema", "ref", "missingRef", "_loadSchema", "p", "key", "_validateSchema", "id", "throwOrLogError", "$schema", "message", "keyRef", "getSchEnv", "root", "cacheKey", "definitions", "def", "kwdOrDef", "keyword", "checkKeyword", "kwd", "addRule", "keywordMetaschema", "definition", "k", "t", "rule", "RULES", "group", "i", "name", "format", "errors", "separator", "dataVar", "text", "msg", "metaSchema", "keywordsJsonPointers", "rules", "jsonPointer", "segments", "keywords", "seg", "schemaOrData", "schemas", "regex", "baseId", "validateSchema", "addSchema", "localRefs", "currentOpts", "checkOpts", "options", "log", "opt", "optsSchemas", "defs", "metaOpts", "noLogs", "logger", "KEYWORD_NAME", "dataType", "post", "ruleGroup", "addBeforeRule", "before", "_rule", "$dataRef", "def", "exports", "ref_error_1", "code_1", "codegen_1", "names_1", "compile_1", "util_1", "def", "cxt", "gen", "$ref", "it", "baseId", "env", "validateName", "opts", "self", "root", "callRootRef", "schOrEnv", "callValidate", "inlineRefSchema", "callRef", "rootName", "sch", "v", "getValidate", "schName", "valid", "schCxt", "exports", "$async", "allErrors", "passCxt", "callAsyncRef", "callSyncRef", "addEvaluatedFrom", "e", "addErrorsFrom", "source", "errs", "schEvaluated", "_a", "props", "items", "id_1", "ref_1", "core", "exports", "codegen_1", "ops", "KWDs", "error", "keyword", "schemaCode", "def", "cxt", "data", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "gen", "data", "it", "prec", "res", "invalid", "exports", "ucs2length", "str", "len", "length", "pos", "value", "exports", "codegen_1", "util_1", "ucs2length_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "it", "op", "len", "exports", "code_1", "codegen_1", "error", "schemaCode", "def", "cxt", "data", "$data", "schema", "it", "u", "regExp", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "code_1", "codegen_1", "util_1", "error", "missingProperty", "def", "cxt", "gen", "schema", "schemaCode", "data", "$data", "it", "opts", "useLoop", "allErrorsMode", "exitOnErrorMode", "props", "definedProperties", "requiredKey", "schemaPath", "msg", "loopAllRequired", "prop", "missing", "valid", "loopUntilMissing", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "equal", "exports", "dataType_1", "codegen_1", "util_1", "equal_1", "error", "i", "j", "def", "cxt", "gen", "data", "$data", "schema", "parentSchema", "schemaCode", "it", "valid", "itemTypes", "validateUniqueItems", "canOptimize", "loopN", "loopN2", "t", "item", "wrongType", "indices", "eql", "outer", "exports", "codegen_1", "util_1", "equal_1", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "exports", "codegen_1", "util_1", "equal_1", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "it", "useLoop", "eql", "getEql", "valid", "loopEnum", "vSchema", "_x", "i", "equalCode", "v", "sch", "exports", "limitNumber_1", "multipleOf_1", "limitLength_1", "pattern_1", "limitProperties_1", "required_1", "limitItems_1", "uniqueItems_1", "const_1", "enum_1", "validation", "exports", "codegen_1", "util_1", "error", "len", "def", "cxt", "parentSchema", "it", "items", "validateAdditionalItems", "gen", "schema", "data", "keyword", "valid", "validateItems", "i", "exports", "codegen_1", "util_1", "code_1", "def", "cxt", "schema", "it", "validateTuple", "extraItems", "schArr", "gen", "parentSchema", "data", "keyword", "checkStrictTuple", "valid", "len", "sch", "i", "opts", "errSchemaPath", "l", "fullTuple", "msg", "exports", "items_1", "def", "cxt", "exports", "codegen_1", "util_1", "code_1", "additionalItems_1", "error", "len", "def", "cxt", "schema", "parentSchema", "it", "prefixItems", "exports", "codegen_1", "util_1", "error", "min", "max", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "minContains", "maxContains", "len", "cond", "valid", "validateItems", "validateItemsWithCount", "schValid", "count", "checkLimits", "_valid", "block", "i", "exports", "codegen_1", "util_1", "code_1", "exports", "property", "depsCount", "deps", "property_ies", "missingProperty", "def", "cxt", "propDeps", "schDeps", "splitDependencies", "validatePropertyDeps", "validateSchemaDeps", "schema", "propertyDeps", "schemaDeps", "key", "gen", "data", "it", "missing", "prop", "hasProperty", "depProp", "keyword", "valid", "schCxt", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "data", "it", "valid", "key", "exports", "code_1", "codegen_1", "names_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "parentSchema", "data", "errsCount", "it", "allErrors", "opts", "props", "patProps", "checkAdditionalProperties", "key", "additionalPropertyCode", "isAdditional", "definedProp", "propsSchema", "p", "deleteAdditional", "valid", "applyAdditionalSchema", "errors", "subschema", "exports", "validate_1", "code_1", "util_1", "additionalProperties_1", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "allProps", "prop", "properties", "p", "valid", "hasDefault", "applyPropertySchema", "exports", "code_1", "codegen_1", "util_1", "util_2", "def", "cxt", "gen", "schema", "data", "parentSchema", "it", "opts", "patterns", "alwaysValidPatterns", "p", "checkProperties", "valid", "props", "validatePatternProperties", "pat", "checkMatchingProperties", "validateProperties", "prop", "key", "alwaysValid", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "exports", "code_1", "def", "exports", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "parentSchema", "it", "schArr", "valid", "passing", "schValid", "validateOneOf", "sch", "i", "schCxt", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "sch", "i", "schCxt", "exports", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "parentSchema", "it", "hasThen", "hasSchema", "hasElse", "valid", "schValid", "validateIf", "ifClause", "validateClause", "schCxt", "keyword", "schema", "exports", "util_1", "def", "keyword", "parentSchema", "it", "exports", "additionalItems_1", "prefixItems_1", "items_1", "items2020_1", "contains_1", "dependencies_1", "propertyNames_1", "additionalProperties_1", "properties_1", "patternProperties_1", "not_1", "anyOf_1", "oneOf_1", "allOf_1", "if_1", "thenElse_1", "getApplicator", "draft2020", "applicator", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "ruleType", "gen", "data", "$data", "schema", "it", "opts", "errSchemaPath", "schemaEnv", "self", "validate$DataFormat", "validateFormat", "fmts", "fDef", "fType", "format", "unknownFmt", "invalidFmt", "callFormat", "validData", "formatDef", "unknownFormat", "fmtType", "fmtRef", "getFormat", "validCondition", "unknownMsg", "fmtDef", "code", "fmt", "exports", "format_1", "format", "exports", "exports", "core_1", "validation_1", "applicator_1", "format_1", "metadata_1", "draft7Vocabularies", "exports", "DiscrError", "exports", "codegen_1", "types_1", "compile_1", "ref_error_1", "util_1", "error", "discrError", "tagName", "tag", "def", "cxt", "gen", "data", "schema", "parentSchema", "it", "oneOf", "valid", "validateMapping", "mapping", "getMapping", "tagValue", "applyTagSchema", "schemaProp", "_valid", "schCxt", "oneOfMapping", "topRequired", "hasRequired", "tagRequired", "i", "sch", "ref", "propSch", "_a", "addMappings", "required", "addMapping", "exports", "require_json_schema_draft_07", "__commonJSMin", "exports", "module", "core_1", "draft7_1", "discriminator_1", "draft7MetaSchema", "META_SUPPORT_DATA", "META_SCHEMA_ID", "Ajv", "v", "metaSchema", "exports", "module", "validate_1", "codegen_1", "validation_error_1", "ref_error_1", "require_util", "__commonJSMin", "exports", "nameStartChar", "nameChar", "nameRegexp", "regexName", "getAllMatches", "string", "regex", "matches", "match", "allmatches", "len", "index", "isName", "v", "obj", "target", "a", "arrayMode", "keys", "require_validator", "__commonJSMin", "exports", "util", "defaultOptions", "xmlData", "options", "tags", "tagFound", "reachedRoot", "readPI", "tagStartPos", "readCommentAndCDATA", "closingTag", "tagName", "validateTagName", "msg", "getErrorObject", "getLineNumberForPosition", "result", "readAttributeStr", "attrStr", "attrStrStart", "isValid", "validateAttributeString", "otg", "openPos", "afterAmp", "validateAmpersand", "isWhiteSpace", "t", "char", "i", "start", "tagname", "angleBracketsCount", "doubleQuote", "singleQuote", "startChar", "tagClosed", "validAttrStrRegxp", "matches", "attrNames", "getPositionFromMatch", "attrName", "validateAttrName", "validateNumberAmpersand", "re", "count", "code", "message", "lineNumber", "index", "lines", "match", "require_OptionsBuilder", "__commonJSMin", "exports", "defaultOptions", "tagName", "val", "attrName", "jPath", "attrs", "buildOptions", "options", "require_xmlNode", "__commonJSMin", "exports", "module", "XmlNode", "tagname", "key", "val", "node", "require_DocTypeReader", "__commonJSMin", "exports", "module", "util", "readDocType", "xmlData", "i", "entities", "angleBracketsCount", "hasBody", "comment", "exp", "isEntity", "entityName", "val", "readEntityExp", "validateEntityName", "isElement", "isAttlist", "isNotation", "isComment", "startChar", "name", "require_strnum", "__commonJSMin", "exports", "module", "hexRegex", "numRegex", "consider", "toNumber", "str", "options", "trimmedStr", "match", "sign", "leadingZeros", "numTrimmedByZeros", "trimZeros", "eNotation", "num", "numStr", "require_ignoreAttributes", "__commonJSMin", "exports", "module", "getIgnoreAttributesFn", "ignoreAttributes", "attrName", "pattern", "require_OrderedObjParser", "__commonJSMin", "exports", "module", "util", "xmlNode", "readDocType", "toNumber", "getIgnoreAttributesFn", "OrderedObjParser", "options", "_", "str", "addExternalEntities", "parseXml", "parseTextData", "resolveNameSpace", "buildAttributesMap", "isItStopNode", "replaceEntitiesValue", "readStopNodeData", "saveTextToParentTag", "addChild", "externalEntities", "entKeys", "i", "ent", "val", "tagName", "jPath", "dontTrim", "hasAttributes", "isLeafNode", "escapeEntities", "newval", "parseValue", "tagname", "tags", "prefix", "attrsRegx", "attrStr", "matches", "len", "attrs", "attrName", "oldVal", "aName", "newVal", "attrCollection", "xmlData", "xmlObj", "currentNode", "textData", "closeIndex", "findClosingIndex", "colonIndex", "lastTagName", "propIndex", "tagData", "readTagExp", "childNode", "endIndex", "comment", "result", "tagExp", "rawTagName", "attrExpPresent", "lastTag", "tagContent", "entityName", "entity", "stopNodes", "currentTagName", "allNodesExp", "stopNodePath", "stopNodeExp", "tagExpWithClosingIndex", "closingChar", "attrBoundary", "index", "ch", "errMsg", "closingIndex", "removeNSPrefix", "separatorIndex", "startIndex", "openTagCount", "shouldParse", "require_node2json", "__commonJSMin", "exports", "prettify", "node", "options", "compress", "arr", "jPath", "text", "compressedObj", "tagObj", "property", "propName", "newJpath", "val", "isLeaf", "isLeafTag", "assignAttributes", "obj", "keys", "i", "key", "attrMap", "jpath", "len", "atrrName", "textNodeName", "propCount", "require_XMLParser", "__commonJSMin", "exports", "module", "buildOptions", "OrderedObjParser", "prettify", "validator", "XMLParser", "options", "xmlData", "validationOption", "result", "orderedObjParser", "orderedResult", "key", "value", "require_orderedJs2Xml", "__commonJSMin", "exports", "module", "EOL", "toXml", "jArray", "options", "indentation", "arrToStr", "arr", "jPath", "xmlStr", "isPreviousElementTag", "i", "tagObj", "tagName", "propName", "newJPath", "tagText", "isStopNode", "replaceEntitiesValue", "attStr", "attr_to_str", "tempInd", "piTextNodeName", "newIdentation", "tagStart", "tagValue", "obj", "keys", "key", "attrMap", "attrStr", "attr", "attrVal", "index", "textValue", "entity", "require_json2xml", "__commonJSMin", "exports", "module", "buildFromOrderedJs", "getIgnoreAttributesFn", "defaultOptions", "key", "a", "attrName", "Builder", "options", "isAttribute", "processTextOrObjNode", "indentate", "jObj", "level", "ajPath", "attrStr", "val", "jPath", "attr", "newval", "arrLen", "listTagVal", "listTagAttr", "j", "item", "result", "textValue", "Ks", "L", "object", "tagEndExp", "piClosingChar", "closeTag", "i", "entity", "name", "require_fxp", "__commonJSMin", "exports", "module", "validator", "XMLParser", "XMLBuilder", "require_he", "__commonJSMin", "exports", "module", "root", "freeExports", "freeModule", "freeGlobal", "regexAstralSymbols", "regexAsciiWhitelist", "regexBmpWhitelist", "regexEncodeNonAscii", "encodeMap", "regexEscape", "escapeMap", "regexInvalidEntity", "regexInvalidRawCodePoint", "regexDecode", "decodeMap", "decodeMapLegacy", "decodeMapNumeric", "invalidReferenceCodePoints", "stringFromCharCode", "object", "hasOwnProperty", "has", "propertyName", "contains", "array", "value", "index", "length", "merge", "options", "defaults", "result", "key", "codePointToSymbol", "codePoint", "strict", "output", "parseError", "hexEscape", "decEscape", "message", "encode", "string", "encodeEverything", "useNamedReferences", "allowUnsafeSymbols", "escapeCodePoint", "escapeBmpSymbol", "symbol", "$0", "high", "low", "decode", "html", "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "semicolon", "decDigits", "hexDigits", "reference", "next", "escape", "he", "base_exports", "__export", "exclude", "extract", "parse", "parseUrl", "pick", "stringify", "stringifyUrl", "token", "singleMatcher", "multiMatcher", "decodeComponents", "components", "split", "left", "right", "decode", "input", "tokens", "i", "customDecodeURIComponent", "replaceMap", "match", "result", "entries", "key", "decodeUriComponent", "encodedURI", "includeKeys", "object", "predicate", "result", "key", "descriptor", "value", "splitOnFirst", "string", "separator", "separatorIndex", "isNullOrUndefined", "value", "strictUriEncode", "string", "x", "encodeFragmentIdentifier", "encoderForArrayFormat", "options", "key", "result", "index", "encode", "keyValueSeparator", "parserForArrayFormat", "accumulator", "isArray", "isEncodedArray", "decode", "newValue", "item", "arrayValue", "validateArrayFormatSeparator", "decodeUriComponent", "keysSorter", "input", "a", "b", "removeHash", "hashStart", "getHash", "url", "hash", "parseValue", "type", "extract", "queryStart", "parse", "query", "formatter", "returnValue", "parameter", "parameter_", "splitOnFirst", "key2", "value2", "stringify", "object", "shouldFilter", "objectCopy", "keys", "parseUrl", "url_", "stringifyUrl", "queryFromUrl", "queryString", "urlObjectForFragmentEncode", "pick", "filter", "fragmentIdentifier", "includeKeys", "exclude", "exclusionFilter", "query_string_default", "base_exports", "ALLOWED_VALUES", "getOptionValue", "pOptions", "pOptionName", "getAllowedValues", "options_default", "import_ajv", "Counter", "#lHWM", "pStart", "flattenStatesToMap", "pStates", "pMap", "pParent", "pState", "flattenTransitions", "pStateMachine", "lTransitions", "StateMachineModel", "#flattenedTransitions", "#flattenedStates", "pName", "pTypes", "pStateName", "pTransition", "pFromStateName", "pToStateName", "id", "pExcludeIds", "TRIGGER_RE_AS_A_STRING", "TRIGGER_RE", "stateExists", "pKnownStateNames", "pName", "RE2STATE_TYPE", "matches", "pEntry", "getStateType", "initState", "isComposite", "pState", "getAlreadyDeclaredStates", "pStateMachine", "lStates", "pAllStateNames", "pThisState", "name", "extractUndeclaredStates", "lTransitions", "pTransition", "classifyForkJoin", "pInComingCount", "pOutGoingCount", "lReturnValue", "classifyForkJoins", "pFlattenedStateMachineModel", "StateMachineModel", "lInComingCount", "lOutGoingCount", "stateEqual", "pStateOne", "pStateTwo", "uniq", "pArray", "pEqualFunction", "pBag", "pMarble", "lMarbleIndex", "pBagItem", "parseTransitionExpression", "pString", "lTransitionExpressionRe", "lMatchResult", "lEventPos", "lConditionPos", "lActionPos", "setIf", "pObject", "pProperty", "pValue", "pCondition", "setIfNotEmpty", "pX", "extractAction", "pActivityCandidate", "lMatch", "lTypePos", "lBodyPos", "extractActions", "parser_helpers_default", "peg$subclass", "child", "parent", "C", "peg$SyntaxError", "message", "expected", "found", "location", "self", "peg$padEnd", "str", "targetLength", "padString", "sources", "src", "k", "s", "offset_s", "loc", "e", "filler", "line", "last", "hatLen", "DESCRIBE_EXPECTATION_FNS", "expectation", "literalEscape", "escapedParts", "part", "classEscape", "hex", "ch", "describeExpectation", "describeExpected", "descriptions", "i", "j", "describeFound", "peg$parse", "input", "options", "peg$FAILED", "peg$source", "peg$startRuleFunctions", "peg$parseprogram", "peg$startRuleFunction", "peg$c0", "peg$c1", "peg$c2", "peg$c3", "peg$c4", "peg$c5", "peg$c6", "peg$c7", "peg$c8", "peg$c9", "peg$c10", "peg$c11", "peg$c12", "peg$c13", "peg$c14", "peg$c15", "peg$c16", "peg$c17", "peg$c18", "peg$c19", "peg$c20", "peg$c21", "peg$c22", "peg$c23", "peg$c24", "peg$c25", "peg$c26", "peg$c27", "peg$c28", "peg$c29", "peg$c30", "peg$c31", "peg$c32", "peg$c33", "peg$c34", "peg$c35", "peg$c36", "peg$c37", "peg$c38", "peg$c39", "peg$c40", "peg$c41", "peg$c42", "peg$c43", "peg$c44", "peg$c45", "peg$c46", "peg$r0", "peg$r1", "peg$r2", "peg$r3", "peg$r4", "peg$r5", "peg$r6", "peg$r7", "peg$e0", "peg$otherExpectation", "peg$e1", "peg$literalExpectation", "peg$e2", "peg$e3", "peg$e4", "peg$e5", "peg$e6", "peg$e7", "peg$e8", "peg$e9", "peg$e10", "peg$e11", "peg$e12", "peg$e13", "peg$e14", "peg$e15", "peg$e16", "peg$e17", "peg$e18", "peg$e19", "peg$e20", "peg$e21", "peg$e22", "peg$e23", "peg$e24", "peg$e25", "peg$e26", "peg$e27", "peg$e28", "peg$e29", "peg$e30", "peg$e31", "peg$e32", "peg$e33", "peg$e34", "peg$e35", "peg$e36", "peg$e37", "peg$e38", "peg$e39", "peg$e40", "peg$e41", "peg$e42", "peg$e43", "peg$e44", "peg$e45", "peg$e46", "peg$e47", "peg$e48", "peg$e49", "peg$e50", "peg$e51", "peg$e52", "peg$e53", "peg$e54", "peg$e55", "peg$e56", "peg$e57", "peg$e58", "peg$e59", "peg$e60", "peg$classExpectation", "peg$e61", "peg$e62", "peg$e63", "peg$e64", "peg$anyExpectation", "peg$e65", "peg$e66", "peg$e67", "peg$e68", "peg$e69", "peg$e70", "peg$e71", "peg$e72", "peg$e73", "peg$e74", "peg$e75", "peg$e76", "peg$e77", "peg$e78", "peg$e79", "peg$f0", "statemachine", "parser_helpers_default", "peg$f1", "states", "transitions", "lStateMachine", "peg$f2", "state", "peg$f3", "peg$f4", "peg$f5", "notes", "id", "attrs", "peg$f6", "extended_state_attributes", "act", "peg$f7", "actions", "sm", "peg$f8", "lState", "pExtendedAttribute", "peg$f9", "name", "value", "peg$f10", "peg$f11", "peg$f12", "peg$f13", "peg$f14", "peg$f15", "peg$f16", "peg$f17", "trans", "peg$f18", "extended_attributes", "lbl", "peg$f19", "label", "peg$f20", "from_", "to", "peg$f21", "peg$f22", "peg$f23", "peg$f24", "peg$f25", "peg$f26", "peg$f27", "peg$f28", "peg$f29", "com", "peg$f30", "digits", "peg$f31", "peg$f32", "peg$f33", "c", "peg$f34", "peg$f35", "peg$f36", "peg$f37", "peg$f38", "peg$f39", "peg$f40", "chars", "peg$currPos", "peg$savedPos", "peg$posDetailsCache", "peg$maxFailPos", "peg$maxFailExpected", "peg$silentFails", "peg$result", "text", "offset", "range", "peg$computeLocation", "description", "peg$buildStructuredError", "error", "peg$buildSimpleError", "ignoreCase", "parts", "inverted", "peg$endExpectation", "peg$computePosDetails", "pos", "details", "p", "startPos", "endPos", "startPosDetails", "endPosDetails", "res", "peg$fail", "s0", "s1", "s2", "s3", "peg$parse_", "peg$parsestatemachine", "peg$parsestates", "peg$parsetransition", "s4", "s5", "peg$parsestate", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "peg$parsenote", "peg$parseidentifier", "peg$parseextended_state_attributes", "peg$parsestring", "peg$parseextended_state_attribute", "peg$parseextended_state_string_attribute_name", "peg$parsequotedstring", "peg$parseclass_attribute_name", "peg$parseclass_string", "peg$parseextended_state_boolean_attribute_name", "peg$parseextended_state_type_attribute_name", "peg$parseextended_state_type_attribute_type", "peg$parsetransitionbase", "peg$parseextended_transition_attributes", "peg$parsetransitionstring", "peg$parsefwdarrowtoken", "peg$parsebckarrowtoken", "peg$parseextended_transition_attribute", "peg$parseextended_transition_string_attribute_name", "peg$parseextended_transition_type_name", "peg$parseextended_transition_type_value", "peg$parseextended_transition_numeric_attribute_name", "peg$parsepositive_number", "peg$parseslcomtok", "peg$parsepositive_real", "peg$parsecardinal", "peg$parseunquotedtransitionstring", "peg$parseunquotedstring", "peg$parsestringcontent", "peg$parseclass_stringcontent", "peg$parsetransitionnonsep", "peg$parsenonsep", "peg$parsewhitespace", "peg$parselineend", "peg$parsemlcomstart", "peg$parsemlcomend", "peg$parsemlcomtok", "peg$parsemlcomment", "peg$parseslcomstart", "peg$parseslcomment", "peg$parsecomment", "parse", "pScript", "peg$parse", "Counter", "import_fast_xml_parser", "import_he", "to_string", "obj", "is_typed_array", "value", "is_date", "is_regexp", "is_error", "is_boolean", "is_number", "is_string", "is_array", "gopd", "is_property_enumerable", "get_own_property_symbols", "has_own_property", "own_enumerable_keys", "res", "symbols", "i", "is_writable", "object", "key", "copy", "src", "options", "dst", "iterator_function", "empty_null", "walk", "root", "cb", "path", "parents", "alive", "immutable", "walker", "node_", "node", "modifiers", "keep_going", "state", "x", "stopHere", "f", "update_state", "ret", "index", "child", "Traverse", "#value", "#options", "paths", "init", "skip", "acc", "nodes", "clone", "iteratorFunction", "traverse", "src_default", "formatLabel", "pEvent", "pCond", "pActions", "lReturnValue", "utl_default", "castArray", "pAThing", "normalizeInitialFromObject", "pInitialObject", "pId", "lReturnValue", "normalizeInitialFromString", "pString", "normalizeInitial", "pMachine", "normalizeMachine", "castArray", "formatLabel", "utl_default", "extractActions", "pState", "pActionType", "castArray", "pAction", "he", "extractActionsFromInvokes", "pInvokeTriggers", "pInvokeTrigger", "deriveActions", "lReturnValue", "deriveStateType", "pType", "mapState", "parser_helpers_default", "pKey", "mapMachine", "extractTransitionAttributesFromObject", "pTransition", "extractTransitionAttributes", "lLabel", "reduceTransition", "pCounter", "pAllTransitions", "lTargets", "lTransitionAttributes", "pTarget", "extractTransitions", "pStates", "pThisState", "lTransitionAsArray", "pSCXMLStateMachine", "lNormalizedMachine", "normalizeMachine", "lCounter", "Counter", "lTransitions", "deDuplicateAttributesAndTags", "pObject", "pAttributeNamePrefix", "src_default", "pUnPrefixedAttributeName", "parse", "pSCXMLString", "lTrimmedSCXMLString", "lAttributeNamePrefix", "lXMLAsJSON", "lXMLParser", "fastxml", "_pTagName", "pTagValue", "smcat_ast_schema_default", "ajv", "Ajv", "validateAgainstSchema", "pSchema", "pObject", "parse_default", "pScript", "pOptions", "lReturnValue", "options_default", "parse", "smcat_ast_schema_default", "fuseTransitionAttribute", "pIncomingThing", "pOutgoingThing", "pJoinChar", "fuseIncomingToOutgoing", "pIncomingTransition", "pOutgoingTransition", "pCounter", "lReturnValue", "utl_default", "fuseTransitions", "pTransitions", "pPseudoStateNames", "pOutgoingTransitionMap", "pAll", "pTransition", "pStateName", "pIndex", "deSugarPseudoStates", "pMachine", "lMachine", "pState", "removeStatesCascading", "pStateNames", "pJunctionStateName", "desugar_default", "pDesugarableStates", "lModel", "StateMachineModel", "lPseudoStateNames", "name", "lOutgoingTransitionMap", "lMaximumTransitionId", "Counter", "NAME_QUOTABLE", "ACTIONS_QUOTABLE", "LABEL_QUOTABLE", "RENDERABLE_STATE_ATTRIBUTES", "RENDERABLE_TRANSITION_ATTRIBUTES", "quoteIfNecessary", "pRegExp", "pString", "stateHasExtendedAttributes", "pState", "note", "pNote", "pIndent", "pNoteLine", "extendedAttribute", "pKey", "pValue", "extendedStateAttributes", "actions", "pActions", "pAction", "state", "lReturnValue", "renderSmcat", "states", "pStates", "transitionHasExtendedAttributes", "pTransition", "extendedTransitionAttributes", "transition", "transitions", "pTransitions", "pStateMachine", "_pOptions", "import_he", "GENERIC_GRAPH_ATTRIBUTES", "GRAPH_ATTRIBUTES", "DIRECTION_ATTRIBUTES", "NODE_ATTRIBUTES", "EDGE_ATTRIBUTES", "toNameValueString", "pAttribute", "buildGraphAttributes", "pEngine", "pDirection", "pDotGraphAttributes", "buildNodeAttributes", "pDotNodeAttributes", "buildEdgeAttributes", "pDotEdgeAttributes", "import_he", "getStateColor", "pState", "pNodeAttributes", "lNodeColor", "pAttribute", "escapeString", "pString", "escapeLabelString", "isVertical", "pDirection", "lDirection", "isCompositeSelf", "pStateMachineModel", "pTransition", "noteToLabel", "pNote", "stateNote", "pIndent", "lNoteName", "lReturnValue", "normalizeState", "pOptions", "he", "pChildState", "formatActionType", "getTransitionPorts", "pModel", "lTailPorts", "lHeadPorts", "getOptionValue", "initial", "pState", "pIndent", "lActiveAttribute", "regularStateActions", "pActions", "pAction", "he", "formatActionType", "pActionString", "pIndex", "lReturnValue", "compositeStateActions", "atomicRegular", "lCellPadding", "lActions", "lLabel", "lLabelTag", "compositeRegular", "pOptions", "pModel", "pRenderedTransitions", "lPenWidth", "lStyle", "pTransition", "states", "regular", "history", "deepHistory", "choiceActions", "pActive", "choice", "lDiamond", "lLabelConstruct", "forkjoin", "lDirection", "getOptionValue", "lSizingExtras", "isVertical", "junction", "lNote", "stateNote", "terminate", "final", "STATE_TYPE2FUNCTION", "state", "lState", "normalizeState", "lCandidateTransitions", "lTransitions", "transitions", "pStates", "transition", "escapeLabelString", "lColorAttribute", "lFontColorAttribute", "lClass", "lTail", "lHead", "lTransitionName", "isCompositeSelf", "lTailPorts", "lHeadPorts", "getTransitionPorts", "lNoteAndLine", "lNoteName", "lLineToNote", "noteToLabel", "lTransitionFrom", "lTransitionTo", "lNoteNodeName", "lNoteNode", "pTransitions", "renderDot", "pStateMachine", "lGraphAttributes", "buildGraphAttributes", "lNodeAttributes", "buildNodeAttributes", "lEdgeAttributes", "buildEdgeAttributes", "lModel", "StateMachineModel", "lRenderedTransitions", "lStates", "lRemainingTransitions", "un", "$", "$e", "cn", "Ve", "cr", "c", "_", "l", "s", "Ue", "fn", "_n", "V", "Hr", "d", "ln", "dn", "h", "p", "E", "G", "j", "q", "U", "H", "K", "J", "L", "Le", "He", "T", "te", "X", "W", "fe", "C", "m", "Q", "k", "ie", "B", "R", "ae", "ne", "Z", "I", "A", "vn", "hn", "pn", "yn", "Kr", "fr", "En", "_r", "mn", "je", "wn", "Bn", "Ie", "xe", "Oe", "Pe", "Qe", "Te", "me", "be", "we", "qe", "_e", "he", "pe", "Me", "Be", "Fe", "Je", "gn", "Qr", "Gn", "e", "r", "ke", "n", "Ge", "Ne", "dr", "Vr", "vr", "t", "o", "qr", "i", "a", "u", "Jr", "Jt", "Nr", "z", "O", "N", "kr", "se", "S", "Ar", "et", "hr", "rt", "tt", "nt", "pr", "ge", "F", "b", "Y", "f", "v", "yr", "Re", "Ae", "er", "rr", "tr", "ot", "it", "nr", "Er", "jr", "g", "at", "st", "ut", "ct", "ft", "x", "w", "M", "ee", "_t", "or", "le", "oe", "de", "ve", "ye", "Ye", "re", "Se", "P", "lt", "We", "De", "dt", "vt", "ht", "pt", "yt", "Ze", "Et", "mt", "wt", "Bt", "gt", "Gt", "Ft", "Lt", "ir", "It", "xt", "Ot", "ar", "bt", "Mt", "Rt", "Dt", "Yt", "Pt", "Tt", "sr", "Zt", "ze", "zt", "St", "jt", "Ut", "Ht", "Kt", "Qt", "Wt", "Ct", "Xt", "$t", "Vt", "qt", "Nt", "kt", "At", "en", "rn", "mr", "wr", "Br", "gr", "Gr", "Fr", "Lr", "Ir", "xr", "Or", "br", "Mr", "Rr", "Dr", "Yr", "Pr", "Tr", "Zr", "zr", "Sr", "Ce", "Ur", "ue", "Xe", "ur", "tn", "nn", "on", "an", "sn", "D", "ce", "Ee", "y", "Wr", "Fn", "Ln", "In", "Ke", "lr", "Cr", "Xr", "xn", "On", "bn", "$r", "OUTPUT_TYPE2FORMAT", "gGraphViz", "$r", "getFormat", "pOptions", "options_default", "getEngine", "renderVectorWithWasm", "pStateMachine", "renderDot", "vector_with_wasm_default", "NAME_CHAR_FORBIDDEN_RE", "START_NAME_CHAR_FORBIDDEN_EXTRA_RE", "makeValidNameChars", "pCandidateNameTail", "makeValidNameStartChar", "pCandidateChar", "lReturnValue", "make_valid_xml_name_default", "pCandidateName", "EVENT_CHAR_FORBIDDEN_RE", "START_EVENT_CHAR_FORBIDDEN_EXTRA_RE", "makeValidEventChar", "pCandidateEventStringTail", "makeValidEventStartChar", "pCandidateEventStringStart", "lReturnValue", "makeValidEventName", "pCandidateEventName", "make_valid_event_names_default", "pCandidateEventNames", "lCandidateEventNames", "STATE_TYPE2SCXML_STATE_KIND", "stateType2SCXMLStateKind", "pStateType", "transformTransition", "pTransition", "lReturnValue", "make_valid_xml_name_default", "make_valid_event_names_default", "extractTriggers", "pTriggers", "pTriggerType", "pTrigger", "pullOutActionType", "pReturnValue", "pTriggersType", "pActions", "pActionType", "lTriggerArray", "transformTriggers", "pState", "transformTransitions", "pTransitions", "lTransitions", "transformCompositeState", "lRenderedState", "render", "transformState", "findInitialPseudoStateName", "pStateMachine", "lInitial", "findInitialStateName", "pInitialPseudoStateName", "lInitialTransitions", "_pOptions", "lInitialPseudoStateName", "lInitialStateName", "StateMachineModel", "import_he", "INDENT_LENGTH", "indentString", "pString", "pCount", "lRegex", "renderTransitionAttributes", "pTransition", "lReturnValue", "he", "renderRegularTransition", "pDepth", "renderActionTransition", "renderTransition", "renderTransitions", "pTransitions", "renderSimpleTag", "pOnExit", "pTag", "renderOnEntries", "pOnEntries", "pOnEntry", "renderOnExits", "pOnExits", "renderStateAttributes", "pState", "renderState", "renderStates", "pStates", "renderInitialAttribute", "pInitialString", "renderSCXML", "pSCJSON", "renderSCXML", "pStateMachine", "render", "scxml_default", "smcat", "renderSmcat", "getRenderFunction", "pOutputType", "renderDot", "vector_with_wasm_default", "render", "scxml_default", "pX", "version", "render", "pScript", "pOptions", "lOptions", "lStateMachine", "parse_default", "lDesugar", "options_default", "getRenderFunction", "desugar_default", "version", "getAllowedValues", "src_default", "toRasterURI", "pSVG", "pCallback", "lImg", "pEvent", "lCanvas", "lCanvasContext", "lImage", "themeAttributeMap", "LOCALSTORAGE_KEY", "src_default", "DEFAULT_INPUTSCRIPT", "gModel", "startsWith", "pCharacter", "pKey", "toKeyValue", "pQueryParams", "persistState", "pState", "getState", "pDefault", "lRetval", "e", "toVectorURI", "pSVGSource", "updateViewModel", "pTarget", "pEvent", "showModel", "outputIsSaveable", "pModel", "render", "lSVGs", "lUniqueIshPostfix", "toRasterURI", "pRasterURI", "getAttrFromQueryParams", "lDotGraphAttrs", "lDotNodeAttrs", "lDotEdgeAttrs", "theme2attr", "pThemeAttributeMap", "pTheme", "sanitizeLocation", "pLocationString", "lSanitizedLocation", "lOptions", "themeAttributeMap", "query_string_default", "lResult", "pOption", "formatToOutput", "pError", "pResult", "pOutputType", "pFitToWidth", "setTextAreaToWindowHeight", "showContextMenu", "pX", "pY", "hideContextMenu", "logError", "pResponse", "pSourceText"]
 }
diff --git a/docs/state-machine-cat-inpage.min.js.map b/docs/state-machine-cat-inpage.min.js.map
index 1cb1f5b0..dfec47c4 100644
--- a/docs/state-machine-cat-inpage.min.js.map
+++ b/docs/state-machine-cat-inpage.min.js.map
@@ -1,7 +1,7 @@
 {
   "version": 3,
   "sources": ["../node_modules/ajv/lib/compile/codegen/code.ts", "../node_modules/ajv/lib/compile/codegen/scope.ts", "../node_modules/ajv/lib/compile/codegen/index.ts", "../node_modules/ajv/lib/compile/util.ts", "../node_modules/ajv/lib/compile/names.ts", "../node_modules/ajv/lib/compile/errors.ts", "../node_modules/ajv/lib/compile/validate/boolSchema.ts", "../node_modules/ajv/lib/compile/rules.ts", "../node_modules/ajv/lib/compile/validate/applicability.ts", "../node_modules/ajv/lib/compile/validate/dataType.ts", "../node_modules/ajv/lib/compile/validate/defaults.ts", "../node_modules/ajv/lib/vocabularies/code.ts", "../node_modules/ajv/lib/compile/validate/keyword.ts", "../node_modules/ajv/lib/compile/validate/subschema.ts", "../node_modules/fast-deep-equal/index.js", "../node_modules/json-schema-traverse/index.js", "../node_modules/ajv/lib/compile/resolve.ts", "../node_modules/ajv/lib/compile/validate/index.ts", "../node_modules/ajv/lib/runtime/validation_error.ts", "../node_modules/ajv/lib/compile/ref_error.ts", "../node_modules/ajv/lib/compile/index.ts", "../node_modules/ajv/dist/refs/data.json", "../node_modules/fast-uri/lib/scopedChars.js", "../node_modules/fast-uri/lib/utils.js", "../node_modules/fast-uri/lib/schemes.js", "../node_modules/fast-uri/index.js", "../node_modules/ajv/lib/runtime/uri.ts", "../node_modules/ajv/lib/core.ts", "../node_modules/ajv/lib/vocabularies/core/id.ts", "../node_modules/ajv/lib/vocabularies/core/ref.ts", "../node_modules/ajv/lib/vocabularies/core/index.ts", "../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts", "../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../node_modules/ajv/lib/runtime/ucs2length.ts", "../node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../node_modules/ajv/lib/vocabularies/validation/required.ts", "../node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../node_modules/ajv/lib/runtime/equal.ts", "../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../node_modules/ajv/lib/vocabularies/validation/const.ts", "../node_modules/ajv/lib/vocabularies/validation/enum.ts", "../node_modules/ajv/lib/vocabularies/validation/index.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items.ts", "../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items2020.ts", "../node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/not.ts", "../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/if.ts", "../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../node_modules/ajv/lib/vocabularies/applicator/index.ts", "../node_modules/ajv/lib/vocabularies/format/format.ts", "../node_modules/ajv/lib/vocabularies/format/index.ts", "../node_modules/ajv/lib/vocabularies/metadata.ts", "../node_modules/ajv/lib/vocabularies/draft7.ts", "../node_modules/ajv/lib/vocabularies/discriminator/types.ts", "../node_modules/ajv/lib/vocabularies/discriminator/index.ts", "../node_modules/ajv/dist/refs/json-schema-draft-07.json", "../node_modules/ajv/lib/ajv.ts", "../node_modules/fast-xml-parser/src/util.js", "../node_modules/fast-xml-parser/src/validator.js", "../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js", "../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js", "../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js", "../node_modules/strnum/strnum.js", "../node_modules/fast-xml-parser/src/ignoreAttributes.js", "../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js", "../node_modules/fast-xml-parser/src/xmlparser/node2json.js", "../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js", "../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js", "../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js", "../node_modules/fast-xml-parser/src/fxp.js", "../node_modules/he/he.js", "../src/options.mts", "../src/parse/index.mts", "../src/counter.mts", "../src/state-machine-model.mts", "../src/parse/parser-helpers.mts", "../src/parse/smcat/smcat-parser.mjs", "../src/parse/smcat/parse.mts", "../src/parse/scxml/index.mjs", "../node_modules/neotraverse/dist/index.js", "../src/transform/utl.mts", "../src/parse/scxml/utl.mts", "../src/parse/scxml/normalize-machine.mts", "../src/parse/smcat-ast.schema.mts", "../src/transform/desugar.mts", "../src/render/smcat.mts", "../src/render/dot/index.mts", "../src/render/dot/attributebuilder.mts", "../src/render/dot/utl.mts", "../node_modules/@hpcc-js/wasm-graphviz/dist/index.js", "../src/render/vector/vector-with-wasm.mts", "../src/render/scjson/make-valid-xml-name.mts", "../src/render/scjson/make-valid-event-names.mts", "../src/render/scjson/index.mts", "../src/render/scxml/render-from-scjson.mts", "../src/render/scxml/index.mts", "../src/render/index.mts", "../src/version.mts", "../src/index.mts", "state-machine-cat-inpage.js"],
-  "sourcesContent": ["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n  abstract readonly str: string\n  abstract readonly names: UsedNames\n  abstract toString(): string\n  abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n  readonly str: string\n  constructor(s: string) {\n    super()\n    if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n    this.str = s\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    return false\n  }\n\n  get names(): UsedNames {\n    return {[this.str]: 1}\n  }\n}\n\nexport class _Code extends _CodeOrName {\n  readonly _items: readonly CodeItem[]\n  private _str?: string\n  private _names?: UsedNames\n\n  constructor(code: string | readonly CodeItem[]) {\n    super()\n    this._items = typeof code === \"string\" ? [code] : code\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    if (this._items.length > 1) return false\n    const item = this._items[0]\n    return item === \"\" || item === '\"\"'\n  }\n\n  get str(): string {\n    return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n  }\n\n  get names(): UsedNames {\n    return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n      if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n      return names\n    }, {}))\n  }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n  const code: CodeItem[] = [strs[0]]\n  let i = 0\n  while (i < args.length) {\n    addCodeArg(code, args[i])\n    code.push(strs[++i])\n  }\n  return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n  const expr: CodeItem[] = [safeStringify(strs[0])]\n  let i = 0\n  while (i < args.length) {\n    expr.push(plus)\n    addCodeArg(expr, args[i])\n    expr.push(plus, safeStringify(strs[++i]))\n  }\n  optimize(expr)\n  return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n  if (arg instanceof _Code) code.push(...arg._items)\n  else if (arg instanceof Name) code.push(arg)\n  else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n  let i = 1\n  while (i < expr.length - 1) {\n    if (expr[i] === plus) {\n      const res = mergeExprItems(expr[i - 1], expr[i + 1])\n      if (res !== undefined) {\n        expr.splice(i - 1, 3, res)\n        continue\n      }\n      expr[i++] = \"+\"\n    }\n    i++\n  }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n  if (b === '\"\"') return a\n  if (a === '\"\"') return b\n  if (typeof a == \"string\") {\n    if (b instanceof Name || a[a.length - 1] !== '\"') return\n    if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n    if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n    return\n  }\n  if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n  return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n  return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n  return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n    ? x\n    : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n  return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n  return JSON.stringify(x)\n    .replace(/\\u2028/g, \"\\\\u2028\")\n    .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n  return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n  if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n    return new _Code(`${key}`)\n  }\n  throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n  return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n  prefix: string\n  index: number\n}\n\nexport interface NameValue {\n  ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n  key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n  code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n  readonly value?: NameValue\n  constructor(name: ValueScopeName) {\n    super(`CodeGen: \"code\" for ${name} not defined`)\n    this.value = name.value\n  }\n}\n\ninterface ScopeOptions {\n  prefixes?: Set\n  parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n  scope: ScopeStore\n  es5?: boolean\n  lines?: boolean\n}\n\nexport type ScopeStore = Record\n\ntype ScopeValues = {\n  [Prefix in string]?: Map\n}\n\nexport type ScopeValueSets = {\n  [Prefix in string]?: Set\n}\n\nexport enum UsedValueState {\n  Started,\n  Completed,\n}\n\nexport type UsedScopeValues = {\n  [Prefix in string]?: Map\n}\n\nexport const varKinds = {\n  const: new Name(\"const\"),\n  let: new Name(\"let\"),\n  var: new Name(\"var\"),\n}\n\nexport class Scope {\n  protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n  protected readonly _prefixes?: Set\n  protected readonly _parent?: Scope\n\n  constructor({prefixes, parent}: ScopeOptions = {}) {\n    this._prefixes = prefixes\n    this._parent = parent\n  }\n\n  toName(nameOrPrefix: Name | string): Name {\n    return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n  }\n\n  name(prefix: string): Name {\n    return new Name(this._newName(prefix))\n  }\n\n  protected _newName(prefix: string): string {\n    const ng = this._names[prefix] || this._nameGroup(prefix)\n    return `${prefix}${ng.index++}`\n  }\n\n  private _nameGroup(prefix: string): NameGroup {\n    if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n      throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n    }\n    return (this._names[prefix] = {prefix, index: 0})\n  }\n}\n\ninterface ScopePath {\n  property: string\n  itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n  readonly prefix: string\n  value?: NameValue\n  scopePath?: Code\n\n  constructor(prefix: string, nameStr: string) {\n    super(nameStr)\n    this.prefix = prefix\n  }\n\n  setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n    this.value = value\n    this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n  }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n  _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n  protected readonly _values: ScopeValues = {}\n  protected readonly _scope: ScopeStore\n  readonly opts: VSOptions\n\n  constructor(opts: ValueScopeOptions) {\n    super(opts)\n    this._scope = opts.scope\n    this.opts = {...opts, _n: opts.lines ? line : nil}\n  }\n\n  get(): ScopeStore {\n    return this._scope\n  }\n\n  name(prefix: string): ValueScopeName {\n    return new ValueScopeName(prefix, this._newName(prefix))\n  }\n\n  value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n    if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n    const name = this.toName(nameOrPrefix) as ValueScopeName\n    const {prefix} = name\n    const valueKey = value.key ?? value.ref\n    let vs = this._values[prefix]\n    if (vs) {\n      const _name = vs.get(valueKey)\n      if (_name) return _name\n    } else {\n      vs = this._values[prefix] = new Map()\n    }\n    vs.set(valueKey, name)\n\n    const s = this._scope[prefix] || (this._scope[prefix] = [])\n    const itemIndex = s.length\n    s[itemIndex] = value.ref\n    name.setValue(value, {property: prefix, itemIndex})\n    return name\n  }\n\n  getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    const vs = this._values[prefix]\n    if (!vs) return\n    return vs.get(keyOrRef)\n  }\n\n  scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n    return this._reduceValues(values, (name: ValueScopeName) => {\n      if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n      return _`${scopeName}${name.scopePath}`\n    })\n  }\n\n  scopeCode(\n    values: ScopeValues | ScopeValueSets = this._values,\n    usedValues?: UsedScopeValues,\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    return this._reduceValues(\n      values,\n      (name: ValueScopeName) => {\n        if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n        return name.value.code\n      },\n      usedValues,\n      getCode\n    )\n  }\n\n  private _reduceValues(\n    values: ScopeValues | ScopeValueSets,\n    valueCode: (n: ValueScopeName) => Code | undefined,\n    usedValues: UsedScopeValues = {},\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    let code: Code = nil\n    for (const prefix in values) {\n      const vs = values[prefix]\n      if (!vs) continue\n      const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n      vs.forEach((name: ValueScopeName) => {\n        if (nameSet.has(name)) return\n        nameSet.set(name, UsedValueState.Started)\n        let c = valueCode(name)\n        if (c) {\n          const def = this.opts.es5 ? varKinds.var : varKinds.const\n          code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n        } else if ((c = getCode?.(name))) {\n          code = _`${code}${c}${this.opts._n}`\n        } else {\n          throw new ValueError(name)\n        }\n        nameSet.set(name, UsedValueState.Completed)\n      })\n    }\n    return code\n  }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n  GT: new _Code(\">\"),\n  GTE: new _Code(\">=\"),\n  LT: new _Code(\"<\"),\n  LTE: new _Code(\"<=\"),\n  EQ: new _Code(\"===\"),\n  NEQ: new _Code(\"!==\"),\n  NOT: new _Code(\"!\"),\n  OR: new _Code(\"||\"),\n  AND: new _Code(\"&&\"),\n  ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n  abstract readonly names: UsedNames\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    return this\n  }\n\n  optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n    return this\n  }\n\n  // get count(): number {\n  //   return 1\n  // }\n}\n\nclass Def extends Node {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private rhs?: SafeExpr\n  ) {\n    super()\n  }\n\n  render({es5, _n}: CGOptions): string {\n    const varKind = es5 ? varKinds.var : this.varKind\n    const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n    return `${varKind} ${this.name}${rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!names[this.name.str]) return\n    if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n  }\n}\n\nclass Assign extends Node {\n  constructor(\n    readonly lhs: Code,\n    public rhs: SafeExpr,\n    private readonly sideEffects?: boolean\n  ) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} = ${this.rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n    this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n    return addExprNames(names, this.rhs)\n  }\n}\n\nclass AssignOp extends Assign {\n  constructor(\n    lhs: Code,\n    private readonly op: Code,\n    rhs: SafeExpr,\n    sideEffects?: boolean\n  ) {\n    super(lhs, rhs, sideEffects)\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n  }\n}\n\nclass Label extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label: Name) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.label}:` + _n\n  }\n}\n\nclass Break extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label?: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    const label = this.label ? ` ${this.label}` : \"\"\n    return `break${label};` + _n\n  }\n}\n\nclass Throw extends Node {\n  constructor(readonly error: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `throw ${this.error};` + _n\n  }\n\n  get names(): UsedNames {\n    return this.error.names\n  }\n}\n\nclass AnyCode extends Node {\n  constructor(private code: SafeExpr) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.code};` + _n\n  }\n\n  optimizeNodes(): this | undefined {\n    return `${this.code}` ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    this.code = optimizeExpr(this.code, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.code instanceof _CodeOrName ? this.code.names : {}\n  }\n}\n\nabstract class ParentNode extends Node {\n  constructor(readonly nodes: ChildNode[] = []) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n  }\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      const n = nodes[i].optimizeNodes()\n      if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n      else if (n) nodes[i] = n\n      else nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      // iterating backwards improves 1-pass optimization\n      const n = nodes[i]\n      if (n.optimizeNames(names, constants)) continue\n      subtractNames(names, n.names)\n      nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  get names(): UsedNames {\n    return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n  }\n\n  // get count(): number {\n  //   return this.nodes.reduce((c, n) => c + n.count, 1)\n  // }\n}\n\nabstract class BlockNode extends ParentNode {\n  render(opts: CGOptions): string {\n    return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n  }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n  static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n  static readonly kind = \"if\"\n  else?: If | Else\n  constructor(\n    private condition: Code | boolean,\n    nodes?: ChildNode[]\n  ) {\n    super(nodes)\n  }\n\n  render(opts: CGOptions): string {\n    let code = `if(${this.condition})` + super.render(opts)\n    if (this.else) code += \"else \" + this.else.render(opts)\n    return code\n  }\n\n  optimizeNodes(): If | ChildNode[] | undefined {\n    super.optimizeNodes()\n    const cond = this.condition\n    if (cond === true) return this.nodes // else is ignored here\n    let e = this.else\n    if (e) {\n      const ns = e.optimizeNodes()\n      e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n    }\n    if (e) {\n      if (cond === false) return e instanceof If ? e : e.nodes\n      if (this.nodes.length) return this\n      return new If(not(cond), e instanceof If ? [e] : e.nodes)\n    }\n    if (cond === false || !this.nodes.length) return undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    this.else = this.else?.optimizeNames(names, constants)\n    if (!(super.optimizeNames(names, constants) || this.else)) return\n    this.condition = optimizeExpr(this.condition, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    addExprNames(names, this.condition)\n    if (this.else) addNames(names, this.else.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.else?.count || 0)\n  // }\n}\n\nabstract class For extends BlockNode {\n  static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n  constructor(private iteration: Code) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.iteration})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iteration = optimizeExpr(this.iteration, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iteration.names)\n  }\n}\n\nclass ForRange extends For {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private readonly from: SafeExpr,\n    private readonly to: SafeExpr\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const varKind = opts.es5 ? varKinds.var : this.varKind\n    const {name, from, to} = this\n    return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n  }\n\n  get names(): UsedNames {\n    const names = addExprNames(super.names, this.from)\n    return addExprNames(names, this.to)\n  }\n}\n\nclass ForIter extends For {\n  constructor(\n    private readonly loop: \"of\" | \"in\",\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private iterable: Code\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iterable = optimizeExpr(this.iterable, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iterable.names)\n  }\n}\n\nclass Func extends BlockNode {\n  static readonly kind = \"func\"\n  constructor(\n    public name: Name,\n    public args: Code,\n    public async?: boolean\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const _async = this.async ? \"async \" : \"\"\n    return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n  }\n}\n\nclass Return extends ParentNode {\n  static readonly kind = \"return\"\n\n  render(opts: CGOptions): string {\n    return \"return \" + super.render(opts)\n  }\n}\n\nclass Try extends BlockNode {\n  catch?: Catch\n  finally?: Finally\n\n  render(opts: CGOptions): string {\n    let code = \"try\" + super.render(opts)\n    if (this.catch) code += this.catch.render(opts)\n    if (this.finally) code += this.finally.render(opts)\n    return code\n  }\n\n  optimizeNodes(): this {\n    super.optimizeNodes()\n    this.catch?.optimizeNodes() as Catch | undefined\n    this.finally?.optimizeNodes() as Finally | undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    super.optimizeNames(names, constants)\n    this.catch?.optimizeNames(names, constants)\n    this.finally?.optimizeNames(names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    if (this.catch) addNames(names, this.catch.names)\n    if (this.finally) addNames(names, this.finally.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n  // }\n}\n\nclass Catch extends BlockNode {\n  static readonly kind = \"catch\"\n  constructor(readonly error: Name) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `catch(${this.error})` + super.render(opts)\n  }\n}\n\nclass Finally extends BlockNode {\n  static readonly kind = \"finally\"\n  render(opts: CGOptions): string {\n    return \"finally\" + super.render(opts)\n  }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n  | typeof If\n  | typeof Else\n  | typeof For\n  | typeof Func\n  | typeof Return\n  | typeof Catch\n  | typeof Finally\n\ntype Constants = Record\n\nexport interface CodeGenOptions {\n  es5?: boolean\n  lines?: boolean\n  ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n  _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n  readonly _scope: Scope\n  readonly _extScope: ValueScope\n  readonly _values: ScopeValueSets = {}\n  private readonly _nodes: ParentNode[]\n  private readonly _blockStarts: number[] = []\n  private readonly _constants: Constants = {}\n  private readonly opts: CGOptions\n\n  constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n    this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n    this._extScope = extScope\n    this._scope = new Scope({parent: extScope})\n    this._nodes = [new Root()]\n  }\n\n  toString(): string {\n    return this._root.render(this.opts)\n  }\n\n  // returns unique name in the internal scope\n  name(prefix: string): Name {\n    return this._scope.name(prefix)\n  }\n\n  // reserves unique name in the external scope\n  scopeName(prefix: string): ValueScopeName {\n    return this._extScope.name(prefix)\n  }\n\n  // reserves unique name in the external scope and assigns value to it\n  scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n    const name = this._extScope.value(prefixOrName, value)\n    const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n    vs.add(name)\n    return name\n  }\n\n  getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    return this._extScope.getValue(prefix, keyOrRef)\n  }\n\n  // return code that assigns values in the external scope to the names that are used internally\n  // (same names that were returned by gen.scopeName or gen.scopeValue)\n  scopeRefs(scopeName: Name): Code {\n    return this._extScope.scopeRefs(scopeName, this._values)\n  }\n\n  scopeCode(): Code {\n    return this._extScope.scopeCode(this._values)\n  }\n\n  private _def(\n    varKind: Name,\n    nameOrPrefix: Name | string,\n    rhs?: SafeExpr,\n    constant?: boolean\n  ): Name {\n    const name = this._scope.toName(nameOrPrefix)\n    if (rhs !== undefined && constant) this._constants[name.str] = rhs\n    this._leafNode(new Def(varKind, name, rhs))\n    return name\n  }\n\n  // `const` declaration (`var` in es5 mode)\n  const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n  }\n\n  // `let` declaration with optional assignment (`var` in es5 mode)\n  let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n  }\n\n  // `var` declaration with optional assignment\n  var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n  }\n\n  // assignment code\n  assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n    return this._leafNode(new Assign(lhs, rhs, sideEffects))\n  }\n\n  // `+=` code\n  add(lhs: Code, rhs: SafeExpr): CodeGen {\n    return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n  }\n\n  // appends passed SafeExpr to code or executes Block\n  code(c: Block | SafeExpr): CodeGen {\n    if (typeof c == \"function\") c()\n    else if (c !== nil) this._leafNode(new AnyCode(c))\n    return this\n  }\n\n  // returns code for object literal for the passed argument list of key-value pairs\n  object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n    const code: CodeItem[] = [\"{\"]\n    for (const [key, value] of keyValues) {\n      if (code.length > 1) code.push(\",\")\n      code.push(key)\n      if (key !== value || this.opts.es5) {\n        code.push(\":\")\n        addCodeArg(code, value)\n      }\n    }\n    code.push(\"}\")\n    return new _Code(code)\n  }\n\n  // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n  if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n    this._blockNode(new If(condition))\n\n    if (thenBody && elseBody) {\n      this.code(thenBody).else().code(elseBody).endIf()\n    } else if (thenBody) {\n      this.code(thenBody).endIf()\n    } else if (elseBody) {\n      throw new Error('CodeGen: \"else\" body without \"then\" body')\n    }\n    return this\n  }\n\n  // `else if` clause - invalid without `if` or after `else` clauses\n  elseIf(condition: Code | boolean): CodeGen {\n    return this._elseNode(new If(condition))\n  }\n\n  // `else` clause - only valid after `if` or `else if` clauses\n  else(): CodeGen {\n    return this._elseNode(new Else())\n  }\n\n  // end `if` statement (needed if gen.if was used only with condition)\n  endIf(): CodeGen {\n    return this._endBlockNode(If, Else)\n  }\n\n  private _for(node: For, forBody?: Block): CodeGen {\n    this._blockNode(node)\n    if (forBody) this.code(forBody).endFor()\n    return this\n  }\n\n  // a generic `for` clause (or statement if `forBody` is passed)\n  for(iteration: Code, forBody?: Block): CodeGen {\n    return this._for(new ForLoop(iteration), forBody)\n  }\n\n  // `for` statement for a range of values\n  forRange(\n    nameOrPrefix: Name | string,\n    from: SafeExpr,\n    to: SafeExpr,\n    forBody: (index: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n  }\n\n  // `for-of` statement (in es5 mode replace with a normal for loop)\n  forOf(\n    nameOrPrefix: Name | string,\n    iterable: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = varKinds.const\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    if (this.opts.es5) {\n      const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n      return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n        this.var(name, _`${arr}[${i}]`)\n        forBody(name)\n      })\n    }\n    return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n  }\n\n  // `for-in` statement.\n  // With option `ownProperties` replaced with a `for-of` loop for object keys\n  forIn(\n    nameOrPrefix: Name | string,\n    obj: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n  ): CodeGen {\n    if (this.opts.ownProperties) {\n      return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n    }\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n  }\n\n  // end `for` loop\n  endFor(): CodeGen {\n    return this._endBlockNode(For)\n  }\n\n  // `label` statement\n  label(label: Name): CodeGen {\n    return this._leafNode(new Label(label))\n  }\n\n  // `break` statement\n  break(label?: Code): CodeGen {\n    return this._leafNode(new Break(label))\n  }\n\n  // `return` statement\n  return(value: Block | SafeExpr): CodeGen {\n    const node = new Return()\n    this._blockNode(node)\n    this.code(value)\n    if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n    return this._endBlockNode(Return)\n  }\n\n  // `try` statement\n  try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n    if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n    const node = new Try()\n    this._blockNode(node)\n    this.code(tryBody)\n    if (catchCode) {\n      const error = this.name(\"e\")\n      this._currNode = node.catch = new Catch(error)\n      catchCode(error)\n    }\n    if (finallyCode) {\n      this._currNode = node.finally = new Finally()\n      this.code(finallyCode)\n    }\n    return this._endBlockNode(Catch, Finally)\n  }\n\n  // `throw` statement\n  throw(error: Code): CodeGen {\n    return this._leafNode(new Throw(error))\n  }\n\n  // start self-balancing block\n  block(body?: Block, nodeCount?: number): CodeGen {\n    this._blockStarts.push(this._nodes.length)\n    if (body) this.code(body).endBlock(nodeCount)\n    return this\n  }\n\n  // end the current self-balancing block\n  endBlock(nodeCount?: number): CodeGen {\n    const len = this._blockStarts.pop()\n    if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n    const toClose = this._nodes.length - len\n    if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n      throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n    }\n    this._nodes.length = len\n    return this\n  }\n\n  // `function` heading (or definition if funcBody is passed)\n  func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n    this._blockNode(new Func(name, args, async))\n    if (funcBody) this.code(funcBody).endFunc()\n    return this\n  }\n\n  // end function definition\n  endFunc(): CodeGen {\n    return this._endBlockNode(Func)\n  }\n\n  optimize(n = 1): void {\n    while (n-- > 0) {\n      this._root.optimizeNodes()\n      this._root.optimizeNames(this._root.names, this._constants)\n    }\n  }\n\n  private _leafNode(node: LeafNode): CodeGen {\n    this._currNode.nodes.push(node)\n    return this\n  }\n\n  private _blockNode(node: StartBlockNode): void {\n    this._currNode.nodes.push(node)\n    this._nodes.push(node)\n  }\n\n  private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n    const n = this._currNode\n    if (n instanceof N1 || (N2 && n instanceof N2)) {\n      this._nodes.pop()\n      return this\n    }\n    throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n  }\n\n  private _elseNode(node: If | Else): CodeGen {\n    const n = this._currNode\n    if (!(n instanceof If)) {\n      throw new Error('CodeGen: \"else\" without \"if\"')\n    }\n    this._currNode = n.else = node\n    return this\n  }\n\n  private get _root(): Root {\n    return this._nodes[0] as Root\n  }\n\n  private get _currNode(): ParentNode {\n    const ns = this._nodes\n    return ns[ns.length - 1]\n  }\n\n  private set _currNode(node: ParentNode) {\n    const ns = this._nodes\n    ns[ns.length - 1] = node\n  }\n\n  // get nodeCount(): number {\n  //   return this._root.count\n  // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n  for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n  return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n  return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n  if (expr instanceof Name) return replaceName(expr)\n  if (!canOptimize(expr)) return expr\n  return new _Code(\n    expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n      if (c instanceof Name) c = replaceName(c)\n      if (c instanceof _Code) items.push(...c._items)\n      else items.push(c)\n      return items\n    }, [])\n  )\n\n  function replaceName(n: Name): SafeExpr {\n    const c = constants[n.str]\n    if (c === undefined || names[n.str] !== 1) return n\n    delete names[n.str]\n    return c\n  }\n\n  function canOptimize(e: SafeExpr): e is _Code {\n    return (\n      e instanceof _Code &&\n      e._items.some(\n        (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n      )\n    )\n  }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n  for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n  return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n  return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n  return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n  return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n  return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash(arr: T[]): {[K in T]?: true} {\n  const hash: {[K in T]?: true} = {}\n  for (const item of arr) hash[item] = true\n  return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n  if (typeof schema == \"boolean\") return schema\n  if (Object.keys(schema).length === 0) return true\n  checkUnknownRules(it, schema)\n  return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n  const {opts, self} = it\n  if (!opts.strictSchema) return\n  if (typeof schema === \"boolean\") return\n  const rules = self.RULES.keywords\n  for (const key in schema) {\n    if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n  }\n}\n\nexport function schemaHasRules(\n  schema: AnySchema,\n  rules: {[Key in string]?: boolean | Rule}\n): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (rules[key]) return true\n  return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n  return false\n}\n\nexport function schemaRefOrVal(\n  {topSchemaRef, schemaPath}: SchemaObjCxt,\n  schema: unknown,\n  keyword: string,\n  $data?: string | false\n): Code | number | boolean {\n  if (!$data) {\n    if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n    if (typeof schema == \"string\") return _`${schema}`\n  }\n  return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n  return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n  return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n  if (typeof str == \"number\") return `${str}`\n  return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n  return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem(xs: T | T[], f: (x: T) => void): void {\n  if (Array.isArray(xs)) {\n    for (const x of xs) f(x)\n  } else {\n    f(xs)\n  }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc = (\n  gen: CodeGen,\n  from: Name | T,\n  to: Name | Exclude | undefined,\n  toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs {\n  mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n  mergeToName: (gen: CodeGen, from: T, to: Name) => void\n  mergeValues: (from: T, to: Exclude) => T\n  resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated({\n  mergeNames,\n  mergeToName,\n  mergeValues,\n  resultToName,\n}: MakeMergeFuncArgs): MergeEvaluatedFunc {\n  return (gen, from, to, toName) => {\n    const res =\n      to === undefined\n        ? from\n        : to instanceof Name\n        ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n        : from instanceof Name\n        ? (mergeToName(gen, to, from), from)\n        : mergeValues(from, to)\n    return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n  }\n}\n\ninterface MergeEvaluated {\n  props: MergeEvaluatedFunc\n  items: MergeEvaluatedFunc\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n  props: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n        gen.if(\n          _`${from} === true`,\n          () => gen.assign(to, true),\n          () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n        )\n      }),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () => {\n        if (from === true) {\n          gen.assign(to, true)\n        } else {\n          gen.assign(to, _`${to} || {}`)\n          setEvaluated(gen, to, from)\n        }\n      }),\n    mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n    resultToName: evaluatedPropsToName,\n  }),\n  items: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n        gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () =>\n        gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n    resultToName: (gen, items) => gen.var(\"items\", items),\n  }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n  if (ps === true) return gen.var(\"props\", true)\n  const props = gen.var(\"props\", _`{}`)\n  if (ps !== undefined) setEvaluated(gen, props, ps)\n  return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n  Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n  return gen.scopeValue(\"func\", {\n    ref: f,\n    code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n  })\n}\n\nexport enum Type {\n  Num,\n  Str,\n}\n\nexport function getErrorPath(\n  dataProp: Name | string | number,\n  dataPropType?: Type,\n  jsPropertySyntax?: boolean\n): Code | string {\n  // let path\n  if (dataProp instanceof Name) {\n    const isNumber = dataPropType === Type.Num\n    return jsPropertySyntax\n      ? isNumber\n        ? _`\"[\" + ${dataProp} + \"]\"`\n        : _`\"['\" + ${dataProp} + \"']\"`\n      : isNumber\n      ? _`\"/\" + ${dataProp}`\n      : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n  }\n  return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n  it: SchemaCxt,\n  msg: string,\n  mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n  if (!mode) return\n  msg = `strict mode: ${msg}`\n  if (mode === true) throw new Error(msg)\n  it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n  // validation function arguments\n  data: new Name(\"data\"), // data passed to validation function\n  // args passed from referencing schema\n  valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n  instancePath: new Name(\"instancePath\"),\n  parentData: new Name(\"parentData\"),\n  parentDataProperty: new Name(\"parentDataProperty\"),\n  rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n  dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n  // function scoped variables\n  vErrors: new Name(\"vErrors\"), // null or array of validation errors\n  errors: new Name(\"errors\"), // counter of validation errors\n  this: new Name(\"this\"),\n  // \"globals\"\n  self: new Name(\"self\"),\n  scope: new Name(\"scope\"),\n  // JTD serialize/parse name for JSON string and position\n  json: new Name(\"json\"),\n  jsonPos: new Name(\"jsonPos\"),\n  jsonLen: new Name(\"jsonLen\"),\n  jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n  message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n  message: ({keyword, schemaType}) =>\n    schemaType\n      ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n      : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n  instancePath?: Code\n  schemaPath?: string\n  parentSchema?: boolean\n}\n\nexport function reportError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths,\n  overrideAllErrors?: boolean\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  if (overrideAllErrors ?? (compositeRule || allErrors)) {\n    addError(gen, errObj)\n  } else {\n    returnErrors(it, _`[${errObj}]`)\n  }\n}\n\nexport function reportExtraError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  addError(gen, errObj)\n  if (!(compositeRule || allErrors)) {\n    returnErrors(it, N.vErrors)\n  }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n  gen.assign(N.errors, errsCount)\n  gen.if(_`${N.vErrors} !== null`, () =>\n    gen.if(\n      errsCount,\n      () => gen.assign(_`${N.vErrors}.length`, errsCount),\n      () => gen.assign(N.vErrors, null)\n    )\n  )\n}\n\nexport function extendErrors({\n  gen,\n  keyword,\n  schemaValue,\n  data,\n  errsCount,\n  it,\n}: KeywordErrorCxt): void {\n  /* istanbul ignore if */\n  if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n  const err = gen.name(\"err\")\n  gen.forRange(\"i\", errsCount, N.errors, (i) => {\n    gen.const(err, _`${N.vErrors}[${i}]`)\n    gen.if(_`${err}.instancePath === undefined`, () =>\n      gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n    )\n    gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n    if (it.opts.verbose) {\n      gen.assign(_`${err}.schema`, schemaValue)\n      gen.assign(_`${err}.data`, data)\n    }\n  })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n  const err = gen.const(\"err\", errObj)\n  gen.if(\n    _`${N.vErrors} === null`,\n    () => gen.assign(N.vErrors, _`[${err}]`),\n    _`${N.vErrors}.push(${err})`\n  )\n  gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n  const {gen, validateName, schemaEnv} = it\n  if (schemaEnv.$async) {\n    gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n  } else {\n    gen.assign(_`${validateName}.errors`, errs)\n    gen.return(false)\n  }\n}\n\nconst E = {\n  keyword: new Name(\"keyword\"),\n  schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n  params: new Name(\"params\"),\n  propertyName: new Name(\"propertyName\"),\n  message: new Name(\"message\"),\n  schema: new Name(\"schema\"),\n  parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths?: ErrorPaths\n): Code {\n  const {createErrors} = cxt.it\n  if (createErrors === false) return _`{}`\n  return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths: ErrorPaths = {}\n): Code {\n  const {gen, it} = cxt\n  const keyValues: [Name, SafeExpr | string][] = [\n    errorInstancePath(it, errorPaths),\n    errorSchemaPath(cxt, errorPaths),\n  ]\n  extraErrorProps(cxt, error, keyValues)\n  return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n  const instPath = instancePath\n    ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n    : errorPath\n  return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n  {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n  {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n  let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n  if (schemaPath) {\n    schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n  }\n  return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n  cxt: KeywordErrorCxt,\n  {params, message}: KeywordErrorDefinition,\n  keyValues: [Name, SafeExpr | string][]\n): void {\n  const {keyword, data, schemaValue, it} = cxt\n  const {opts, propertyName, topSchemaRef, schemaPath} = it\n  keyValues.push(\n    [E.keyword, keyword],\n    [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n  )\n  if (opts.messages) {\n    keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n  }\n  if (opts.verbose) {\n    keyValues.push(\n      [E.schema, schemaValue],\n      [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n      [N.data, data]\n    )\n  }\n  if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n  message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n  const {gen, schema, validateName} = it\n  if (schema === false) {\n    falseSchemaError(it, false)\n  } else if (typeof schema == \"object\" && schema.$async === true) {\n    gen.return(N.data)\n  } else {\n    gen.assign(_`${validateName}.errors`, null)\n    gen.return(true)\n  }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n  const {gen, schema} = it\n  if (schema === false) {\n    gen.var(valid, false) // TODO var\n    falseSchemaError(it)\n  } else {\n    gen.var(valid, true) // TODO var\n  }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n  const {gen, data} = it\n  // TODO maybe some other interface should be used for non-keyword validation errors...\n  const cxt: KeywordErrorCxt = {\n    gen,\n    keyword: \"false schema\",\n    data,\n    schema: false,\n    schemaCode: false,\n    schemaValue: false,\n    params: {},\n    it,\n  }\n  reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n  return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n  [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n  rules: RuleGroup[]\n  post: RuleGroup\n  all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n  keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n  types: ValidationTypes\n}\n\nexport interface RuleGroup {\n  type?: JSONType\n  rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n  keyword: string\n  definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n  const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n    number: {type: \"number\", rules: []},\n    string: {type: \"string\", rules: []},\n    array: {type: \"array\", rules: []},\n    object: {type: \"object\", rules: []},\n  }\n  return {\n    types: {...groups, integer: true, boolean: true, null: true},\n    rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n    post: {rules: []},\n    all: {},\n    keywords: {},\n  }\n}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n  {schema, self}: SchemaObjCxt,\n  type: JSONType\n): boolean | undefined {\n  const group = self.RULES.types[type]\n  return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n  return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n  return (\n    schema[rule.keyword] !== undefined ||\n    rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n  )\n}\n", "import type {\n  KeywordErrorDefinition,\n  KeywordErrorCxt,\n  ErrorObject,\n  AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n  Correct,\n  Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n  const types = getJSONTypes(schema.type)\n  const hasNull = types.includes(\"null\")\n  if (hasNull) {\n    if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n  } else {\n    if (!types.length && schema.nullable !== undefined) {\n      throw new Error('\"nullable\" cannot be used without \"type\"')\n    }\n    if (schema.nullable === true) types.push(\"null\")\n  }\n  return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n  const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n  if (types.every(isJSONType)) return types\n  throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n  const {gen, data, opts} = it\n  const coerceTo = coerceToTypes(types, opts.coerceTypes)\n  const checkTypes =\n    types.length > 0 &&\n    !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n  if (checkTypes) {\n    const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n    gen.if(wrongType, () => {\n      if (coerceTo.length) coerceData(it, types, coerceTo)\n      else reportTypeError(it)\n    })\n  }\n  return checkTypes\n}\n\nconst COERCIBLE: Set = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n  return coerceTypes\n    ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n    : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n  const {gen, data, opts} = it\n  const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n  const coerced = gen.let(\"coerced\", _`undefined`)\n  if (opts.coerceTypes === \"array\") {\n    gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n      gen\n        .assign(data, _`${data}[0]`)\n        .assign(dataType, _`typeof ${data}`)\n        .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n    )\n  }\n  gen.if(_`${coerced} !== undefined`)\n  for (const t of coerceTo) {\n    if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n      coerceSpecificType(t)\n    }\n  }\n  gen.else()\n  reportTypeError(it)\n  gen.endIf()\n\n  gen.if(_`${coerced} !== undefined`, () => {\n    gen.assign(data, coerced)\n    assignParentData(it, coerced)\n  })\n\n  function coerceSpecificType(t: string): void {\n    switch (t) {\n      case \"string\":\n        gen\n          .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n          .assign(coerced, _`\"\" + ${data}`)\n          .elseIf(_`${data} === null`)\n          .assign(coerced, _`\"\"`)\n        return\n      case \"number\":\n        gen\n          .elseIf(\n            _`${dataType} == \"boolean\" || ${data} === null\n              || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"integer\":\n        gen\n          .elseIf(\n            _`${dataType} === \"boolean\" || ${data} === null\n              || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"boolean\":\n        gen\n          .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n          .assign(coerced, false)\n          .elseIf(_`${data} === \"true\" || ${data} === 1`)\n          .assign(coerced, true)\n        return\n      case \"null\":\n        gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n        gen.assign(coerced, null)\n        return\n\n      case \"array\":\n        gen\n          .elseIf(\n            _`${dataType} === \"string\" || ${dataType} === \"number\"\n              || ${dataType} === \"boolean\" || ${data} === null`\n          )\n          .assign(coerced, _`[${data}]`)\n    }\n  }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n  // TODO use gen.property\n  gen.if(_`${parentData} !== undefined`, () =>\n    gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n  )\n}\n\nexport function checkDataType(\n  dataType: JSONType,\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct = DataType.Correct\n): Code {\n  const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n  let cond: Code\n  switch (dataType) {\n    case \"null\":\n      return _`${data} ${EQ} null`\n    case \"array\":\n      cond = _`Array.isArray(${data})`\n      break\n    case \"object\":\n      cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n      break\n    case \"integer\":\n      cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n      break\n    case \"number\":\n      cond = numCond()\n      break\n    default:\n      return _`typeof ${data} ${EQ} ${dataType}`\n  }\n  return correct === DataType.Correct ? cond : not(cond)\n\n  function numCond(_cond: Code = nil): Code {\n    return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n  }\n}\n\nexport function checkDataTypes(\n  dataTypes: JSONType[],\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct?: DataType\n): Code {\n  if (dataTypes.length === 1) {\n    return checkDataType(dataTypes[0], data, strictNums, correct)\n  }\n  let cond: Code\n  const types = toHash(dataTypes)\n  if (types.array && types.object) {\n    const notObj = _`typeof ${data} != \"object\"`\n    cond = types.null ? notObj : _`!${data} || ${notObj}`\n    delete types.null\n    delete types.array\n    delete types.object\n  } else {\n    cond = nil\n  }\n  if (types.number) delete types.integer\n  for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n  return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n  message: ({schema}) => `must be ${schema}`,\n  params: ({schema, schemaValue}) =>\n    typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n  const cxt = getTypeErrorContext(it)\n  reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n  const {gen, data, schema} = it\n  const schemaCode = schemaRefOrVal(it, schema, \"type\")\n  return {\n    gen,\n    keyword: \"type\",\n    data,\n    schema: schema.type,\n    schemaCode,\n    schemaValue: schemaCode,\n    parentSchema: schema,\n    params: {},\n    it,\n  }\n}\n", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n  const {properties, items} = it.schema\n  if (ty === \"object\" && properties) {\n    for (const key in properties) {\n      assignDefault(it, key, properties[key].default)\n    }\n  } else if (ty === \"array\" && Array.isArray(items)) {\n    items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n  }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n  const {gen, compositeRule, data, opts} = it\n  if (defaultValue === undefined) return\n  const childData = _`${data}${getProperty(prop)}`\n  if (compositeRule) {\n    checkStrictMode(it, `default is ignored for: ${childData}`)\n    return\n  }\n\n  let condition = _`${childData} === undefined`\n  if (opts.useDefaults === \"empty\") {\n    condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n  }\n  // `${childData} === undefined` +\n  // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n  gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n  const {gen, data, it} = cxt\n  gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n    cxt.setParams({missingProperty: _`${prop}`}, true)\n    cxt.error()\n  })\n}\n\nexport function checkMissingProp(\n  {gen, data, it: {opts}}: KeywordCxt,\n  properties: string[],\n  missing: Name\n): Code {\n  return or(\n    ...properties.map((prop) =>\n      and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n    )\n  )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n  cxt.setParams({missingProperty: missing}, true)\n  cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n  return gen.scopeValue(\"func\", {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    ref: Object.prototype.hasOwnProperty,\n    code: _`Object.prototype.hasOwnProperty`,\n  })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n  return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} !== undefined`\n  return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} === undefined`\n  return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n  return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n  return allSchemaProperties(schemaMap).filter(\n    (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n  )\n}\n\nexport function callValidateCode(\n  {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n  func: Code,\n  context: Code,\n  passSchema?: boolean\n): Code {\n  const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n  const valCxt: [Name, Code | number][] = [\n    [N.instancePath, strConcat(N.instancePath, errorPath)],\n    [N.parentData, it.parentData],\n    [N.parentDataProperty, it.parentDataProperty],\n    [N.rootData, N.rootData],\n  ]\n  if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n  const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n  return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n  const u = opts.unicodeRegExp ? \"u\" : \"\"\n  const {regExp} = opts.code\n  const rx = regExp(pattern, u)\n\n  return gen.scopeValue(\"pattern\", {\n    key: rx.toString(),\n    ref: rx,\n    code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n  })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  if (it.allErrors) {\n    const validArr = gen.let(\"valid\", true)\n    validateItems(() => gen.assign(validArr, false))\n    return validArr\n  }\n  gen.var(valid, true)\n  validateItems(() => gen.break())\n  return valid\n\n  function validateItems(notValid: () => void): void {\n    const len = gen.const(\"len\", _`${data}.length`)\n    gen.forRange(\"i\", 0, len, (i) => {\n      cxt.subschema(\n        {\n          keyword,\n          dataProp: i,\n          dataPropType: Type.Num,\n        },\n        valid\n      )\n      gen.if(not(valid), notValid)\n    })\n  }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n  const {gen, schema, keyword, it} = cxt\n  /* istanbul ignore if */\n  if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n  const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n  if (alwaysValid && !it.opts.unevaluated) return\n\n  const valid = gen.let(\"valid\", false)\n  const schValid = gen.name(\"_valid\")\n\n  gen.block(() =>\n    schema.forEach((_sch: AnySchema, i: number) => {\n      const schCxt = cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          compositeRule: true,\n        },\n        schValid\n      )\n      gen.assign(valid, _`${valid} || ${schValid}`)\n      const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n      // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n      // or if all properties and items were evaluated (it.props === true && it.items === true)\n      if (!merged) gen.if(not(valid))\n    })\n  )\n\n  cxt.result(\n    valid,\n    () => cxt.reset(),\n    () => cxt.error(true)\n  )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n  AnySchema,\n  SchemaValidateFunction,\n  AnyValidateFunction,\n  AddedKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, it} = cxt\n  const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n  const schemaRef = useKeyword(gen, keyword, macroSchema)\n  if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n  const valid = gen.name(\"valid\")\n  cxt.subschema(\n    {\n      schema: macroSchema,\n      schemaPath: nil,\n      errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n      topSchemaRef: schemaRef,\n      compositeRule: true,\n    },\n    valid\n  )\n  cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, $data, it} = cxt\n  checkAsyncKeyword(it, def)\n  const validate =\n    !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n  const validateRef = useKeyword(gen, keyword, validate)\n  const valid = gen.let(\"valid\")\n  cxt.block$data(valid, validateKeyword)\n  cxt.ok(def.valid ?? valid)\n\n  function validateKeyword(): void {\n    if (def.errors === false) {\n      assignValid()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => cxt.error())\n    } else {\n      const ruleErrs = def.async ? validateAsync() : validateSync()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => addErrs(cxt, ruleErrs))\n    }\n  }\n\n  function validateAsync(): Name {\n    const ruleErrs = gen.let(\"ruleErrs\", null)\n    gen.try(\n      () => assignValid(_`await `),\n      (e) =>\n        gen.assign(valid, false).if(\n          _`${e} instanceof ${it.ValidationError as Name}`,\n          () => gen.assign(ruleErrs, _`${e}.errors`),\n          () => gen.throw(e)\n        )\n    )\n    return ruleErrs\n  }\n\n  function validateSync(): Code {\n    const validateErrs = _`${validateRef}.errors`\n    gen.assign(validateErrs, null)\n    assignValid(nil)\n    return validateErrs\n  }\n\n  function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n    const passCxt = it.opts.passContext ? N.this : N.self\n    const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n    gen.assign(\n      valid,\n      _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n      def.modifying\n    )\n  }\n\n  function reportErrs(errors: () => void): void {\n    gen.if(not(def.valid ?? valid), errors)\n  }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n  const {gen, data, it} = cxt\n  gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n  const {gen} = cxt\n  gen.if(\n    _`Array.isArray(${errs})`,\n    () => {\n      gen\n        .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n        .assign(N.errors, _`${N.vErrors}.length`)\n      extendErrors(cxt)\n    },\n    () => cxt.error()\n  )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n  if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n  if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n  return gen.scopeValue(\n    \"keyword\",\n    typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n  )\n}\n\nexport function validSchemaType(\n  schema: unknown,\n  schemaType: JSONType[],\n  allowUndefined = false\n): boolean {\n  // TODO add tests\n  return (\n    !schemaType.length ||\n    schemaType.some((st) =>\n      st === \"array\"\n        ? Array.isArray(schema)\n        : st === \"object\"\n        ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n        : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n    )\n  )\n}\n\nexport function validateKeywordUsage(\n  {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n  def: AddedKeywordDefinition,\n  keyword: string\n): void {\n  /* istanbul ignore if */\n  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n    throw new Error(\"ajv implementation error\")\n  }\n\n  const deps = def.dependencies\n  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n  }\n\n  if (def.validateSchema) {\n    const valid = def.validateSchema(schema[keyword])\n    if (!valid) {\n      const msg =\n        `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n        self.errorsText(def.validateSchema.errors)\n      if (opts.validateSchema === \"log\") self.logger.error(msg)\n      else throw new Error(msg)\n    }\n  }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n  // TODO use Optional? align with SchemCxt property types\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef?: Code\n  errorPath?: Code\n  dataLevel?: number\n  dataTypes?: JSONType[]\n  data?: Name\n  parentData?: Name\n  parentDataProperty?: Code | number\n  dataNames?: Name[]\n  dataPathArr?: (Code | number)[]\n  propertyName?: Name\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  compositeRule?: true\n  createErrors?: boolean\n  allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n  keyword: string\n  schemaProp: string | number\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef: Code\n  data: Name | Code\n  dataProp: Code | string | number\n  dataTypes: JSONType[]\n  definedProperties: Set\n  propertyName: Name\n  dataPropType: Type\n  jtdDiscriminator: string\n  jtdMetadata: boolean\n  compositeRule: true\n  createErrors: boolean\n  allErrors: boolean\n}>\n\nexport function getSubschema(\n  it: SchemaObjCxt,\n  {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n  if (keyword !== undefined && schema !== undefined) {\n    throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n  }\n\n  if (keyword !== undefined) {\n    const sch = it.schema[keyword]\n    return schemaProp === undefined\n      ? {\n          schema: sch,\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n        }\n      : {\n          schema: sch[schemaProp],\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n        }\n  }\n\n  if (schema !== undefined) {\n    if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n      throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n    }\n    return {\n      schema,\n      schemaPath,\n      topSchemaRef,\n      errSchemaPath,\n    }\n  }\n\n  throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n  subschema: SubschemaContext,\n  it: SchemaObjCxt,\n  {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n  if (data !== undefined && dataProp !== undefined) {\n    throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n  }\n\n  const {gen} = it\n\n  if (dataProp !== undefined) {\n    const {errorPath, dataPathArr, opts} = it\n    const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n    dataContextProps(nextData)\n    subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n    subschema.parentDataProperty = _`${dataProp}`\n    subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n  }\n\n  if (data !== undefined) {\n    const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n    dataContextProps(nextData)\n    if (propertyName !== undefined) subschema.propertyName = propertyName\n    // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n  }\n\n  if (dataTypes) subschema.dataTypes = dataTypes\n\n  function dataContextProps(_nextData: Name): void {\n    subschema.data = _nextData\n    subschema.dataLevel = it.dataLevel + 1\n    subschema.dataTypes = []\n    it.definedProperties = new Set()\n    subschema.parentData = it.data\n    subschema.dataNames = [...it.dataNames, _nextData]\n  }\n}\n\nexport function extendSubschemaMode(\n  subschema: SubschemaContext,\n  {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n  if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n  if (createErrors !== undefined) subschema.createErrors = createErrors\n  if (allErrors !== undefined) subschema.allErrors = allErrors\n  subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n  subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true,\n  if: true,\n  then: true,\n  else: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  $defs: true,\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i (count += countKeys(sch)))\n    }\n    if (count === Infinity) return Infinity\n  }\n  return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n  if (normalize !== false) id = normalizeId(id)\n  const p = resolver.parse(id)\n  return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n  const serialized = resolver.serialize(p)\n  return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n  return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n  id = normalizeId(id)\n  return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n  if (typeof schema == \"boolean\") return {}\n  const {schemaId, uriResolver} = this.opts\n  const schId = normalizeId(schema[schemaId] || baseId)\n  const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n  const pathPrefix = getFullPath(uriResolver, schId, false)\n  const localRefs: LocalRefs = {}\n  const schemaRefs: Set = new Set()\n\n  traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n    if (parentJsonPtr === undefined) return\n    const fullPath = pathPrefix + jsonPtr\n    let innerBaseId = baseIds[parentJsonPtr]\n    if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n    addAnchor.call(this, sch.$anchor)\n    addAnchor.call(this, sch.$dynamicAnchor)\n    baseIds[jsonPtr] = innerBaseId\n\n    function addRef(this: Ajv, ref: string): string {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      const _resolve = this.opts.uriResolver.resolve\n      ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n      if (schemaRefs.has(ref)) throw ambiguos(ref)\n      schemaRefs.add(ref)\n      let schOrRef = this.refs[ref]\n      if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n      if (typeof schOrRef == \"object\") {\n        checkAmbiguosRef(sch, schOrRef.schema, ref)\n      } else if (ref !== normalizeId(fullPath)) {\n        if (ref[0] === \"#\") {\n          checkAmbiguosRef(sch, localRefs[ref], ref)\n          localRefs[ref] = sch\n        } else {\n          this.refs[ref] = fullPath\n        }\n      }\n      return ref\n    }\n\n    function addAnchor(this: Ajv, anchor: unknown): void {\n      if (typeof anchor == \"string\") {\n        if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n        addRef.call(this, `#${anchor}`)\n      }\n    }\n  })\n\n  return localRefs\n\n  function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n    if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n  }\n\n  function ambiguos(ref: string): Error {\n    return new Error(`reference \"${ref}\" resolves to more than one schema`)\n  }\n}\n", "import type {\n  AddedKeywordDefinition,\n  AnySchema,\n  AnySchemaObject,\n  KeywordErrorCxt,\n  KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n  schemaRefOrVal,\n  schemaHasRulesButRef,\n  checkUnknownRules,\n  checkStrictMode,\n  unescapeJsonPointer,\n  mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n  ErrorPaths,\n  reportError,\n  reportExtraError,\n  resetErrorsCount,\n  keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      topSchemaObjCode(it)\n      return\n    }\n  }\n  validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n  {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n  body: Block\n): void {\n  if (opts.code.es5) {\n    gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n      gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n      destructureValCxtES5(gen, opts)\n      gen.code(body)\n    })\n  } else {\n    gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n      gen.code(funcSourceUrl(schema, opts)).code(body)\n    )\n  }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n  return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n    N.data\n  }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n  gen.if(\n    N.valCxt,\n    () => {\n      gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n      gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n      gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n      gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n    },\n    () => {\n      gen.var(N.instancePath, _`\"\"`)\n      gen.var(N.parentData, _`undefined`)\n      gen.var(N.parentDataProperty, _`undefined`)\n      gen.var(N.rootData, N.data)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n    }\n  )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n  const {schema, opts, gen} = it\n  validateFunction(it, () => {\n    if (opts.$comment && schema.$comment) commentKeyword(it)\n    checkNoDefault(it)\n    gen.let(N.vErrors, null)\n    gen.let(N.errors, 0)\n    if (opts.unevaluated) resetEvaluated(it)\n    typeAndKeywords(it)\n    returnResults(it)\n  })\n  return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n  // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n  const {gen, validateName} = it\n  it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n  gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n  gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n  const schId = typeof schema == \"object\" && schema[opts.schemaId]\n  return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      subSchemaObjCode(it, valid)\n      return\n    }\n  }\n  boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (self.RULES.all[key]) return true\n  return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n  return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n  const {schema, gen, opts} = it\n  if (opts.$comment && schema.$comment) commentKeyword(it)\n  updateContext(it)\n  checkAsyncSchema(it)\n  const errsCount = gen.const(\"_errs\", N.errors)\n  typeAndKeywords(it, errsCount)\n  // TODO var\n  gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n  checkUnknownRules(it)\n  checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n  if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n  const types = getSchemaTypes(it.schema)\n  const checkedTypes = coerceAndCheckDataType(it, types)\n  schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n  const {schema, errSchemaPath, opts, self} = it\n  if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n    self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n  }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n  const {schema, opts} = it\n  if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n    checkStrictMode(it, \"default is ignored in the schema root\")\n  }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n  const schId = it.schema[it.opts.schemaId]\n  if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n  if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n  const msg = schema.$comment\n  if (opts.$comment === true) {\n    gen.code(_`${N.self}.logger.log(${msg})`)\n  } else if (typeof opts.$comment == \"function\") {\n    const schemaPath = str`${errSchemaPath}/$comment`\n    const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n    gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n  }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n  const {gen, schemaEnv, validateName, ValidationError, opts} = it\n  if (schemaEnv.$async) {\n    // TODO assign unevaluated\n    gen.if(\n      _`${N.errors} === 0`,\n      () => gen.return(N.data),\n      () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n    )\n  } else {\n    gen.assign(_`${validateName}.errors`, N.vErrors)\n    if (opts.unevaluated) assignEvaluated(it)\n    gen.return(_`${N.errors} === 0`)\n  }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n  if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n  if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n  it: SchemaObjCxt,\n  types: JSONType[],\n  typeErrors: boolean,\n  errsCount?: Name\n): void {\n  const {gen, schema, data, allErrors, opts, self} = it\n  const {RULES} = self\n  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n    gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n    return\n  }\n  if (!opts.jtd) checkStrictTypes(it, types)\n  gen.block(() => {\n    for (const group of RULES.rules) groupKeywords(group)\n    groupKeywords(RULES.post)\n  })\n\n  function groupKeywords(group: RuleGroup): void {\n    if (!shouldUseGroup(schema, group)) return\n    if (group.type) {\n      gen.if(checkDataType(group.type, data, opts.strictNumbers))\n      iterateKeywords(it, group)\n      if (types.length === 1 && types[0] === group.type && typeErrors) {\n        gen.else()\n        reportTypeError(it)\n      }\n      gen.endIf()\n    } else {\n      iterateKeywords(it, group)\n    }\n    // TODO make it \"ok\" call?\n    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n  }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n  const {\n    gen,\n    schema,\n    opts: {useDefaults},\n  } = it\n  if (useDefaults) assignDefaults(it, group.type)\n  gen.block(() => {\n    for (const rule of group.rules) {\n      if (shouldUseRule(schema, rule)) {\n        keywordCode(it, rule.keyword, rule.definition, group.type)\n      }\n    }\n  })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (it.schemaEnv.meta || !it.opts.strictTypes) return\n  checkContextTypes(it, types)\n  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n  checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (!types.length) return\n  if (!it.dataTypes.length) {\n    it.dataTypes = types\n    return\n  }\n  types.forEach((t) => {\n    if (!includesType(it.dataTypes, t)) {\n      strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n    }\n  })\n  narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n    strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n  }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  const rules = it.self.RULES.all\n  for (const keyword in rules) {\n    const rule = rules[keyword]\n    if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n      const {type} = rule.definition\n      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n        strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n      }\n    }\n  }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n  return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n  return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n  const ts: JSONType[] = []\n  for (const t of it.dataTypes) {\n    if (includesType(withTypes, t)) ts.push(t)\n    else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n  }\n  it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n  msg += ` at \"${schemaPath}\" (strictTypes)`\n  checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean\n  readonly keyword: string\n  readonly data: Name // Name referencing the current level of the data instance\n  readonly $data?: string | false\n  schema: any // keyword value in the schema\n  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n  readonly parentSchema: AnySchemaObject\n  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n  // requires option trackErrors in keyword definition\n  params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n  readonly def: AddedKeywordDefinition\n\n  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n    validateKeywordUsage(it, def, keyword)\n    this.gen = it.gen\n    this.allErrors = it.allErrors\n    this.keyword = keyword\n    this.data = it.data\n    this.schema = it.schema[keyword]\n    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n    this.schemaType = def.schemaType\n    this.parentSchema = it.schema\n    this.params = {}\n    this.it = it\n    this.def = def\n\n    if (this.$data) {\n      this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n    } else {\n      this.schemaCode = this.schemaValue\n      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n      }\n    }\n\n    if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n      this.errsCount = it.gen.const(\"_errs\", N.errors)\n    }\n  }\n\n  result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.failResult(not(condition), successAction, failAction)\n  }\n\n  failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.gen.if(condition)\n    if (failAction) failAction()\n    else this.error()\n    if (successAction) {\n      this.gen.else()\n      successAction()\n      if (this.allErrors) this.gen.endIf()\n    } else {\n      if (this.allErrors) this.gen.endIf()\n      else this.gen.else()\n    }\n  }\n\n  pass(condition: Code, failAction?: () => void): void {\n    this.failResult(not(condition), undefined, failAction)\n  }\n\n  fail(condition?: Code): void {\n    if (condition === undefined) {\n      this.error()\n      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n      return\n    }\n    this.gen.if(condition)\n    this.error()\n    if (this.allErrors) this.gen.endIf()\n    else this.gen.else()\n  }\n\n  fail$data(condition: Code): void {\n    if (!this.$data) return this.fail(condition)\n    const {schemaCode} = this\n    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n  }\n\n  error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n    if (errorParams) {\n      this.setParams(errorParams)\n      this._error(append, errorPaths)\n      this.setParams({})\n      return\n    }\n    this._error(append, errorPaths)\n  }\n\n  private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n    ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n  }\n\n  $dataError(): void {\n    reportError(this, this.def.$dataError || keyword$DataError)\n  }\n\n  reset(): void {\n    if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n    resetErrorsCount(this.gen, this.errsCount)\n  }\n\n  ok(cond: Code | boolean): void {\n    if (!this.allErrors) this.gen.if(cond)\n  }\n\n  setParams(obj: KeywordCxtParams, assign?: true): void {\n    if (assign) Object.assign(this.params, obj)\n    else this.params = obj\n  }\n\n  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n    this.gen.block(() => {\n      this.check$data(valid, $dataValid)\n      codeBlock()\n    })\n  }\n\n  check$data(valid: Name = nil, $dataValid: Code = nil): void {\n    if (!this.$data) return\n    const {gen, schemaCode, schemaType, def} = this\n    gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n    if (valid !== nil) gen.assign(valid, true)\n    if (schemaType.length || def.validateSchema) {\n      gen.elseIf(this.invalid$data())\n      this.$dataError()\n      if (valid !== nil) gen.assign(valid, false)\n    }\n    gen.else()\n  }\n\n  invalid$data(): Code {\n    const {gen, schemaCode, schemaType, def, it} = this\n    return or(wrong$DataType(), invalid$DataSchema())\n\n    function wrong$DataType(): Code {\n      if (schemaType.length) {\n        /* istanbul ignore if */\n        if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n        const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n        return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n      }\n      return nil\n    }\n\n    function invalid$DataSchema(): Code {\n      if (def.validateSchema) {\n        const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n        return _`!${validateSchemaRef}(${schemaCode})`\n      }\n      return nil\n    }\n  }\n\n  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n    const subschema = getSubschema(this.it, appl)\n    extendSubschemaData(subschema, this.it, appl)\n    extendSubschemaMode(subschema, appl)\n    const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n    subschemaCode(nextContext, valid)\n    return nextContext\n  }\n\n  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n    const {it, gen} = this\n    if (!it.opts.unevaluated) return\n    if (it.props !== true && schemaCxt.props !== undefined) {\n      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n    }\n    if (it.items !== true && schemaCxt.items !== undefined) {\n      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n    }\n  }\n\n  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n    const {it, gen} = this\n    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n      return true\n    }\n  }\n}\n\nfunction keywordCode(\n  it: SchemaObjCxt,\n  keyword: string,\n  def: AddedKeywordDefinition,\n  ruleType?: JSONType\n): void {\n  const cxt = new KeywordCxt(it, def, keyword)\n  if (\"code\" in def) {\n    def.code(cxt, ruleType)\n  } else if (cxt.$data && def.validate) {\n    funcKeywordCode(cxt, def)\n  } else if (\"macro\" in def) {\n    macroKeywordCode(cxt, def)\n  } else if (def.compile || def.validate) {\n    funcKeywordCode(cxt, def)\n  }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n  $data: string,\n  {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n  let jsonPointer\n  let data: Code\n  if ($data === \"\") return N.rootData\n  if ($data[0] === \"/\") {\n    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    jsonPointer = $data\n    data = N.rootData\n  } else {\n    const matches = RELATIVE_JSON_POINTER.exec($data)\n    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    const up: number = +matches[1]\n    jsonPointer = matches[2]\n    if (jsonPointer === \"#\") {\n      if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n      return dataPathArr[dataLevel - up]\n    }\n    if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n    data = dataNames[dataLevel - up]\n    if (!jsonPointer) return data\n  }\n\n  let expr = data\n  const segments = jsonPointer.split(\"/\")\n  for (const segment of segments) {\n    if (segment) {\n      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n      expr = _`${expr} && ${data}`\n    }\n  }\n  return expr\n\n  function errorMsg(pointerType: string, up: number): string {\n    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n  }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n  readonly errors: Partial[]\n  readonly ajv: true\n  readonly validation: true\n\n  constructor(errors: Partial[]) {\n    super(\"validation failed\")\n    this.errors = errors\n    this.ajv = this.validation = true\n  }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n  readonly missingRef: string\n  readonly missingSchema: string\n\n  constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n    super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n    this.missingRef = resolveUrl(resolver, baseId, ref)\n    this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n  }\n}\n", "import type {\n  AnySchema,\n  AnySchemaObject,\n  AnyValidateFunction,\n  AsyncValidateFunction,\n  EvaluatedProperties,\n  EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n  [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n  readonly data: Name // Name with reference to the current part of data instance\n  readonly parentData: Name // should be used in keywords modifying data\n  readonly parentDataProperty: Code | number // should be used in keywords modifying data\n  readonly dataNames: Name[]\n  readonly dataPathArr: (Code | number)[]\n  readonly dataLevel: number // the level of the currently validated data,\n  // it can be used to access both the property names and the data on all levels from the top.\n  dataTypes: JSONType[] // data types applied to the current part of data instance\n  definedProperties: Set // set of properties to keep track of for required checks\n  readonly topSchemaRef: Code\n  readonly validateName: Name\n  evaluated?: Name\n  readonly ValidationError?: Name\n  readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n  readonly schemaEnv: SchemaEnv\n  readonly rootId: string\n  baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n  readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n  readonly errSchemaPath: string // this is actual string, should not be changed to Code\n  readonly errorPath: Code\n  readonly propertyName?: Name\n  readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n  // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n  // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n  // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n  props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n  items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  readonly createErrors?: boolean\n  readonly opts: InstanceOptions // Ajv instance option.\n  readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n  readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root?: SchemaEnv\n  readonly baseId?: string\n  readonly schemaPath?: string\n  readonly localRefs?: LocalRefs\n  readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root: SchemaEnv\n  baseId: string // TODO possibly, it should be readonly\n  schemaPath?: string\n  localRefs?: LocalRefs\n  readonly meta?: boolean\n  readonly $async?: boolean // true if the current schema is asynchronous.\n  readonly refs: SchemaRefs = {}\n  readonly dynamicAnchors: {[Ref in string]?: true} = {}\n  validate?: AnyValidateFunction\n  validateName?: ValueScopeName\n  serialize?: (data: unknown) => string\n  serializeName?: ValueScopeName\n  parse?: (data: string) => unknown\n  parseName?: ValueScopeName\n\n  constructor(env: SchemaEnvArgs) {\n    let schema: AnySchemaObject | undefined\n    if (typeof env.schema == \"object\") schema = env.schema\n    this.schema = env.schema\n    this.schemaId = env.schemaId\n    this.root = env.root || this\n    this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n    this.schemaPath = env.schemaPath\n    this.localRefs = env.localRefs\n    this.meta = env.meta\n    this.$async = schema?.$async\n    this.refs = {}\n  }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n  // TODO refactor - remove compilations\n  const _sch = getCompilingSchema.call(this, sch)\n  if (_sch) return _sch\n  const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n  const {es5, lines} = this.opts.code\n  const {ownProperties} = this.opts\n  const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n  let _ValidationError\n  if (sch.$async) {\n    _ValidationError = gen.scopeValue(\"Error\", {\n      ref: ValidationError,\n      code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n    })\n  }\n\n  const validateName = gen.scopeName(\"validate\")\n  sch.validateName = validateName\n\n  const schemaCxt: SchemaCxt = {\n    gen,\n    allErrors: this.opts.allErrors,\n    data: N.data,\n    parentData: N.parentData,\n    parentDataProperty: N.parentDataProperty,\n    dataNames: [N.data],\n    dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n    dataLevel: 0,\n    dataTypes: [],\n    definedProperties: new Set(),\n    topSchemaRef: gen.scopeValue(\n      \"schema\",\n      this.opts.code.source === true\n        ? {ref: sch.schema, code: stringify(sch.schema)}\n        : {ref: sch.schema}\n    ),\n    validateName,\n    ValidationError: _ValidationError,\n    schema: sch.schema,\n    schemaEnv: sch,\n    rootId,\n    baseId: sch.baseId || rootId,\n    schemaPath: nil,\n    errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n    errorPath: _`\"\"`,\n    opts: this.opts,\n    self: this,\n  }\n\n  let sourceCode: string | undefined\n  try {\n    this._compilations.add(sch)\n    validateFunctionCode(schemaCxt)\n    gen.optimize(this.opts.code.optimize)\n    // gen.optimize(1)\n    const validateCode = gen.toString()\n    sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n    // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n    if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n    const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n    const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n    this.scope.value(validateName, {ref: validate})\n\n    validate.errors = null\n    validate.schema = sch.schema\n    validate.schemaEnv = sch\n    if (sch.$async) (validate as AsyncValidateFunction).$async = true\n    if (this.opts.code.source === true) {\n      validate.source = {validateName, validateCode, scopeValues: gen._values}\n    }\n    if (this.opts.unevaluated) {\n      const {props, items} = schemaCxt\n      validate.evaluated = {\n        props: props instanceof Name ? undefined : props,\n        items: items instanceof Name ? undefined : items,\n        dynamicProps: props instanceof Name,\n        dynamicItems: items instanceof Name,\n      }\n      if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n    }\n    sch.validate = validate\n    return sch\n  } catch (e) {\n    delete sch.validate\n    delete sch.validateName\n    if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n    throw e\n  } finally {\n    this._compilations.delete(sch)\n  }\n}\n\nexport function resolveRef(\n  this: Ajv,\n  root: SchemaEnv,\n  baseId: string,\n  ref: string\n): AnySchema | SchemaEnv | undefined {\n  ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n  const schOrFunc = root.refs[ref]\n  if (schOrFunc) return schOrFunc\n\n  let _sch = resolve.call(this, root, ref)\n  if (_sch === undefined) {\n    const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n    const {schemaId} = this.opts\n    if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n  }\n\n  if (_sch === undefined) return\n  return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n  if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n  return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n  for (const sch of this._compilations) {\n    if (sameSchemaEnv(sch, schEnv)) return sch\n  }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n  this: Ajv,\n  root: SchemaEnv, // information about the root schema for the current schema\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  let sch\n  while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n  return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n  this: Ajv,\n  root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  const p = this.opts.uriResolver.parse(ref)\n  const refPath = _getFullPath(this.opts.uriResolver, p)\n  let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n  // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n  if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n    return getJsonPointer.call(this, p, root)\n  }\n\n  const id = normalizeId(refPath)\n  const schOrRef = this.refs[id] || this.schemas[id]\n  if (typeof schOrRef == \"string\") {\n    const sch = resolveSchema.call(this, root, schOrRef)\n    if (typeof sch?.schema !== \"object\") return\n    return getJsonPointer.call(this, p, sch)\n  }\n\n  if (typeof schOrRef?.schema !== \"object\") return\n  if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n  if (id === normalizeId(ref)) {\n    const {schema} = schOrRef\n    const {schemaId} = this.opts\n    const schId = schema[schemaId]\n    if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    return new SchemaEnv({schema, schemaId, root, baseId})\n  }\n  return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n  \"properties\",\n  \"patternProperties\",\n  \"enum\",\n  \"dependencies\",\n  \"definitions\",\n])\n\nfunction getJsonPointer(\n  this: Ajv,\n  parsedRef: URIComponent,\n  {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n  if (parsedRef.fragment?.[0] !== \"/\") return\n  for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n    if (typeof schema === \"boolean\") return\n    const partSchema = schema[unescapeFragment(part)]\n    if (partSchema === undefined) return\n    schema = partSchema\n    // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n    const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n    if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n      baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    }\n  }\n  let env: SchemaEnv | undefined\n  if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n    const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n    env = resolveSchema.call(this, root, $ref)\n  }\n  // even though resolution failed we need to return SchemaEnv to throw exception\n  // so that compileAsync loads missing schema.\n  const {schemaId} = this.opts\n  env = env || new SchemaEnv({schema, schemaId, root, baseId})\n  if (env.schema !== env.root.schema) return env\n  return undefined\n}\n", "{\n  \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n  \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n  \"type\": \"object\",\n  \"required\": [\"$data\"],\n  \"properties\": {\n    \"$data\": {\n      \"type\": \"string\",\n      \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n    }\n  },\n  \"additionalProperties\": false\n}\n", "'use strict'\n\nconst HEX = {\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3,\n  4: 4,\n  5: 5,\n  6: 6,\n  7: 7,\n  8: 8,\n  9: 9,\n  a: 10,\n  A: 10,\n  b: 11,\n  B: 11,\n  c: 12,\n  C: 12,\n  d: 13,\n  D: 13,\n  e: 14,\n  E: 14,\n  f: 15,\n  F: 15\n}\n\nmodule.exports = {\n  HEX\n}\n", "'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n  if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n  const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n  const [address] = matches\n  if (address) {\n    return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n  } else {\n    return { host, isIPV4: false }\n  }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n  let acc = ''\n  let strip = true\n  for (const c of input) {\n    if (HEX[c] === undefined) return undefined\n    if (c !== '0' && strip === true) strip = false\n    if (!strip) acc += c\n  }\n  if (keepZero && acc.length === 0) acc = '0'\n  return acc\n}\n\nfunction getIPV6 (input) {\n  let tokenCount = 0\n  const output = { error: false, address: '', zone: '' }\n  const address = []\n  const buffer = []\n  let isZone = false\n  let endipv6Encountered = false\n  let endIpv6 = false\n\n  function consume () {\n    if (buffer.length) {\n      if (isZone === false) {\n        const hex = stringArrayToHexStripped(buffer)\n        if (hex !== undefined) {\n          address.push(hex)\n        } else {\n          output.error = true\n          return false\n        }\n      }\n      buffer.length = 0\n    }\n    return true\n  }\n\n  for (let i = 0; i < input.length; i++) {\n    const cursor = input[i]\n    if (cursor === '[' || cursor === ']') { continue }\n    if (cursor === ':') {\n      if (endipv6Encountered === true) {\n        endIpv6 = true\n      }\n      if (!consume()) { break }\n      tokenCount++\n      address.push(':')\n      if (tokenCount > 7) {\n        // not valid\n        output.error = true\n        break\n      }\n      if (i - 1 >= 0 && input[i - 1] === ':') {\n        endipv6Encountered = true\n      }\n      continue\n    } else if (cursor === '%') {\n      if (!consume()) { break }\n      // switch to zone detection\n      isZone = true\n    } else {\n      buffer.push(cursor)\n      continue\n    }\n  }\n  if (buffer.length) {\n    if (isZone) {\n      output.zone = buffer.join('')\n    } else if (endIpv6) {\n      address.push(buffer.join(''))\n    } else {\n      address.push(stringArrayToHexStripped(buffer))\n    }\n  }\n  output.address = address.join('')\n  return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n  if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n  const ipv6 = getIPV6(host)\n\n  if (!ipv6.error) {\n    let newHost = ipv6.address\n    let escapedHost = ipv6.address\n    if (ipv6.zone) {\n      newHost += '%' + ipv6.zone\n      escapedHost += '%25' + ipv6.zone\n    }\n    return { host: newHost, escapedHost, isIPV6: true }\n  } else {\n    return { host, isIPV6: false }\n  }\n}\n\nfunction stripLeadingZeros (str, token) {\n  let out = ''\n  let skip = true\n  const l = str.length\n  for (let i = 0; i < l; i++) {\n    const c = str[i]\n    if (c === '0' && skip) {\n      if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n        out += c\n        skip = false\n      }\n    } else {\n      if (c === token) {\n        skip = true\n      } else {\n        skip = false\n      }\n      out += c\n    }\n  }\n  return out\n}\n\nfunction findToken (str, token) {\n  let ind = 0\n  for (let i = 0; i < str.length; i++) {\n    if (str[i] === token) ind++\n  }\n  return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n  const output = []\n\n  while (input.length) {\n    if (input.match(RDS1)) {\n      input = input.replace(RDS1, '')\n    } else if (input.match(RDS2)) {\n      input = input.replace(RDS2, '/')\n    } else if (input.match(RDS3)) {\n      input = input.replace(RDS3, '/')\n      output.pop()\n    } else if (input === '.' || input === '..') {\n      input = ''\n    } else {\n      const im = input.match(RDS5)\n      if (im) {\n        const s = im[0]\n        input = input.slice(s.length)\n        output.push(s)\n      } else {\n        throw new Error('Unexpected dot segment condition')\n      }\n    }\n  }\n  return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n  const func = esc !== true ? escape : unescape\n  if (components.scheme !== undefined) {\n    components.scheme = func(components.scheme)\n  }\n  if (components.userinfo !== undefined) {\n    components.userinfo = func(components.userinfo)\n  }\n  if (components.host !== undefined) {\n    components.host = func(components.host)\n  }\n  if (components.path !== undefined) {\n    components.path = func(components.path)\n  }\n  if (components.query !== undefined) {\n    components.query = func(components.query)\n  }\n  if (components.fragment !== undefined) {\n    components.fragment = func(components.fragment)\n  }\n  return components\n}\n\nfunction recomposeAuthority (components, options) {\n  const uriTokens = []\n\n  if (components.userinfo !== undefined) {\n    uriTokens.push(components.userinfo)\n    uriTokens.push('@')\n  }\n\n  if (components.host !== undefined) {\n    let host = unescape(components.host)\n    const ipV4res = normalizeIPv4(host)\n\n    if (ipV4res.isIPV4) {\n      host = ipV4res.host\n    } else {\n      const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n      if (ipV6res.isIPV6 === true) {\n        host = `[${ipV6res.escapedHost}]`\n      } else {\n        host = components.host\n      }\n    }\n    uriTokens.push(host)\n  }\n\n  if (typeof components.port === 'number' || typeof components.port === 'string') {\n    uriTokens.push(':')\n    uriTokens.push(String(components.port))\n  }\n\n  return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n  recomposeAuthority,\n  normalizeComponentEncoding,\n  removeDotSegments,\n  normalizeIPv4,\n  normalizeIPv6,\n  stringArrayToHexStripped\n}\n", "'use strict'\n\nconst UUID_REG = /^[\\da-f]{8}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{12}$/iu\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nfunction isSecure (wsComponents) {\n  return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === 'wss'\n}\n\nfunction httpParse (components) {\n  if (!components.host) {\n    components.error = components.error || 'HTTP URIs must have a host.'\n  }\n\n  return components\n}\n\nfunction httpSerialize (components) {\n  const secure = String(components.scheme).toLowerCase() === 'https'\n\n  // normalize the default port\n  if (components.port === (secure ? 443 : 80) || components.port === '') {\n    components.port = undefined\n  }\n\n  // normalize the empty path\n  if (!components.path) {\n    components.path = '/'\n  }\n\n  // NOTE: We do not parse query strings for HTTP URIs\n  // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n  // and not the HTTP spec.\n\n  return components\n}\n\nfunction wsParse (wsComponents) {\n// indicate if the secure flag is set\n  wsComponents.secure = isSecure(wsComponents)\n\n  // construct resouce name\n  wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '')\n  wsComponents.path = undefined\n  wsComponents.query = undefined\n\n  return wsComponents\n}\n\nfunction wsSerialize (wsComponents) {\n// normalize the default port\n  if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === '') {\n    wsComponents.port = undefined\n  }\n\n  // ensure scheme matches secure flag\n  if (typeof wsComponents.secure === 'boolean') {\n    wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws')\n    wsComponents.secure = undefined\n  }\n\n  // reconstruct path from resource name\n  if (wsComponents.resourceName) {\n    const [path, query] = wsComponents.resourceName.split('?')\n    wsComponents.path = (path && path !== '/' ? path : undefined)\n    wsComponents.query = query\n    wsComponents.resourceName = undefined\n  }\n\n  // forbid fragment component\n  wsComponents.fragment = undefined\n\n  return wsComponents\n}\n\nfunction urnParse (urnComponents, options) {\n  if (!urnComponents.path) {\n    urnComponents.error = 'URN can not be parsed'\n    return urnComponents\n  }\n  const matches = urnComponents.path.match(URN_REG)\n  if (matches) {\n    const scheme = options.scheme || urnComponents.scheme || 'urn'\n    urnComponents.nid = matches[1].toLowerCase()\n    urnComponents.nss = matches[2]\n    const urnScheme = `${scheme}:${options.nid || urnComponents.nid}`\n    const schemeHandler = SCHEMES[urnScheme]\n    urnComponents.path = undefined\n\n    if (schemeHandler) {\n      urnComponents = schemeHandler.parse(urnComponents, options)\n    }\n  } else {\n    urnComponents.error = urnComponents.error || 'URN can not be parsed.'\n  }\n\n  return urnComponents\n}\n\nfunction urnSerialize (urnComponents, options) {\n  const scheme = options.scheme || urnComponents.scheme || 'urn'\n  const nid = urnComponents.nid.toLowerCase()\n  const urnScheme = `${scheme}:${options.nid || nid}`\n  const schemeHandler = SCHEMES[urnScheme]\n\n  if (schemeHandler) {\n    urnComponents = schemeHandler.serialize(urnComponents, options)\n  }\n\n  const uriComponents = urnComponents\n  const nss = urnComponents.nss\n  uriComponents.path = `${nid || options.nid}:${nss}`\n\n  options.skipEscape = true\n  return uriComponents\n}\n\nfunction urnuuidParse (urnComponents, options) {\n  const uuidComponents = urnComponents\n  uuidComponents.uuid = uuidComponents.nss\n  uuidComponents.nss = undefined\n\n  if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) {\n    uuidComponents.error = uuidComponents.error || 'UUID is not valid.'\n  }\n\n  return uuidComponents\n}\n\nfunction urnuuidSerialize (uuidComponents) {\n  const urnComponents = uuidComponents\n  // normalize UUID\n  urnComponents.nss = (uuidComponents.uuid || '').toLowerCase()\n  return urnComponents\n}\n\nconst http = {\n  scheme: 'http',\n  domainHost: true,\n  parse: httpParse,\n  serialize: httpSerialize\n}\n\nconst https = {\n  scheme: 'https',\n  domainHost: http.domainHost,\n  parse: httpParse,\n  serialize: httpSerialize\n}\n\nconst ws = {\n  scheme: 'ws',\n  domainHost: true,\n  parse: wsParse,\n  serialize: wsSerialize\n}\n\nconst wss = {\n  scheme: 'wss',\n  domainHost: ws.domainHost,\n  parse: ws.parse,\n  serialize: ws.serialize\n}\n\nconst urn = {\n  scheme: 'urn',\n  parse: urnParse,\n  serialize: urnSerialize,\n  skipNormalize: true\n}\n\nconst urnuuid = {\n  scheme: 'urn:uuid',\n  parse: urnuuidParse,\n  serialize: urnuuidSerialize,\n  skipNormalize: true\n}\n\nconst SCHEMES = {\n  http,\n  https,\n  ws,\n  wss,\n  urn,\n  'urn:uuid': urnuuid\n}\n\nmodule.exports = SCHEMES\n", "'use strict'\n\nconst { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require('./lib/utils')\nconst SCHEMES = require('./lib/schemes')\n\nfunction normalize (uri, options) {\n  if (typeof uri === 'string') {\n    uri = serialize(parse(uri, options), options)\n  } else if (typeof uri === 'object') {\n    uri = parse(serialize(uri, options), options)\n  }\n  return uri\n}\n\nfunction resolve (baseURI, relativeURI, options) {\n  const schemelessOptions = Object.assign({ scheme: 'null' }, options)\n  const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n  return serialize(resolved, { ...schemelessOptions, skipEscape: true })\n}\n\nfunction resolveComponents (base, relative, options, skipNormalization) {\n  const target = {}\n  if (!skipNormalization) {\n    base = parse(serialize(base, options), options) // normalize base components\n    relative = parse(serialize(relative, options), options) // normalize relative components\n  }\n  options = options || {}\n\n  if (!options.tolerant && relative.scheme) {\n    target.scheme = relative.scheme\n    // target.authority = relative.authority;\n    target.userinfo = relative.userinfo\n    target.host = relative.host\n    target.port = relative.port\n    target.path = removeDotSegments(relative.path || '')\n    target.query = relative.query\n  } else {\n    if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n      // target.authority = relative.authority;\n      target.userinfo = relative.userinfo\n      target.host = relative.host\n      target.port = relative.port\n      target.path = removeDotSegments(relative.path || '')\n      target.query = relative.query\n    } else {\n      if (!relative.path) {\n        target.path = base.path\n        if (relative.query !== undefined) {\n          target.query = relative.query\n        } else {\n          target.query = base.query\n        }\n      } else {\n        if (relative.path.charAt(0) === '/') {\n          target.path = removeDotSegments(relative.path)\n        } else {\n          if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n            target.path = '/' + relative.path\n          } else if (!base.path) {\n            target.path = relative.path\n          } else {\n            target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n          }\n          target.path = removeDotSegments(target.path)\n        }\n        target.query = relative.query\n      }\n      // target.authority = base.authority;\n      target.userinfo = base.userinfo\n      target.host = base.host\n      target.port = base.port\n    }\n    target.scheme = base.scheme\n  }\n\n  target.fragment = relative.fragment\n\n  return target\n}\n\nfunction equal (uriA, uriB, options) {\n  if (typeof uriA === 'string') {\n    uriA = unescape(uriA)\n    uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriA === 'object') {\n    uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n  }\n\n  if (typeof uriB === 'string') {\n    uriB = unescape(uriB)\n    uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriB === 'object') {\n    uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n  }\n\n  return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\nfunction serialize (cmpts, opts) {\n  const components = {\n    host: cmpts.host,\n    scheme: cmpts.scheme,\n    userinfo: cmpts.userinfo,\n    port: cmpts.port,\n    path: cmpts.path,\n    query: cmpts.query,\n    nid: cmpts.nid,\n    nss: cmpts.nss,\n    uuid: cmpts.uuid,\n    fragment: cmpts.fragment,\n    reference: cmpts.reference,\n    resourceName: cmpts.resourceName,\n    secure: cmpts.secure,\n    error: ''\n  }\n  const options = Object.assign({}, opts)\n  const uriTokens = []\n\n  // find scheme handler\n  const schemeHandler = SCHEMES[(options.scheme || components.scheme || '').toLowerCase()]\n\n  // perform scheme specific serialization\n  if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options)\n\n  if (components.path !== undefined) {\n    if (!options.skipEscape) {\n      components.path = escape(components.path)\n\n      if (components.scheme !== undefined) {\n        components.path = components.path.split('%3A').join(':')\n      }\n    } else {\n      components.path = unescape(components.path)\n    }\n  }\n\n  if (options.reference !== 'suffix' && components.scheme) {\n    uriTokens.push(components.scheme, ':')\n  }\n\n  const authority = recomposeAuthority(components, options)\n  if (authority !== undefined) {\n    if (options.reference !== 'suffix') {\n      uriTokens.push('//')\n    }\n\n    uriTokens.push(authority)\n\n    if (components.path && components.path.charAt(0) !== '/') {\n      uriTokens.push('/')\n    }\n  }\n  if (components.path !== undefined) {\n    let s = components.path\n\n    if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n      s = removeDotSegments(s)\n    }\n\n    if (authority === undefined) {\n      s = s.replace(/^\\/\\//u, '/%2F') // don't allow the path to start with \"//\"\n    }\n\n    uriTokens.push(s)\n  }\n\n  if (components.query !== undefined) {\n    uriTokens.push('?', components.query)\n  }\n\n  if (components.fragment !== undefined) {\n    uriTokens.push('#', components.fragment)\n  }\n  return uriTokens.join('')\n}\n\nconst hexLookUp = Array.from({ length: 127 }, (v, k) => /[^!\"$&'()*+,\\-.;=_`a-z{}~]/u.test(String.fromCharCode(k)))\n\nfunction nonSimpleDomain (value) {\n  let code = 0\n  for (let i = 0, len = value.length; i < len; ++i) {\n    code = value.charCodeAt(i)\n    if (code > 126 || hexLookUp[code]) {\n      return true\n    }\n  }\n  return false\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\nfunction parse (uri, opts) {\n  const options = Object.assign({}, opts)\n  const parsed = {\n    scheme: undefined,\n    userinfo: undefined,\n    host: '',\n    port: undefined,\n    path: '',\n    query: undefined,\n    fragment: undefined\n  }\n  const gotEncoding = uri.indexOf('%') !== -1\n  let isIP = false\n  if (options.reference === 'suffix') uri = (options.scheme ? options.scheme + ':' : '') + '//' + uri\n\n  const matches = uri.match(URI_PARSE)\n\n  if (matches) {\n    // store each component\n    parsed.scheme = matches[1]\n    parsed.userinfo = matches[3]\n    parsed.host = matches[4]\n    parsed.port = parseInt(matches[5], 10)\n    parsed.path = matches[6] || ''\n    parsed.query = matches[7]\n    parsed.fragment = matches[8]\n\n    // fix port number\n    if (isNaN(parsed.port)) {\n      parsed.port = matches[5]\n    }\n    if (parsed.host) {\n      const ipv4result = normalizeIPv4(parsed.host)\n      if (ipv4result.isIPV4 === false) {\n        const ipv6result = normalizeIPv6(ipv4result.host, { isIPV4: false })\n        parsed.host = ipv6result.host.toLowerCase()\n        isIP = ipv6result.isIPV6\n      } else {\n        parsed.host = ipv4result.host\n        isIP = true\n      }\n    }\n    if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && !parsed.path && parsed.query === undefined) {\n      parsed.reference = 'same-document'\n    } else if (parsed.scheme === undefined) {\n      parsed.reference = 'relative'\n    } else if (parsed.fragment === undefined) {\n      parsed.reference = 'absolute'\n    } else {\n      parsed.reference = 'uri'\n    }\n\n    // check for reference errors\n    if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n      parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n    }\n\n    // find scheme handler\n    const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || '').toLowerCase()]\n\n    // check if scheme can't handle IRIs\n    if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n      // if host component is a domain name\n      if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n        // convert Unicode IDN -> ASCII IDN\n        try {\n          parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n        } catch (e) {\n          parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n        }\n      }\n      // convert IRI -> URI\n    }\n\n    if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n      if (gotEncoding && parsed.scheme !== undefined) {\n        parsed.scheme = unescape(parsed.scheme)\n      }\n      if (gotEncoding && parsed.host !== undefined) {\n        parsed.host = unescape(parsed.host)\n      }\n      if (parsed.path !== undefined && parsed.path.length) {\n        parsed.path = escape(unescape(parsed.path))\n      }\n      if (parsed.fragment !== undefined && parsed.fragment.length) {\n        parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n      }\n    }\n\n    // perform scheme specific parsing\n    if (schemeHandler && schemeHandler.parse) {\n      schemeHandler.parse(parsed, options)\n    }\n  } else {\n    parsed.error = parsed.error || 'URI can not be parsed.'\n  }\n  return parsed\n}\n\nconst fastUri = {\n  SCHEMES,\n  normalize,\n  resolve,\n  resolveComponents,\n  equal,\n  serialize,\n  parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n", "import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n", "export {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  AnyValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin {\n  (ajv: Ajv, options?: Opts): Ajv\n  [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n  Schema,\n  AnySchema,\n  AnySchemaObject,\n  SchemaObject,\n  AsyncSchema,\n  Vocabulary,\n  KeywordDefinition,\n  AddedKeywordDefinition,\n  AnyValidateFunction,\n  ValidateFunction,\n  AsyncValidateFunction,\n  ErrorObject,\n  Format,\n  AddedFormat,\n  RegExpEngine,\n  UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n  \"validate\",\n  \"serialize\",\n  \"parse\",\n  \"wrapper\",\n  \"root\",\n  \"schema\",\n  \"keyword\",\n  \"pattern\",\n  \"formats\",\n  \"validate$data\",\n  \"func\",\n  \"obj\",\n  \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n  // strict mode options (NEW)\n  strict?: boolean | \"log\"\n  strictSchema?: boolean | \"log\"\n  strictNumbers?: boolean | \"log\"\n  strictTypes?: boolean | \"log\"\n  strictTuples?: boolean | \"log\"\n  strictRequired?: boolean | \"log\"\n  allowMatchingProperties?: boolean // disables a strict mode restriction\n  allowUnionTypes?: boolean\n  validateFormats?: boolean\n  // validation and reporting options:\n  $data?: boolean\n  allErrors?: boolean\n  verbose?: boolean\n  discriminator?: boolean\n  unicodeRegExp?: boolean\n  timestamp?: \"string\" | \"date\" // JTD only\n  parseDate?: boolean // JTD only\n  allowDate?: boolean // JTD only\n  $comment?:\n    | true\n    | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n  formats?: {[Name in string]?: Format}\n  keywords?: Vocabulary\n  schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n  logger?: Logger | false\n  loadSchema?: (uri: string) => Promise\n  // options to modify validated data:\n  removeAdditional?: boolean | \"all\" | \"failing\"\n  useDefaults?: boolean | \"empty\"\n  coerceTypes?: boolean | \"array\"\n  // advanced options:\n  next?: boolean // NEW\n  unevaluated?: boolean // NEW\n  dynamicRef?: boolean // NEW\n  schemaId?: \"id\" | \"$id\"\n  jtd?: boolean // NEW\n  meta?: SchemaObject | boolean\n  defaultMeta?: string | AnySchemaObject\n  validateSchema?: boolean | \"log\"\n  addUsedSchema?: boolean\n  inlineRefs?: boolean | number\n  passContext?: boolean\n  loopRequired?: number\n  loopEnum?: number // NEW\n  ownProperties?: boolean\n  multipleOfPrecision?: number\n  int32range?: boolean // JTD only\n  messages?: boolean\n  code?: CodeOptions // NEW\n  uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n  es5?: boolean\n  esm?: boolean\n  lines?: boolean\n  optimize?: boolean | number\n  formats?: Code // code to require (or construct) map of available formats - for standalone code\n  source?: boolean\n  process?: (code: string, schema?: SchemaEnv) => string\n  regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n  regExp: RegExpEngine\n  optimize: number\n}\n\ninterface DeprecatedOptions {\n  /** @deprecated */\n  ignoreKeywordsWithRef?: boolean\n  /** @deprecated */\n  jsPropertySyntax?: boolean // added instead of jsonPointers\n  /** @deprecated */\n  unicode?: boolean\n}\n\ninterface RemovedOptions {\n  format?: boolean\n  errorDataPath?: \"object\" | \"property\"\n  nullable?: boolean // \"nullable\" keyword is supported by default\n  jsonPointers?: boolean\n  extendRefs?: true | \"ignore\" | \"fail\"\n  missingRefs?: true | \"ignore\" | \"fail\"\n  processCode?: (code: string, schema?: SchemaEnv) => string\n  sourceCode?: boolean\n  strictDefaults?: boolean\n  strictKeywords?: boolean\n  uniqueItems?: boolean\n  unknownFormats?: true | string[] | \"ignore\"\n  cache?: any\n  serialize?: (schema: AnySchema) => unknown\n  ajvErrors?: boolean\n}\n\ntype OptionsInfo = {\n  [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo = {\n  errorDataPath: \"\",\n  format: \"`validateFormats: false` can be used instead.\",\n  nullable: '\"nullable\" keyword is supported by default.',\n  jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n  extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n  missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n  processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n  sourceCode: \"Use option `code: {source: true}`\",\n  strictDefaults: \"It is default now, see option `strict`.\",\n  strictKeywords: \"It is default now, see option `strict`.\",\n  uniqueItems: '\"uniqueItems\" keyword is always validated.',\n  unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n  cache: \"Map is used as cache, schema object as key.\",\n  serialize: \"Map is used as cache, schema object as key.\",\n  ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo = {\n  ignoreKeywordsWithRef: \"\",\n  jsPropertySyntax: \"\",\n  unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n  [K in\n    | \"strictSchema\"\n    | \"strictNumbers\"\n    | \"strictTypes\"\n    | \"strictTuples\"\n    | \"strictRequired\"\n    | \"inlineRefs\"\n    | \"loopRequired\"\n    | \"loopEnum\"\n    | \"meta\"\n    | \"messages\"\n    | \"schemaId\"\n    | \"addUsedSchema\"\n    | \"validateSchema\"\n    | \"validateFormats\"\n    | \"int32range\"\n    | \"unicodeRegExp\"\n    | \"uriResolver\"]: NonNullable\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n  const s = o.strict\n  const _optz = o.code?.optimize\n  const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n  const regExp = o.code?.regExp ?? defaultRegExp\n  const uriResolver = o.uriResolver ?? DefaultUriResolver\n  return {\n    strictSchema: o.strictSchema ?? s ?? true,\n    strictNumbers: o.strictNumbers ?? s ?? true,\n    strictTypes: o.strictTypes ?? s ?? \"log\",\n    strictTuples: o.strictTuples ?? s ?? \"log\",\n    strictRequired: o.strictRequired ?? s ?? false,\n    code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n    loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n    loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n    meta: o.meta ?? true,\n    messages: o.messages ?? true,\n    inlineRefs: o.inlineRefs ?? true,\n    schemaId: o.schemaId ?? \"$id\",\n    addUsedSchema: o.addUsedSchema ?? true,\n    validateSchema: o.validateSchema ?? true,\n    validateFormats: o.validateFormats ?? true,\n    unicodeRegExp: o.unicodeRegExp ?? true,\n    int32range: o.int32range ?? true,\n    uriResolver: uriResolver,\n  }\n}\n\nexport interface Logger {\n  log(...args: unknown[]): unknown\n  warn(...args: unknown[]): unknown\n  error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n  opts: InstanceOptions\n  errors?: ErrorObject[] | null // errors from the last validation\n  logger: Logger\n  // shared external scope values for compiled functions\n  readonly scope: ValueScope\n  readonly schemas: {[Key in string]?: SchemaEnv} = {}\n  readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n  readonly formats: {[Name in string]?: AddedFormat} = {}\n  readonly RULES: ValidationRules\n  readonly _compilations: Set = new Set()\n  private readonly _loading: {[Ref in string]?: Promise} = {}\n  private readonly _cache: Map = new Map()\n  private readonly _metaOpts: InstanceOptions\n\n  static ValidationError = ValidationError\n  static MissingRefError = MissingRefError\n\n  constructor(opts: Options = {}) {\n    opts = this.opts = {...opts, ...requiredOptions(opts)}\n    const {es5, lines} = this.opts.code\n\n    this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n    this.logger = getLogger(opts.logger)\n    const formatOpt = opts.validateFormats\n    opts.validateFormats = false\n\n    this.RULES = getRules()\n    checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n    checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n    this._metaOpts = getMetaSchemaOptions.call(this)\n\n    if (opts.formats) addInitialFormats.call(this)\n    this._addVocabularies()\n    this._addDefaultMetaSchema()\n    if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n    if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n    addInitialSchemas.call(this)\n    opts.validateFormats = formatOpt\n  }\n\n  _addVocabularies(): void {\n    this.addKeyword(\"$async\")\n  }\n\n  _addDefaultMetaSchema(): void {\n    const {$data, meta, schemaId} = this.opts\n    let _dataRefSchema: SchemaObject = $dataRefSchema\n    if (schemaId === \"id\") {\n      _dataRefSchema = {...$dataRefSchema}\n      _dataRefSchema.id = _dataRefSchema.$id\n      delete _dataRefSchema.$id\n    }\n    if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    const {meta, schemaId} = this.opts\n    return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n  }\n\n  // Validate data using schema\n  // AnySchema will be compiled and cached using schema itself as a key for Map\n  validate(schema: Schema | string, data: unknown): boolean\n  validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise\n  validate(schema: Schema | JSONSchemaType | string, data: unknown): data is T\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  validate(schema: JTDSchemaType, data: unknown): data is T\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  validate(\n    schema: T,\n    data: unknown\n  ): data is JTDDataType\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  validate(schema: AsyncSchema, data: unknown | T): Promise\n  validate(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise\n  validate(\n    schemaKeyRef: AnySchema | string, // key, ref or schema object\n    // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n    data: unknown | T // to be validated\n  ): boolean | Promise {\n    let v: AnyValidateFunction | undefined\n    if (typeof schemaKeyRef == \"string\") {\n      v = this.getSchema(schemaKeyRef)\n      if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n    } else {\n      v = this.compile(schemaKeyRef)\n    }\n\n    const valid = v(data)\n    if (!(\"$async\" in v)) this.errors = v.errors\n    return valid\n  }\n\n  // Create validation function for passed schema\n  // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n  compile(schema: Schema | JSONSchemaType, _meta?: boolean): ValidateFunction\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compile(schema: JTDSchemaType, _meta?: boolean): ValidateFunction\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  compile(\n    schema: T,\n    _meta?: boolean\n  ): ValidateFunction>\n  compile(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction\n  compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction\n  compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction {\n    const sch = this._addSchema(schema, _meta)\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction\n  }\n\n  // Creates validating function for passed schema with asynchronous loading of missing schemas.\n  // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n  // TODO allow passing schema URI\n  // meta - optional true to compile meta-schema\n  compileAsync(\n    schema: SchemaObject | JSONSchemaType,\n    _meta?: boolean\n  ): Promise>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync(schema: JTDSchemaType, _meta?: boolean): Promise>\n  compileAsync(schema: AsyncSchema, meta?: boolean): Promise>\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise>\n  compileAsync(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise> {\n    if (typeof this.opts.loadSchema != \"function\") {\n      throw new Error(\"options.loadSchema should be a function\")\n    }\n    const {loadSchema} = this.opts\n    return runCompileAsync.call(this, schema, meta)\n\n    async function runCompileAsync(\n      this: Ajv,\n      _schema: AnySchemaObject,\n      _meta?: boolean\n    ): Promise {\n      await loadMetaSchema.call(this, _schema.$schema)\n      const sch = this._addSchema(_schema, _meta)\n      return sch.validate || _compileAsync.call(this, sch)\n    }\n\n    async function loadMetaSchema(this: Ajv, $ref?: string): Promise {\n      if ($ref && !this.getSchema($ref)) {\n        await runCompileAsync.call(this, {$ref}, true)\n      }\n    }\n\n    async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise {\n      try {\n        return this._compileSchemaEnv(sch)\n      } catch (e) {\n        if (!(e instanceof MissingRefError)) throw e\n        checkLoaded.call(this, e)\n        await loadMissingSchema.call(this, e.missingSchema)\n        return _compileAsync.call(this, sch)\n      }\n    }\n\n    function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n      if (this.refs[ref]) {\n        throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n      }\n    }\n\n    async function loadMissingSchema(this: Ajv, ref: string): Promise {\n      const _schema = await _loadSchema.call(this, ref)\n      if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n      if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n    }\n\n    async function _loadSchema(this: Ajv, ref: string): Promise {\n      const p = this._loading[ref]\n      if (p) return p\n      try {\n        return await (this._loading[ref] = loadSchema(ref))\n      } finally {\n        delete this._loading[ref]\n      }\n    }\n  }\n\n  // Adds schema to the instance\n  addSchema(\n    schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n    key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n    _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n    _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n  ): Ajv {\n    if (Array.isArray(schema)) {\n      for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n      return this\n    }\n    let id: string | undefined\n    if (typeof schema === \"object\") {\n      const {schemaId} = this.opts\n      id = schema[schemaId]\n      if (id !== undefined && typeof id != \"string\") {\n        throw new Error(`schema ${schemaId} must be string`)\n      }\n    }\n    key = normalizeId(key || id)\n    this._checkUnique(key)\n    this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n    return this\n  }\n\n  // Add schema that will be used to validate other schemas\n  // options in META_IGNORE_OPTIONS are alway set to false\n  addMetaSchema(\n    schema: AnySchemaObject,\n    key?: string, // schema key\n    _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n  ): Ajv {\n    this.addSchema(schema, key, true, _validateSchema)\n    return this\n  }\n\n  //  Validate schema against its meta-schema\n  validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise {\n    if (typeof schema == \"boolean\") return true\n    let $schema: string | AnySchemaObject | undefined\n    $schema = schema.$schema\n    if ($schema !== undefined && typeof $schema != \"string\") {\n      throw new Error(\"$schema must be a string\")\n    }\n    $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n    if (!$schema) {\n      this.logger.warn(\"meta-schema not available\")\n      this.errors = null\n      return true\n    }\n    const valid = this.validate($schema, schema)\n    if (!valid && throwOrLogError) {\n      const message = \"schema is invalid: \" + this.errorsText()\n      if (this.opts.validateSchema === \"log\") this.logger.error(message)\n      else throw new Error(message)\n    }\n    return valid\n  }\n\n  // Get compiled schema by `key` or `ref`.\n  // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n  getSchema(keyRef: string): AnyValidateFunction | undefined {\n    let sch\n    while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n    if (sch === undefined) {\n      const {schemaId} = this.opts\n      const root = new SchemaEnv({schema: {}, schemaId})\n      sch = resolveSchema.call(this, root, keyRef)\n      if (!sch) return\n      this.refs[keyRef] = sch\n    }\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction | undefined\n  }\n\n  // Remove cached schema(s).\n  // If no parameter is passed all schemas but meta-schemas are removed.\n  // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n  // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n  removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n    if (schemaKeyRef instanceof RegExp) {\n      this._removeAllSchemas(this.schemas, schemaKeyRef)\n      this._removeAllSchemas(this.refs, schemaKeyRef)\n      return this\n    }\n    switch (typeof schemaKeyRef) {\n      case \"undefined\":\n        this._removeAllSchemas(this.schemas)\n        this._removeAllSchemas(this.refs)\n        this._cache.clear()\n        return this\n      case \"string\": {\n        const sch = getSchEnv.call(this, schemaKeyRef)\n        if (typeof sch == \"object\") this._cache.delete(sch.schema)\n        delete this.schemas[schemaKeyRef]\n        delete this.refs[schemaKeyRef]\n        return this\n      }\n      case \"object\": {\n        const cacheKey = schemaKeyRef\n        this._cache.delete(cacheKey)\n        let id = schemaKeyRef[this.opts.schemaId]\n        if (id) {\n          id = normalizeId(id)\n          delete this.schemas[id]\n          delete this.refs[id]\n        }\n        return this\n      }\n      default:\n        throw new Error(\"ajv.removeSchema: invalid parameter\")\n    }\n  }\n\n  // add \"vocabulary\" - a collection of keywords\n  addVocabulary(definitions: Vocabulary): Ajv {\n    for (const def of definitions) this.addKeyword(def)\n    return this\n  }\n\n  addKeyword(\n    kwdOrDef: string | KeywordDefinition,\n    def?: KeywordDefinition // deprecated\n  ): Ajv {\n    let keyword: string | string[]\n    if (typeof kwdOrDef == \"string\") {\n      keyword = kwdOrDef\n      if (typeof def == \"object\") {\n        this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n        def.keyword = keyword\n      }\n    } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n      def = kwdOrDef\n      keyword = def.keyword\n      if (Array.isArray(keyword) && !keyword.length) {\n        throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n      }\n    } else {\n      throw new Error(\"invalid addKeywords parameters\")\n    }\n\n    checkKeyword.call(this, keyword, def)\n    if (!def) {\n      eachItem(keyword, (kwd) => addRule.call(this, kwd))\n      return this\n    }\n    keywordMetaschema.call(this, def)\n    const definition: AddedKeywordDefinition = {\n      ...def,\n      type: getJSONTypes(def.type),\n      schemaType: getJSONTypes(def.schemaType),\n    }\n    eachItem(\n      keyword,\n      definition.type.length === 0\n        ? (k) => addRule.call(this, k, definition)\n        : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n    )\n    return this\n  }\n\n  getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n    const rule = this.RULES.all[keyword]\n    return typeof rule == \"object\" ? rule.definition : !!rule\n  }\n\n  // Remove keyword\n  removeKeyword(keyword: string): Ajv {\n    // TODO return type should be Ajv\n    const {RULES} = this\n    delete RULES.keywords[keyword]\n    delete RULES.all[keyword]\n    for (const group of RULES.rules) {\n      const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n      if (i >= 0) group.rules.splice(i, 1)\n    }\n    return this\n  }\n\n  // Add format\n  addFormat(name: string, format: Format): Ajv {\n    if (typeof format == \"string\") format = new RegExp(format)\n    this.formats[name] = format\n    return this\n  }\n\n  errorsText(\n    errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n    {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n  ): string {\n    if (!errors || errors.length === 0) return \"No errors\"\n    return errors\n      .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n      .reduce((text, msg) => text + separator + msg)\n  }\n\n  $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n    const rules = this.RULES.all\n    metaSchema = JSON.parse(JSON.stringify(metaSchema))\n    for (const jsonPointer of keywordsJsonPointers) {\n      const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n      let keywords = metaSchema\n      for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n      for (const key in rules) {\n        const rule = rules[key]\n        if (typeof rule != \"object\") continue\n        const {$data} = rule.definition\n        const schema = keywords[key] as AnySchemaObject | undefined\n        if ($data && schema) keywords[key] = schemaOrData(schema)\n      }\n    }\n\n    return metaSchema\n  }\n\n  private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n    for (const keyRef in schemas) {\n      const sch = schemas[keyRef]\n      if (!regex || regex.test(keyRef)) {\n        if (typeof sch == \"string\") {\n          delete schemas[keyRef]\n        } else if (sch && !sch.meta) {\n          this._cache.delete(sch.schema)\n          delete schemas[keyRef]\n        }\n      }\n    }\n  }\n\n  _addSchema(\n    schema: AnySchema,\n    meta?: boolean,\n    baseId?: string,\n    validateSchema = this.opts.validateSchema,\n    addSchema = this.opts.addUsedSchema\n  ): SchemaEnv {\n    let id: string | undefined\n    const {schemaId} = this.opts\n    if (typeof schema == \"object\") {\n      id = schema[schemaId]\n    } else {\n      if (this.opts.jtd) throw new Error(\"schema must be object\")\n      else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n    }\n    let sch = this._cache.get(schema)\n    if (sch !== undefined) return sch\n\n    baseId = normalizeId(id || baseId)\n    const localRefs = getSchemaRefs.call(this, schema, baseId)\n    sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n    this._cache.set(sch.schema, sch)\n    if (addSchema && !baseId.startsWith(\"#\")) {\n      // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n      if (baseId) this._checkUnique(baseId)\n      this.refs[baseId] = sch\n    }\n    if (validateSchema) this.validateSchema(schema, true)\n    return sch\n  }\n\n  private _checkUnique(id: string): void {\n    if (this.schemas[id] || this.refs[id]) {\n      throw new Error(`schema with key or id \"${id}\" already exists`)\n    }\n  }\n\n  private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n    if (sch.meta) this._compileMetaSchema(sch)\n    else compileSchema.call(this, sch)\n\n    /* istanbul ignore if */\n    if (!sch.validate) throw new Error(\"ajv implementation error\")\n    return sch.validate\n  }\n\n  private _compileMetaSchema(sch: SchemaEnv): void {\n    const currentOpts = this.opts\n    this.opts = this._metaOpts\n    try {\n      compileSchema.call(this, sch)\n    } finally {\n      this.opts = currentOpts\n    }\n  }\n}\n\nexport interface ErrorsTextOptions {\n  separator?: string\n  dataVar?: string\n}\n\nfunction checkOptions(\n  this: Ajv,\n  checkOpts: OptionsInfo,\n  options: Options & RemovedOptions,\n  msg: string,\n  log: \"warn\" | \"error\" = \"error\"\n): void {\n  for (const key in checkOpts) {\n    const opt = key as keyof typeof checkOpts\n    if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n  }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n  keyRef = normalizeId(keyRef) // TODO tests fail without this line\n  return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n  const optsSchemas = this.opts.schemas\n  if (!optsSchemas) return\n  if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n  else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n  for (const name in this.opts.formats) {\n    const format = this.opts.formats[name]\n    if (format) this.addFormat(name, format)\n  }\n}\n\nfunction addInitialKeywords(\n  this: Ajv,\n  defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n  if (Array.isArray(defs)) {\n    this.addVocabulary(defs)\n    return\n  }\n  this.logger.warn(\"keywords option as map is deprecated, pass array\")\n  for (const keyword in defs) {\n    const def = defs[keyword] as KeywordDefinition\n    if (!def.keyword) def.keyword = keyword\n    this.addKeyword(def)\n  }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n  const metaOpts = {...this.opts}\n  for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n  return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial | false): Logger {\n  if (logger === false) return noLogs\n  if (logger === undefined) return console\n  if (logger.log && logger.warn && logger.error) return logger as Logger\n  throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n  const {RULES} = this\n  eachItem(keyword, (kwd) => {\n    if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n    if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n  })\n  if (!def) return\n  if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n    throw new Error('$data keyword must have \"code\" or \"validate\" function')\n  }\n}\n\nfunction addRule(\n  this: Ajv,\n  keyword: string,\n  definition?: AddedKeywordDefinition,\n  dataType?: JSONType\n): void {\n  const post = definition?.post\n  if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n  const {RULES} = this\n  let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n  if (!ruleGroup) {\n    ruleGroup = {type: dataType, rules: []}\n    RULES.rules.push(ruleGroup)\n  }\n  RULES.keywords[keyword] = true\n  if (!definition) return\n\n  const rule: Rule = {\n    keyword,\n    definition: {\n      ...definition,\n      type: getJSONTypes(definition.type),\n      schemaType: getJSONTypes(definition.schemaType),\n    },\n  }\n  if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n  else ruleGroup.rules.push(rule)\n  RULES.all[keyword] = rule\n  definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n  const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n  if (i >= 0) {\n    ruleGroup.rules.splice(i, 0, rule)\n  } else {\n    ruleGroup.rules.push(rule)\n    this.logger.warn(`rule ${before} is not defined`)\n  }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n  let {metaSchema} = def\n  if (metaSchema === undefined) return\n  if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n  def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n  $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n  return {anyOf: [schema, $dataRef]}\n}\n", "import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"id\",\n  code() {\n    throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$ref\",\n  schemaType: \"string\",\n  code(cxt: KeywordCxt): void {\n    const {gen, schema: $ref, it} = cxt\n    const {baseId, schemaEnv: env, validateName, opts, self} = it\n    const {root} = env\n    if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n    const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n    if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n    if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n    return inlineRefSchema(schOrEnv)\n\n    function callRootRef(): void {\n      if (env === root) return callRef(cxt, validateName, env, env.$async)\n      const rootName = gen.scopeValue(\"root\", {ref: root})\n      return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n    }\n\n    function callValidate(sch: SchemaEnv): void {\n      const v = getValidate(cxt, sch)\n      callRef(cxt, v, sch, sch.$async)\n    }\n\n    function inlineRefSchema(sch: AnySchema): void {\n      const schName = gen.scopeValue(\n        \"schema\",\n        opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n      )\n      const valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema(\n        {\n          schema: sch,\n          dataTypes: [],\n          schemaPath: nil,\n          topSchemaRef: schName,\n          errSchemaPath: $ref,\n        },\n        valid\n      )\n      cxt.mergeEvaluated(schCxt)\n      cxt.ok(valid)\n    }\n  },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n  const {gen} = cxt\n  return sch.validate\n    ? gen.scopeValue(\"validate\", {ref: sch.validate})\n    : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n  const {gen, it} = cxt\n  const {allErrors, schemaEnv: env, opts} = it\n  const passCxt = opts.passContext ? N.this : nil\n  if ($async) callAsyncRef()\n  else callSyncRef()\n\n  function callAsyncRef(): void {\n    if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n    const valid = gen.let(\"valid\")\n    gen.try(\n      () => {\n        gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n        addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n        if (!allErrors) gen.assign(valid, true)\n      },\n      (e) => {\n        gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n        addErrorsFrom(e)\n        if (!allErrors) gen.assign(valid, false)\n      }\n    )\n    cxt.ok(valid)\n  }\n\n  function callSyncRef(): void {\n    cxt.result(\n      callValidateCode(cxt, v, passCxt),\n      () => addEvaluatedFrom(v),\n      () => addErrorsFrom(v)\n    )\n  }\n\n  function addErrorsFrom(source: Code): void {\n    const errs = _`${source}.errors`\n    gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n    gen.assign(N.errors, _`${N.vErrors}.length`)\n  }\n\n  function addEvaluatedFrom(source: Code): void {\n    if (!it.opts.unevaluated) return\n    const schEvaluated = sch?.validate?.evaluated\n    // TODO refactor\n    if (it.props !== true) {\n      if (schEvaluated && !schEvaluated.dynamicProps) {\n        if (schEvaluated.props !== undefined) {\n          it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n        }\n      } else {\n        const props = gen.var(\"props\", _`${source}.evaluated.props`)\n        it.props = mergeEvaluated.props(gen, props, it.props, Name)\n      }\n    }\n    if (it.items !== true) {\n      if (schEvaluated && !schEvaluated.dynamicItems) {\n        if (schEvaluated.items !== undefined) {\n          it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n        }\n      } else {\n        const items = gen.var(\"items\", _`${source}.evaluated.items`)\n        it.items = mergeEvaluated.items(gen, items, it.items, Name)\n      }\n    }\n  }\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n  \"$schema\",\n  \"$id\",\n  \"$defs\",\n  \"$vocabulary\",\n  {keyword: \"$comment\"},\n  \"definitions\",\n  idKeyword,\n  refKeyword,\n]\n\nexport default core\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n  Kwd,\n  {limit: number; comparison: Comparison},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n  \"multipleOf\",\n  {multipleOf: number},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n  params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"multipleOf\",\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schemaCode, it} = cxt\n    // const bdt = bad$DataType(schemaCode, def.schemaType, $data)\n    const prec = it.opts.multipleOfPrecision\n    const res = gen.let(\"res\")\n    const invalid = prec\n      ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n      : _`${res} !== parseInt(${res})`\n    cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n  },\n}\n\nexport default def\n", "// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n  const len = str.length\n  let length = 0\n  let pos = 0\n  let value: number\n  while (pos < len) {\n    length++\n    value = str.charCodeAt(pos++)\n    if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos)\n      if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n    }\n  }\n  return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} characters`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxLength\", \"minLength\"],\n  type: \"string\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode, it} = cxt\n    const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n    const len =\n      it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n    cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"pattern\",\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {data, $data, schema, schemaCode, it} = cxt\n    // TODO regexp should be wrapped in try/catchs\n    const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n    const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n    cxt.fail$data(_`!${regExp}.test(${data})`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} properties`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxProperties\", \"minProperties\"],\n  type: \"object\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n    cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n  checkReportMissingProp,\n  checkMissingProp,\n  reportMissingProp,\n  propertyInData,\n  noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n  \"required\",\n  {missingProperty: string},\n  string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n  params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"required\",\n  type: \"object\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, schemaCode, data, $data, it} = cxt\n    const {opts} = it\n    if (!$data && schema.length === 0) return\n    const useLoop = schema.length >= opts.loopRequired\n    if (it.allErrors) allErrorsMode()\n    else exitOnErrorMode()\n\n    if (opts.strictRequired) {\n      const props = cxt.parentSchema.properties\n      const {definedProperties} = cxt.it\n      for (const requiredKey of schema) {\n        if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n          const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n          const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n          checkStrictMode(it, msg, it.opts.strictRequired)\n        }\n      }\n    }\n\n    function allErrorsMode(): void {\n      if (useLoop || $data) {\n        cxt.block$data(nil, loopAllRequired)\n      } else {\n        for (const prop of schema) {\n          checkReportMissingProp(cxt, prop)\n        }\n      }\n    }\n\n    function exitOnErrorMode(): void {\n      const missing = gen.let(\"missing\")\n      if (useLoop || $data) {\n        const valid = gen.let(\"valid\", true)\n        cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n        cxt.ok(valid)\n      } else {\n        gen.if(checkMissingProp(cxt, schema, missing))\n        reportMissingProp(cxt, missing)\n        gen.else()\n      }\n    }\n\n    function loopAllRequired(): void {\n      gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n        cxt.setParams({missingProperty: prop})\n        gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n      })\n    }\n\n    function loopUntilMissing(missing: Name, valid: Name): void {\n      cxt.setParams({missingProperty: missing})\n      gen.forOf(\n        missing,\n        schemaCode as Code,\n        () => {\n          gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n          gen.if(not(valid), () => {\n            cxt.error()\n            gen.break()\n          })\n        },\n        nil\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} items`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxItems\", \"minItems\"],\n  type: \"array\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n    cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n  \"uniqueItems\",\n  {i: number; j: number},\n  boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {i, j}}) =>\n    str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n  params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"uniqueItems\",\n  type: \"array\",\n  schemaType: \"boolean\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n    if (!$data && !schema) return\n    const valid = gen.let(\"valid\")\n    const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n    cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n    cxt.ok(valid)\n\n    function validateUniqueItems(): void {\n      const i = gen.let(\"i\", _`${data}.length`)\n      const j = gen.let(\"j\")\n      cxt.setParams({i, j})\n      gen.assign(valid, true)\n      gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n    }\n\n    function canOptimize(): boolean {\n      return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n    }\n\n    function loopN(i: Name, j: Name): void {\n      const item = gen.name(\"item\")\n      const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n      const indices = gen.const(\"indices\", _`{}`)\n      gen.for(_`;${i}--;`, () => {\n        gen.let(item, _`${data}[${i}]`)\n        gen.if(wrongType, _`continue`)\n        if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n        gen\n          .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n            gen.assign(j, _`${indices}[${item}]`)\n            cxt.error()\n            gen.assign(valid, false).break()\n          })\n          .code(_`${indices}[${item}] = ${i}`)\n      })\n    }\n\n    function loopN2(i: Name, j: Name): void {\n      const eql = useFunc(gen, equal)\n      const outer = gen.name(\"outer\")\n      gen.label(outer).for(_`;${i}--;`, () =>\n        gen.for(_`${j} = ${i}; ${j}--;`, () =>\n          gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n            cxt.error()\n            gen.assign(valid, false).break(outer)\n          })\n        )\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to constant\",\n  params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"const\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schemaCode, schema} = cxt\n    if ($data || (schema && typeof schema == \"object\")) {\n      cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n    } else {\n      cxt.fail(_`${schema} !== ${data}`)\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to one of the allowed values\",\n  params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"enum\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n    const useLoop = schema.length >= it.opts.loopEnum\n    let eql: Name | undefined\n    const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n    let valid: Code\n    if (useLoop || $data) {\n      valid = gen.let(\"valid\")\n      cxt.block$data(valid, loopEnum)\n    } else {\n      /* istanbul ignore if */\n      if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n      const vSchema = gen.const(\"vSchema\", schemaCode)\n      valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n    }\n    cxt.pass(valid)\n\n    function loopEnum(): void {\n      gen.assign(valid, false)\n      gen.forOf(\"v\", schemaCode as Code, (v) =>\n        gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n      )\n    }\n\n    function equalCode(vSchema: Name, i: number): Code {\n      const sch = schema[i]\n      return typeof sch === \"object\" && sch !== null\n        ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n        : _`${data} === ${sch}`\n    }\n  },\n}\n\nexport default def\n", "import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n  // number\n  limitNumber,\n  multipleOf,\n  // string\n  limitLength,\n  pattern,\n  // object\n  limitProperties,\n  required,\n  // array\n  limitItems,\n  uniqueItems,\n  // any\n  {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n  {keyword: \"nullable\", schemaType: \"boolean\"},\n  constKeyword,\n  enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n  \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n  {limit: number},\n  number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n  | LimitError\n  | LimitNumberError\n  | MultipleOfError\n  | PatternError\n  | RequiredError\n  | UniqueItemsError\n  | ConstError\n  | EnumError\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"additionalItems\" as const,\n  type: \"array\",\n  schemaType: [\"boolean\", \"object\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {parentSchema, it} = cxt\n    const {items} = parentSchema\n    if (!Array.isArray(items)) {\n      checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n      return\n    }\n    validateAdditionalItems(cxt, items)\n  },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n  const {gen, schema, data, keyword, it} = cxt\n  it.items = true\n  const len = gen.const(\"len\", _`${data}.length`)\n  if (schema === false) {\n    cxt.setParams({len: items.length})\n    cxt.pass(_`${len} <= ${items.length}`)\n  } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n    const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n    gen.if(not(valid), () => validateItems(valid))\n    cxt.ok(valid)\n  }\n\n  function validateItems(valid: Name): void {\n    gen.forRange(\"i\", items.length, len, (i) => {\n      cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n      if (!it.allErrors) gen.if(not(valid), () => gen.break())\n    })\n  }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"array\", \"boolean\"],\n  before: \"uniqueItems\",\n  code(cxt: KeywordCxt) {\n    const {schema, it} = cxt\n    if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    cxt.ok(validateArray(cxt))\n  },\n}\n\nexport function validateTuple(\n  cxt: KeywordCxt,\n  extraItems: string,\n  schArr: AnySchema[] = cxt.schema\n): void {\n  const {gen, parentSchema, data, keyword, it} = cxt\n  checkStrictTuple(parentSchema)\n  if (it.opts.unevaluated && schArr.length && it.items !== true) {\n    it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n  }\n  const valid = gen.name(\"valid\")\n  const len = gen.const(\"len\", _`${data}.length`)\n  schArr.forEach((sch: AnySchema, i: number) => {\n    if (alwaysValidSchema(it, sch)) return\n    gen.if(_`${len} > ${i}`, () =>\n      cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          dataProp: i,\n        },\n        valid\n      )\n    )\n    cxt.ok(valid)\n  })\n\n  function checkStrictTuple(sch: AnySchemaObject): void {\n    const {opts, errSchemaPath} = it\n    const l = schArr.length\n    const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n    if (opts.strictTuples && !fullTuple) {\n      const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n      checkStrictMode(it, msg, opts.strictTuples)\n    }\n  }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"prefixItems\",\n  type: \"array\",\n  schemaType: [\"array\"],\n  before: \"uniqueItems\",\n  code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {schema, parentSchema, it} = cxt\n    const {prefixItems} = parentSchema\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n    else cxt.ok(validateArray(cxt))\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n  \"contains\",\n  {minContains: number; maxContains?: number},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {min, max}}) =>\n    max === undefined\n      ? str`must contain at least ${min} valid item(s)`\n      : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n  params: ({params: {min, max}}) =>\n    max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"contains\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    let min: number\n    let max: number | undefined\n    const {minContains, maxContains} = parentSchema\n    if (it.opts.next) {\n      min = minContains === undefined ? 1 : minContains\n      max = maxContains\n    } else {\n      min = 1\n    }\n    const len = gen.const(\"len\", _`${data}.length`)\n    cxt.setParams({min, max})\n    if (max === undefined && min === 0) {\n      checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n      return\n    }\n    if (max !== undefined && min > max) {\n      checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n      cxt.fail()\n      return\n    }\n    if (alwaysValidSchema(it, schema)) {\n      let cond = _`${len} >= ${min}`\n      if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n      cxt.pass(cond)\n      return\n    }\n\n    it.items = true\n    const valid = gen.name(\"valid\")\n    if (max === undefined && min === 1) {\n      validateItems(valid, () => gen.if(valid, () => gen.break()))\n    } else if (min === 0) {\n      gen.let(valid, true)\n      if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n    } else {\n      gen.let(valid, false)\n      validateItemsWithCount()\n    }\n    cxt.result(valid, () => cxt.reset())\n\n    function validateItemsWithCount(): void {\n      const schValid = gen.name(\"_valid\")\n      const count = gen.let(\"count\", 0)\n      validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n    }\n\n    function validateItems(_valid: Name, block: () => void): void {\n      gen.forRange(\"i\", 0, len, (i) => {\n        cxt.subschema(\n          {\n            keyword: \"contains\",\n            dataProp: i,\n            dataPropType: Type.Num,\n            compositeRule: true,\n          },\n          _valid\n        )\n        block()\n      })\n    }\n\n    function checkLimits(count: Name): void {\n      gen.code(_`${count}++`)\n      if (max === undefined) {\n        gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n      } else {\n        gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n        if (min === 1) gen.assign(valid, true)\n        else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n      }\n    }\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  SchemaMap,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n  property: string\n  missingProperty: string\n  depsCount: number\n  deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n  \"dependencies\",\n  DependenciesErrorParams,\n  {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n  message: ({params: {property, depsCount, deps}}) => {\n    const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n    return str`must have ${property_ies} ${deps} when property ${property} is present`\n  },\n  params: ({params: {property, depsCount, deps, missingProperty}}) =>\n    _`{property: ${property},\n    missingProperty: ${missingProperty},\n    depsCount: ${depsCount},\n    deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependencies\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const [propDeps, schDeps] = splitDependencies(cxt)\n    validatePropertyDeps(cxt, propDeps)\n    validateSchemaDeps(cxt, schDeps)\n  },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n  const propertyDeps: PropertyDependencies = {}\n  const schemaDeps: SchemaDependencies = {}\n  for (const key in schema) {\n    if (key === \"__proto__\") continue\n    const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n    deps[key] = schema[key]\n  }\n  return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n  cxt: KeywordCxt,\n  propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n  const {gen, data, it} = cxt\n  if (Object.keys(propertyDeps).length === 0) return\n  const missing = gen.let(\"missing\")\n  for (const prop in propertyDeps) {\n    const deps = propertyDeps[prop] as string[]\n    if (deps.length === 0) continue\n    const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n    cxt.setParams({\n      property: prop,\n      depsCount: deps.length,\n      deps: deps.join(\", \"),\n    })\n    if (it.allErrors) {\n      gen.if(hasProperty, () => {\n        for (const depProp of deps) {\n          checkReportMissingProp(cxt, depProp)\n        }\n      })\n    } else {\n      gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n      reportMissingProp(cxt, missing)\n      gen.else()\n    }\n  }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  for (const prop in schemaDeps) {\n    if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n    gen.if(\n      propertyInData(gen, data, prop, it.opts.ownProperties),\n      () => {\n        const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n      },\n      () => gen.var(valid, true) // TODO var\n    )\n    cxt.ok(valid)\n  }\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: \"property name must be valid\",\n  params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"propertyNames\",\n  type: \"object\",\n  schemaType: [\"object\", \"boolean\"],\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, it} = cxt\n    if (alwaysValidSchema(it, schema)) return\n    const valid = gen.name(\"valid\")\n\n    gen.forIn(\"key\", data, (key) => {\n      cxt.setParams({propertyName: key})\n      cxt.subschema(\n        {\n          keyword: \"propertyNames\",\n          data: key,\n          dataTypes: [\"string\"],\n          propertyName: key,\n          compositeRule: true,\n        },\n        valid\n      )\n      gen.if(not(valid), () => {\n        cxt.error(true)\n        if (!it.allErrors) gen.break()\n      })\n    })\n\n    cxt.ok(valid)\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  AddedKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n  \"additionalProperties\",\n  {additionalProperty: string},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must NOT have additional properties\",\n  params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n  keyword: \"additionalProperties\",\n  type: [\"object\"],\n  schemaType: [\"boolean\", \"object\"],\n  allowUndefined: true,\n  trackErrors: true,\n  error,\n  code(cxt) {\n    const {gen, schema, parentSchema, data, errsCount, it} = cxt\n    /* istanbul ignore if */\n    if (!errsCount) throw new Error(\"ajv implementation error\")\n    const {allErrors, opts} = it\n    it.props = true\n    if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n    const props = allSchemaProperties(parentSchema.properties)\n    const patProps = allSchemaProperties(parentSchema.patternProperties)\n    checkAdditionalProperties()\n    cxt.ok(_`${errsCount} === ${N.errors}`)\n\n    function checkAdditionalProperties(): void {\n      gen.forIn(\"key\", data, (key: Name) => {\n        if (!props.length && !patProps.length) additionalPropertyCode(key)\n        else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n      })\n    }\n\n    function isAdditional(key: Name): Code {\n      let definedProp: Code\n      if (props.length > 8) {\n        // TODO maybe an option instead of hard-coded 8?\n        const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n        definedProp = isOwnProperty(gen, propsSchema as Code, key)\n      } else if (props.length) {\n        definedProp = or(...props.map((p) => _`${key} === ${p}`))\n      } else {\n        definedProp = nil\n      }\n      if (patProps.length) {\n        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n      }\n      return not(definedProp)\n    }\n\n    function deleteAdditional(key: Name): void {\n      gen.code(_`delete ${data}[${key}]`)\n    }\n\n    function additionalPropertyCode(key: Name): void {\n      if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n        deleteAdditional(key)\n        return\n      }\n\n      if (schema === false) {\n        cxt.setParams({additionalProperty: key})\n        cxt.error()\n        if (!allErrors) gen.break()\n        return\n      }\n\n      if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n        const valid = gen.name(\"valid\")\n        if (opts.removeAdditional === \"failing\") {\n          applyAdditionalSchema(key, valid, false)\n          gen.if(not(valid), () => {\n            cxt.reset()\n            deleteAdditional(key)\n          })\n        } else {\n          applyAdditionalSchema(key, valid)\n          if (!allErrors) gen.if(not(valid), () => gen.break())\n        }\n      }\n    }\n\n    function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n      const subschema: SubschemaArgs = {\n        keyword: \"additionalProperties\",\n        dataProp: key,\n        dataPropType: Type.Str,\n      }\n      if (errors === false) {\n        Object.assign(subschema, {\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        })\n      }\n      cxt.subschema(subschema, valid)\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"properties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n      apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n    }\n    const allProps = allSchemaProperties(schema)\n    for (const prop of allProps) {\n      it.definedProperties.add(prop)\n    }\n    if (it.opts.unevaluated && allProps.length && it.props !== true) {\n      it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n    }\n    const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n    if (properties.length === 0) return\n    const valid = gen.name(\"valid\")\n\n    for (const prop of properties) {\n      if (hasDefault(prop)) {\n        applyPropertySchema(prop)\n      } else {\n        gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n        applyPropertySchema(prop)\n        if (!it.allErrors) gen.else().var(valid, true)\n        gen.endIf()\n      }\n      cxt.it.definedProperties.add(prop)\n      cxt.ok(valid)\n    }\n\n    function hasDefault(prop: string): boolean | undefined {\n      return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n    }\n\n    function applyPropertySchema(prop: string): void {\n      cxt.subschema(\n        {\n          keyword: \"properties\",\n          schemaProp: prop,\n          dataProp: prop,\n        },\n        valid\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"patternProperties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, parentSchema, it} = cxt\n    const {opts} = it\n    const patterns = allSchemaProperties(schema)\n    const alwaysValidPatterns = patterns.filter((p) =>\n      alwaysValidSchema(it, schema[p] as AnySchema)\n    )\n\n    if (\n      patterns.length === 0 ||\n      (alwaysValidPatterns.length === patterns.length &&\n        (!it.opts.unevaluated || it.props === true))\n    ) {\n      return\n    }\n\n    const checkProperties =\n      opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n    const valid = gen.name(\"valid\")\n    if (it.props !== true && !(it.props instanceof Name)) {\n      it.props = evaluatedPropsToName(gen, it.props)\n    }\n    const {props} = it\n    validatePatternProperties()\n\n    function validatePatternProperties(): void {\n      for (const pat of patterns) {\n        if (checkProperties) checkMatchingProperties(pat)\n        if (it.allErrors) {\n          validateProperties(pat)\n        } else {\n          gen.var(valid, true) // TODO var\n          validateProperties(pat)\n          gen.if(valid)\n        }\n      }\n    }\n\n    function checkMatchingProperties(pat: string): void {\n      for (const prop in checkProperties) {\n        if (new RegExp(pat).test(prop)) {\n          checkStrictMode(\n            it,\n            `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n          )\n        }\n      }\n    }\n\n    function validateProperties(pat: string): void {\n      gen.forIn(\"key\", data, (key) => {\n        gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n          const alwaysValid = alwaysValidPatterns.includes(pat)\n          if (!alwaysValid) {\n            cxt.subschema(\n              {\n                keyword: \"patternProperties\",\n                schemaProp: pat,\n                dataProp: key,\n                dataPropType: Type.Str,\n              },\n              valid\n            )\n          }\n\n          if (it.opts.unevaluated && props !== true) {\n            gen.assign(_`${props}[${key}]`, true)\n          } else if (!alwaysValid && !it.allErrors) {\n            // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n            // or if all properties were evaluated (props === true)\n            gen.if(not(valid), () => gen.break())\n          }\n        })\n      })\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"not\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    if (alwaysValidSchema(it, schema)) {\n      cxt.fail()\n      return\n    }\n\n    const valid = gen.name(\"valid\")\n    cxt.subschema(\n      {\n        keyword: \"not\",\n        compositeRule: true,\n        createErrors: false,\n        allErrors: false,\n      },\n      valid\n    )\n\n    cxt.failResult(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error()\n    )\n  },\n  error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"anyOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  code: validateUnion,\n  error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n  \"oneOf\",\n  {passingSchemas: [number, number] | null},\n  AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must match exactly one schema in oneOf\",\n  params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"oneOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    if (it.opts.discriminator && parentSchema.discriminator) return\n    const schArr: AnySchema[] = schema\n    const valid = gen.let(\"valid\", false)\n    const passing = gen.let(\"passing\", null)\n    const schValid = gen.name(\"_valid\")\n    cxt.setParams({passing})\n    // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n    gen.block(validateOneOf)\n\n    cxt.result(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error(true)\n    )\n\n    function validateOneOf(): void {\n      schArr.forEach((sch: AnySchema, i: number) => {\n        let schCxt: SchemaCxt | undefined\n        if (alwaysValidSchema(it, sch)) {\n          gen.var(schValid, true)\n        } else {\n          schCxt = cxt.subschema(\n            {\n              keyword: \"oneOf\",\n              schemaProp: i,\n              compositeRule: true,\n            },\n            schValid\n          )\n        }\n\n        if (i > 0) {\n          gen\n            .if(_`${schValid} && ${valid}`)\n            .assign(valid, false)\n            .assign(passing, _`[${passing}, ${i}]`)\n            .else()\n        }\n\n        gen.if(schValid, () => {\n          gen.assign(valid, true)\n          gen.assign(passing, i)\n          if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n        })\n      })\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"allOf\",\n  schemaType: \"array\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    const valid = gen.name(\"valid\")\n    schema.forEach((sch: AnySchema, i: number) => {\n      if (alwaysValidSchema(it, sch)) return\n      const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n      cxt.ok(valid)\n      cxt.mergeEvaluated(schCxt)\n    })\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n  params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"if\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, parentSchema, it} = cxt\n    if (parentSchema.then === undefined && parentSchema.else === undefined) {\n      checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n    }\n    const hasThen = hasSchema(it, \"then\")\n    const hasElse = hasSchema(it, \"else\")\n    if (!hasThen && !hasElse) return\n\n    const valid = gen.let(\"valid\", true)\n    const schValid = gen.name(\"_valid\")\n    validateIf()\n    cxt.reset()\n\n    if (hasThen && hasElse) {\n      const ifClause = gen.let(\"ifClause\")\n      cxt.setParams({ifClause})\n      gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n    } else if (hasThen) {\n      gen.if(schValid, validateClause(\"then\"))\n    } else {\n      gen.if(not(schValid), validateClause(\"else\"))\n    }\n\n    cxt.pass(valid, () => cxt.error(true))\n\n    function validateIf(): void {\n      const schCxt = cxt.subschema(\n        {\n          keyword: \"if\",\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        },\n        schValid\n      )\n      cxt.mergeEvaluated(schCxt)\n    }\n\n    function validateClause(keyword: string, ifClause?: Name): () => void {\n      return () => {\n        const schCxt = cxt.subschema({keyword}, schValid)\n        gen.assign(valid, schValid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n        if (ifClause) gen.assign(ifClause, _`${keyword}`)\n        else cxt.setParams({ifClause: keyword})\n      }\n    }\n  },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n  const schema = it.schema[keyword]\n  return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"then\", \"else\"],\n  schemaType: [\"object\", \"boolean\"],\n  code({keyword, parentSchema, it}: KeywordCxt) {\n    if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n  },\n}\n\nexport default def\n", "import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n  const applicator = [\n    // any\n    notKeyword,\n    anyOf,\n    oneOf,\n    allOf,\n    ifKeyword,\n    thenElse,\n    // object\n    propertyNames,\n    additionalProperties,\n    dependencies,\n    properties,\n    patternProperties,\n  ]\n  // array\n  if (draft2020) applicator.push(prefixItems, items2020)\n  else applicator.push(additionalItems, items)\n  applicator.push(contains)\n  return applicator\n}\n\nexport type ApplicatorKeywordError =\n  | ErrorNoParams<\"false schema\">\n  | AdditionalItemsError\n  | ItemsError\n  | ContainsError\n  | AdditionalPropertiesError\n  | DependenciesError\n  | IfKeywordError\n  | AnyOfError\n  | OneOfError\n  | NotKeywordError\n  | PropertyNamesError\n", "import type {\n  AddedFormat,\n  FormatValidator,\n  AsyncFormatValidator,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n  | FormatValidator\n  | FormatValidator\n  | AsyncFormatValidator\n  | AsyncFormatValidator\n  | RegExp\n  | string\n  | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"format\",\n  type: [\"number\", \"string\"],\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt, ruleType?: string) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const {opts, errSchemaPath, schemaEnv, self} = it\n    if (!opts.validateFormats) return\n\n    if ($data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n      const fType = gen.let(\"fType\")\n      const format = gen.let(\"format\")\n      // TODO simplify\n      gen.if(\n        _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n        () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n        () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n      )\n      cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n      function unknownFmt(): Code {\n        if (opts.strictSchema === false) return nil\n        return _`${schemaCode} && !${format}`\n      }\n\n      function invalidFmt(): Code {\n        const callFormat = schemaEnv.$async\n          ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n          : _`${format}(${data})`\n        const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n        return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n      }\n    }\n\n    function validateFormat(): void {\n      const formatDef: AddedFormat | undefined = self.formats[schema]\n      if (!formatDef) {\n        unknownFormat()\n        return\n      }\n      if (formatDef === true) return\n      const [fmtType, format, fmtRef] = getFormat(formatDef)\n      if (fmtType === ruleType) cxt.pass(validCondition())\n\n      function unknownFormat(): void {\n        if (opts.strictSchema === false) {\n          self.logger.warn(unknownMsg())\n          return\n        }\n        throw new Error(unknownMsg())\n\n        function unknownMsg(): string {\n          return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n        }\n      }\n\n      function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n        const code =\n          fmtDef instanceof RegExp\n            ? regexpCode(fmtDef)\n            : opts.code.formats\n            ? _`${opts.code.formats}${getProperty(schema)}`\n            : undefined\n        const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n        if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n          return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n        }\n\n        return [\"string\", fmtDef, fmt]\n      }\n\n      function validCondition(): Code {\n        if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n          if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n          return _`await ${fmtRef}(${data})`\n        }\n        return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n      }\n    }\n  },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n", "import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n  \"title\",\n  \"description\",\n  \"default\",\n  \"deprecated\",\n  \"readOnly\",\n  \"writeOnly\",\n  \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n  \"contentMediaType\",\n  \"contentEncoding\",\n  \"contentSchema\",\n]\n", "import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n  coreVocabulary,\n  validationVocabulary,\n  getApplicatorVocabulary(),\n  formatVocabulary,\n  metadataVocabulary,\n  contentVocabulary,\n]\n\nexport default draft7Vocabularies\n", "import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n  Tag = \"tag\",\n  Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj = ErrorObject<\n  \"discriminator\",\n  {error: E; tag: string; tagValue: unknown},\n  string\n>\n", "import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj | DiscrErrorObj\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {discrError, tagName}}) =>\n    discrError === DiscrError.Tag\n      ? `tag \"${tagName}\" must be string`\n      : `value of tag \"${tagName}\" must be in oneOf`,\n  params: ({params: {discrError, tag, tagName}}) =>\n    _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"discriminator\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schema, parentSchema, it} = cxt\n    const {oneOf} = parentSchema\n    if (!it.opts.discriminator) {\n      throw new Error(\"discriminator: requires discriminator option\")\n    }\n    const tagName = schema.propertyName\n    if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n    if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n    if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n    const valid = gen.let(\"valid\", false)\n    const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n    gen.if(\n      _`typeof ${tag} == \"string\"`,\n      () => validateMapping(),\n      () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n    )\n    cxt.ok(valid)\n\n    function validateMapping(): void {\n      const mapping = getMapping()\n      gen.if(false)\n      for (const tagValue in mapping) {\n        gen.elseIf(_`${tag} === ${tagValue}`)\n        gen.assign(valid, applyTagSchema(mapping[tagValue]))\n      }\n      gen.else()\n      cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n      gen.endIf()\n    }\n\n    function applyTagSchema(schemaProp?: number): Name {\n      const _valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n      cxt.mergeEvaluated(schCxt, Name)\n      return _valid\n    }\n\n    function getMapping(): {[T in string]?: number} {\n      const oneOfMapping: {[T in string]?: number} = {}\n      const topRequired = hasRequired(parentSchema)\n      let tagRequired = true\n      for (let i = 0; i < oneOf.length; i++) {\n        let sch = oneOf[i]\n        if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n          const ref = sch.$ref\n          sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n          if (sch instanceof SchemaEnv) sch = sch.schema\n          if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n        }\n        const propSch = sch?.properties?.[tagName]\n        if (typeof propSch != \"object\") {\n          throw new Error(\n            `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n          )\n        }\n        tagRequired = tagRequired && (topRequired || hasRequired(sch))\n        addMappings(propSch, i)\n      }\n      if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n      return oneOfMapping\n\n      function hasRequired({required}: AnySchemaObject): boolean {\n        return Array.isArray(required) && required.includes(tagName)\n      }\n\n      function addMappings(sch: AnySchemaObject, i: number): void {\n        if (sch.const) {\n          addMapping(sch.const, i)\n        } else if (sch.enum) {\n          for (const tagValue of sch.enum) {\n            addMapping(tagValue, i)\n          }\n        } else {\n          throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n        }\n      }\n\n      function addMapping(tagValue: unknown, i: number): void {\n        if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n          throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n        }\n        oneOfMapping[tagValue] = i\n      }\n    }\n  },\n}\n\nexport default def\n", "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Core schema meta-schema\",\n  \"definitions\": {\n    \"schemaArray\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\"$ref\": \"#\"}\n    },\n    \"nonNegativeInteger\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"nonNegativeIntegerDefault0\": {\n      \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n    },\n    \"simpleTypes\": {\n      \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n    },\n    \"stringArray\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true,\n      \"default\": []\n    }\n  },\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"$id\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$schema\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n    },\n    \"$ref\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$comment\": {\n      \"type\": \"string\"\n    },\n    \"title\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"default\": true,\n    \"readOnly\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"examples\": {\n      \"type\": \"array\",\n      \"items\": true\n    },\n    \"multipleOf\": {\n      \"type\": \"number\",\n      \"exclusiveMinimum\": 0\n    },\n    \"maximum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMaximum\": {\n      \"type\": \"number\"\n    },\n    \"minimum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMinimum\": {\n      \"type\": \"number\"\n    },\n    \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"pattern\": {\n      \"type\": \"string\",\n      \"format\": \"regex\"\n    },\n    \"additionalItems\": {\"$ref\": \"#\"},\n    \"items\": {\n      \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n      \"default\": true\n    },\n    \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"uniqueItems\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"contains\": {\"$ref\": \"#\"},\n    \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n    \"additionalProperties\": {\"$ref\": \"#\"},\n    \"definitions\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"properties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"patternProperties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"propertyNames\": {\"format\": \"regex\"},\n      \"default\": {}\n    },\n    \"dependencies\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n      }\n    },\n    \"propertyNames\": {\"$ref\": \"#\"},\n    \"const\": true,\n    \"enum\": {\n      \"type\": \"array\",\n      \"items\": true,\n      \"minItems\": 1,\n      \"uniqueItems\": true\n    },\n    \"type\": {\n      \"anyOf\": [\n        {\"$ref\": \"#/definitions/simpleTypes\"},\n        {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n          \"minItems\": 1,\n          \"uniqueItems\": true\n        }\n      ]\n    },\n    \"format\": {\"type\": \"string\"},\n    \"contentMediaType\": {\"type\": \"string\"},\n    \"contentEncoding\": {\"type\": \"string\"},\n    \"if\": {\"$ref\": \"#\"},\n    \"then\": {\"$ref\": \"#\"},\n    \"else\": {\"$ref\": \"#\"},\n    \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"not\": {\"$ref\": \"#\"}\n  },\n  \"default\": true\n}\n", "import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n  _addVocabularies(): void {\n    super._addVocabularies()\n    draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n    if (this.opts.discriminator) this.addKeyword(discriminator)\n  }\n\n  _addDefaultMetaSchema(): void {\n    super._addDefaultMetaSchema()\n    if (!this.opts.meta) return\n    const metaSchema = this.opts.$data\n      ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n      : draft7MetaSchema\n    this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n    this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    return (this.opts.defaultMeta =\n      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n  }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  SchemaValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n", "'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n};\n\nconst isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n  return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n  return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n};\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n", "'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n", "\nconst defaultOptions = {\n    preserveOrder: false,\n    attributeNamePrefix: '@_',\n    attributesGroupName: false,\n    textNodeName: '#text',\n    ignoreAttributes: true,\n    removeNSPrefix: false, // remove NS from tag name or attribute name if true\n    allowBooleanAttributes: false, //a tag can have attributes without any value\n    //ignoreRootElement : false,\n    parseTagValue: true,\n    parseAttributeValue: false,\n    trimValues: true, //Trim string values of tag and attributes\n    cdataPropName: false,\n    numberParseOptions: {\n      hex: true,\n      leadingZeros: true,\n      eNotation: true\n    },\n    tagValueProcessor: function(tagName, val) {\n      return val;\n    },\n    attributeValueProcessor: function(attrName, val) {\n      return val;\n    },\n    stopNodes: [], //nested tags will not be parsed even for errors\n    alwaysCreateTextNode: false,\n    isArray: () => false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n};\n   \nconst buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;", "'use strict';\n\nclass XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n  };\n};\n\n\nmodule.exports = XmlNode;", "const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n    \n    const entities = {};\n    if( xmlData[i + 3] === 'O' &&\n         xmlData[i + 4] === 'C' &&\n         xmlData[i + 5] === 'T' &&\n         xmlData[i + 6] === 'Y' &&\n         xmlData[i + 7] === 'P' &&\n         xmlData[i + 8] === 'E')\n    {    \n        i = i+9;\n        let angleBracketsCount = 1;\n        let hasBody = false, comment = false;\n        let exp = \"\";\n        for(;i') { //Read tag content\n                if(comment){\n                    if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                        comment = false;\n                        angleBracketsCount--;\n                    }\n                }else{\n                    angleBracketsCount--;\n                }\n                if (angleBracketsCount === 0) {\n                  break;\n                }\n            }else if( xmlData[i] === '['){\n                hasBody = true;\n            }else{\n                exp += xmlData[i];\n            }\n        }\n        if(angleBracketsCount !== 0){\n            throw new Error(`Unclosed DOCTYPE`);\n        }\n    }else{\n        throw new Error(`Invalid Tag instead of DOCTYPE`);\n    }\n    return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n    //External entities are not supported\n    //    \n\n    //Parameter entities are not supported\n    //    \n\n    //Internal entities are supported\n    //    \n    \n    //read EntityName\n    let entityName = \"\";\n    for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n        // if(xmlData[i] === \" \") continue;\n        // else \n        entityName += xmlData[i];\n    }\n    entityName = entityName.trim();\n    if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n    //read Entity Value\n    const startChar = xmlData[i++];\n    let val = \"\"\n    for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n        val += xmlData[i];\n    }\n    return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === '-' &&\n    xmlData[i+3] === '-') return true\n    return false\n}\nfunction isEntity(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'N' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'I' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'Y') return true\n    return false\n}\nfunction isElement(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'L' &&\n    xmlData[i+4] === 'E' &&\n    xmlData[i+5] === 'M' &&\n    xmlData[i+6] === 'E' &&\n    xmlData[i+7] === 'N' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\n\nfunction isAttlist(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'A' &&\n    xmlData[i+3] === 'T' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'L' &&\n    xmlData[i+6] === 'I' &&\n    xmlData[i+7] === 'S' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\nfunction isNotation(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'N' &&\n    xmlData[i+3] === 'O' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'A' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'I' &&\n    xmlData[i+8] === 'O' &&\n    xmlData[i+9] === 'N') return true\n    return false\n}\n\nfunction validateEntityName(name){\n    if (util.isName(name))\n\treturn name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n", "const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n    Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n    Number.parseFloat = window.parseFloat;\n}\n\n  \nconst consider = {\n    hex :  true,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true\n    //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n    // const options = Object.assign({}, consider);\n    // if(opt.leadingZeros === false){\n    //     options.leadingZeros = false;\n    // }else if(opt.hex === false){\n    //     options.hex = false;\n    // }\n\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    // if(trimmedStr === \"0.0\") return 0;\n    // else if(trimmedStr === \"+0.0\") return 0;\n    // else if(trimmedStr === \"-0.0\") return -0;\n\n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return Number.parseInt(trimmedStr, 16);\n    // } else if (options.parseOct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        if(match){\n            const sign = match[1];\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            //trim ending zeros for floating number\n            \n            const eNotation = match[4] || match[6];\n            if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n            else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const numStr = \"\" + num;\n                if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(eNotation){ //given number has enotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    // const decimalPart = match[5].substr(1);\n                    // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n                    \n                    // const p = numStr.indexOf(\".\");\n                    // const givenIntPart = numStr.substr(0,p);\n                    // const givenDecPart = numStr.substr(p+1);\n                    if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n                    else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n                    else return str;\n                }\n                \n                if(leadingZeros){\n                    // if(numTrimmedByZeros === numStr){\n                    //     if(options.leadingZeros) return num;\n                    //     else return str;\n                    // }else return str;\n                    if(numTrimmedByZeros === numStr) return num;\n                    else if(sign+numTrimmedByZeros === numStr) return num;\n                    else return str;\n                }\n\n                if(trimmedStr === numStr) return num;\n                else if(trimmedStr === sign+numStr) return num;\n                // else{\n                //     //number with +/- sign\n                //     trimmedStr.test(/[-+][0-9]);\n\n                // }\n                return str;\n            }\n            // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n            \n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substr(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\nmodule.exports = toNumber\n", "function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn", "'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"\u00A2\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"\u00A3\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"\u00A5\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"\u20AC\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"\u00A9\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"\u00AE\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"\u20B9\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = util.getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, jPath)\n\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath)\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              tagName = this.options.transformTagName(tagName);\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n  }else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode);\n  }else{\n    currentNode.addChild(childNode);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n  const allNodesExp = \"*.\" + currentTagName;\n  for (const stopNodePath in stopNodes) {\n    const stopNodeExp = stopNodes[stopNodePath];\n    if( allNodesExp === stopNodeExp || jPath === stopNodeExp  ) return true;\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (util.isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\n\nmodule.exports = OrderedObjParser;\n", "'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\nexports.prettify = prettify;\n", "const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Buffer} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData === \"string\"){\n        }else if( xmlData.toString){\n            xmlData = xmlData.toString();\n        }else{\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validator.validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n}\n\nmodule.exports = XMLParser;", "const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\nmodule.exports = toXml;\n", "'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nfunction Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it\u2019s part of a tag or an\n\t\t// unquoted attribute value. We\u2019re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer \u2264 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// \u201COtherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.\u201D\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they\u2019re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we\u2019re still here, `if ($7)` is implied; it\u2019s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n", "import type {\n  IAllowedValues,\n  IRenderOptions,\n} from \"types/state-machine-cat.mjs\";\n\nconst ALLOWED_VALUES: IAllowedValues = Object.freeze({\n  inputType: {\n    default: \"smcat\",\n    values: [{ name: \"smcat\" }, { name: \"json\" }, { name: \"scxml\" }],\n  },\n  outputType: {\n    default: \"svg\",\n    values: [\n      { name: \"ast\" },\n      { name: \"dot\" },\n      { name: \"eps\" },\n      { name: \"json\" },\n      { name: \"oldeps\" },\n      { name: \"oldps\" },\n      { name: \"oldps2\" },\n      { name: \"oldsvg\" },\n      { name: \"pdf\" },\n      { name: \"png\" },\n      { name: \"ps\" },\n      { name: \"ps2\" },\n      { name: \"scjson\" },\n      { name: \"scxml\" },\n      { name: \"smcat\" },\n      { name: \"svg\" },\n    ],\n  },\n  engine: {\n    default: \"dot\",\n    values: [\n      { name: \"dot\" },\n      { name: \"circo\" },\n      { name: \"fdp\" },\n      { name: \"neato\" },\n      { name: \"osage\" },\n      { name: \"twopi\" },\n    ],\n  },\n  direction: {\n    default: \"top-down\",\n    values: [\n      { name: \"top-down\" },\n      { name: \"bottom-top\" },\n      { name: \"left-right\" },\n      { name: \"right-left\" },\n    ],\n  },\n  desugar: {\n    default: false,\n    values: [{ name: true }, { name: false }],\n  },\n});\n\nexport function getOptionValue(\n  pOptions: IRenderOptions | null,\n  pOptionName: keyof IAllowedValues,\n): string | boolean {\n  // eslint-disable-next-line security/detect-object-injection\n  return pOptions?.[pOptionName] ?? ALLOWED_VALUES[pOptionName].default;\n}\n\nexport function getAllowedValues(): IAllowedValues {\n  return ALLOWED_VALUES;\n}\n\nexport default {\n  getAllowedValues,\n  getOptionValue,\n};\n", "import Ajv from \"ajv\";\nimport type {\n  IRenderOptions,\n  IStateMachine,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"../options.mjs\";\nimport { parse as parseSmCat } from \"./smcat/parse.mjs\";\nimport { parse as parseSCXML } from \"./scxml/index.mjs\";\nimport $schema from \"./smcat-ast.schema.mjs\";\n\n// @ts-expect-error using Ajv as a class/ constructor is as per the ajv documentation, but tsc seems to thing differently\nconst ajv = new Ajv();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction validateAgainstSchema(pSchema: typeof $schema, pObject: any): void {\n  if (!ajv.validate(pSchema, pObject)) {\n    throw new Error(\n      `The provided JSON is not a valid state-machine-cat AST: ${ajv.errorsText()}.\\n`,\n    );\n  }\n}\n\nexport default {\n  getAST(\n    pScript: string | IStateMachine,\n    pOptions: IRenderOptions,\n  ): IStateMachine {\n    let lReturnValue = pScript;\n\n    if (options.getOptionValue(pOptions, \"inputType\") === \"smcat\") {\n      lReturnValue = parseSmCat(pScript as string);\n    } else if (options.getOptionValue(pOptions, \"inputType\") === \"scxml\") {\n      // @ts-expect-error inputType scxml => it's a string\n      lReturnValue = parseSCXML(pScript);\n    } else if (typeof pScript === \"string\") {\n      // json\n      lReturnValue = JSON.parse(pScript);\n    }\n\n    validateAgainstSchema($schema, lReturnValue);\n\n    // @ts-expect-error by here lReturnValue is bound to be an IStateMachine\n    return lReturnValue;\n  },\n};\n", "export class Counter {\n  #lHWM = 0;\n\n  constructor(pStart: number = 0) {\n    this.#lHWM = pStart;\n  }\n\n  next(): number {\n    // eslint-disable-next-line no-plusplus\n    return ++this.#lHWM;\n  }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n  IState,\n  IStateMachine,\n  ITransition,\n  StateType,\n} from \"types/state-machine-cat.mjs\";\n\ninterface IFlattenedState extends Omit {\n  statemachine: boolean;\n  parent: string;\n}\n\nfunction flattenStatesToMap(\n  pStates: IState[],\n  pMap: Map,\n  pParent: string = \"\",\n): void {\n  pStates\n    .filter((pState) => Boolean(pState.statemachine))\n    .forEach((pState) => {\n      // @ts-expect-error ts2345 - typescript doesn't detect that one line above we\n      // ensure pState.statemachine is not undefined\n      if (Object.hasOwn(pState.statemachine, \"states\")) {\n        // @ts-expect-error TS doesn't detect that after the call in the filter\n        // the .statemachine is guaranteed to exist\n        flattenStatesToMap(pState.statemachine.states, pMap, pState.name);\n      }\n    });\n\n  pStates.forEach((pState) =>\n    pMap.set(pState.name, {\n      name: pState.name,\n      type: pState.type,\n      statemachine: Boolean(pState.statemachine),\n      parent: pParent,\n    }),\n  );\n}\n\nfunction flattenTransitions(pStateMachine: IStateMachine): ITransition[] {\n  let lTransitions: ITransition[] = [];\n\n  if (Object.hasOwn(pStateMachine, \"transitions\")) {\n    // @ts-expect-error TS doesn't detect that after the call in the if the\n    // .transitions is guaranteed to exist\n    lTransitions = structuredClone(pStateMachine.transitions);\n  }\n  if (Object.hasOwn(pStateMachine, \"states\")) {\n    pStateMachine.states\n      .filter((pState) => Boolean(pState.statemachine))\n      .forEach((pState) => {\n        lTransitions = lTransitions.concat(\n          // @ts-expect-error TS doesn't detect that after the call in the filter\n          // the .statemachine is guaranteed to exist\n          flattenTransitions(pState.statemachine),\n        );\n      });\n  }\n  return lTransitions;\n}\n\nexport default class StateMachineModel {\n  #flattenedTransitions: ITransition[];\n  #flattenedStates: Map;\n\n  constructor(pStateMachine: IStateMachine) {\n    this.#flattenedStates = new Map();\n    flattenStatesToMap(pStateMachine.states ?? [], this.#flattenedStates);\n    this.#flattenedTransitions = flattenTransitions(pStateMachine);\n  }\n\n  get flattenedTransitions(): ITransition[] {\n    return this.#flattenedTransitions;\n  }\n\n  findStateByName(pName: string): IFlattenedState | undefined {\n    return this.#flattenedStates.get(pName);\n  }\n\n  findStatesByTypes(pTypes: StateType[]): any[] {\n    return Array.from(this.#flattenedStates.values()).filter((pState) =>\n      pTypes.includes(pState.type),\n    );\n  }\n\n  findExternalSelfTransitions(pStateName: string): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) =>\n        pTransition.from === pStateName &&\n        pTransition.to === pStateName &&\n        pTransition.type !== \"internal\",\n    );\n  }\n\n  findTransitionsByFrom(pFromStateName: string): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) => pTransition.from === pFromStateName,\n    );\n  }\n\n  findTransitionsByTo(pToStateName: string): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) => pTransition.to === pToStateName,\n    );\n  }\n\n  getMaximumTransitionId(): number {\n    return Math.max(...this.#flattenedTransitions.map(({ id }) => id));\n  }\n\n  findTransitionsToSiblings(\n    pStateName: string,\n    pExcludeIds: Set,\n  ): ITransition[] {\n    return this.#flattenedTransitions.filter(\n      (pTransition) =>\n        !pExcludeIds.has(pTransition.id) &&\n        pTransition.from === pStateName &&\n        this.#flattenedStates.get(pTransition.to)?.parent ===\n          this.#flattenedStates.get(pStateName)?.parent,\n    );\n  }\n}\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n  IState,\n  IStateMachine,\n  StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\n\nconst TRIGGER_RE_AS_A_STRING =\n  \"^(entry|activity|exit)\\\\s*/\\\\s*([^\\\\n$]*)(\\\\n|$)\";\n/* eslint security/detect-non-literal-regexp:0 */\nconst TRIGGER_RE = new RegExp(TRIGGER_RE_AS_A_STRING);\n\nfunction stateExists(pKnownStateNames: string[], pName: string): boolean {\n  return pKnownStateNames.includes(pName);\n}\n\ntype RegExp2StateType = {\n  re: RegExp;\n  stateType: import(\"../../types/state-machine-cat.mjs\").StateType;\n};\n\nconst RE2STATE_TYPE: RegExp2StateType[] = [\n  {\n    re: /initial/,\n    stateType: \"initial\",\n  },\n  {\n    re: /final/,\n    stateType: \"final\",\n  },\n  {\n    re: /parallel/,\n    stateType: \"parallel\",\n  },\n  {\n    re: /(deep.*history)|(history.*deep)/,\n    stateType: \"deephistory\",\n  },\n  {\n    re: /history/,\n    stateType: \"history\",\n  },\n  {\n    re: /^\\^.*/,\n    stateType: \"choice\",\n  },\n  {\n    re: /^].*/,\n    stateType: \"forkjoin\",\n  },\n];\n\nfunction matches(pName: string) {\n  return (pEntry: RegExp2StateType): boolean => pEntry.re.test(pName);\n}\n\nfunction getStateType(pName: string): StateType {\n  return (RE2STATE_TYPE.find(matches(pName)) || { stateType: \"regular\" })\n    .stateType;\n}\n\nfunction initState(pName: string): IState {\n  return {\n    name: pName,\n    type: getStateType(pName),\n  };\n}\n\nfunction isComposite(pState: IState): boolean {\n  return Boolean(pState.statemachine);\n}\n\nfunction getAlreadyDeclaredStates(pStateMachine: IStateMachine): string[] {\n  const lStates = pStateMachine?.states ?? [];\n\n  return lStates.filter(isComposite).reduce(\n    (pAllStateNames, pThisState) =>\n      pAllStateNames.concat(\n        // cast: because of the isComposite, we now pThisState has a .statemachine\n        // attribute and it won't be undefined\n        getAlreadyDeclaredStates(pThisState.statemachine as IStateMachine),\n      ),\n    lStates.map(({ name }) => name),\n  );\n}\n\nfunction extractUndeclaredStates(\n  pStateMachine: IStateMachine,\n  pKnownStateNames: string[],\n): IState[] {\n  pKnownStateNames =\n    pKnownStateNames ?? getAlreadyDeclaredStates(pStateMachine);\n\n  pStateMachine.states = pStateMachine?.states ?? [];\n  const lTransitions = pStateMachine?.transitions ?? [];\n\n  pStateMachine.states.filter(isComposite).forEach((pState) => {\n    // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n    pState.statemachine.states = extractUndeclaredStates(\n      // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n      pState.statemachine,\n      pKnownStateNames,\n    );\n  });\n\n  lTransitions.forEach((pTransition) => {\n    if (!stateExists(pKnownStateNames, pTransition.from)) {\n      pKnownStateNames.push(pTransition.from);\n      pStateMachine.states.push(initState(pTransition.from));\n    }\n    if (!stateExists(pKnownStateNames, pTransition.to)) {\n      pKnownStateNames.push(pTransition.to);\n      pStateMachine.states.push(initState(pTransition.to));\n    }\n  });\n  return pStateMachine.states;\n}\n\nfunction classifyForkJoin(\n  pInComingCount: number,\n  pOutGoingCount: number,\n): StateType {\n  let lReturnValue: StateType = \"junction\";\n\n  if (pInComingCount <= 1 && pOutGoingCount > 1) {\n    lReturnValue = \"fork\";\n  }\n  if (pInComingCount > 1 && pOutGoingCount <= 1) {\n    lReturnValue = \"join\";\n  }\n\n  return lReturnValue;\n}\n\nfunction classifyForkJoins(\n  pStateMachine: IStateMachine,\n  pFlattenedStateMachineModel = new StateMachineModel(pStateMachine),\n): IStateMachine {\n  // TODO: mutates parameter\n  pStateMachine.states = pStateMachine.states.map((pState) => {\n    if (pState.type === \"forkjoin\" && !pState.typeExplicitlySet) {\n      const lInComingCount = pFlattenedStateMachineModel.findTransitionsByTo(\n        pState.name,\n      ).length;\n      const lOutGoingCount = pFlattenedStateMachineModel.findTransitionsByFrom(\n        pState.name,\n      ).length;\n\n      pState.type = classifyForkJoin(lInComingCount, lOutGoingCount);\n    }\n    if (pState.statemachine) {\n      pState.statemachine = classifyForkJoins(\n        pState.statemachine,\n        pFlattenedStateMachineModel,\n      );\n    }\n    return pState;\n  });\n\n  return pStateMachine;\n}\n\nfunction stateEqual(pStateOne: IState, pStateTwo: IState): boolean {\n  return pStateOne.name === pStateTwo.name;\n}\n\nfunction uniq(\n  pArray: Array,\n  pEqualFunction: (a: SomeType, b: SomeType) => boolean,\n) {\n  return pArray.reduce((pBag: SomeType[], pMarble: SomeType) => {\n    const lMarbleIndex = pBag.findIndex((pBagItem) =>\n      pEqualFunction(pBagItem, pMarble),\n    );\n\n    if (lMarbleIndex > -1) {\n      // ensures the _last_ marble we find is in the bag on that position\n      pBag[lMarbleIndex] = pMarble;\n      return pBag;\n    }\n    return pBag.concat(pMarble);\n  }, []);\n}\n\nfunction parseTransitionExpression(pString: string): {\n  event?: string;\n  cond?: string;\n  action?: string;\n} {\n  // eslint-disable-next-line security/detect-unsafe-regex\n  const lTransitionExpressionRe = /([^[/]+)?(\\[[^\\]]+\\])?[^/]*(\\/.+)?/;\n  const lReturnValue: { event?: string; cond?: string; action?: string } = {};\n\n  // @ts-expect-error match has no fallback because lTransitionExpressionRe will match\n  // any string (every part is optional)\n  const lMatchResult: RegExpMatchArray = lTransitionExpressionRe.exec(pString);\n  const lEventPos = 1;\n  const lConditionPos = 2;\n  const lActionPos = 3;\n\n  if (lMatchResult[lEventPos]) {\n    lReturnValue.event = lMatchResult[lEventPos].trim();\n  }\n  if (lMatchResult[lConditionPos]) {\n    lReturnValue.cond = lMatchResult[lConditionPos].slice(1, -1).trim();\n  }\n  if (lMatchResult[lActionPos]) {\n    lReturnValue.action = lMatchResult[lActionPos]\n      .slice(1, lMatchResult[lActionPos].length)\n      .trim();\n  }\n\n  return lReturnValue;\n}\n\nfunction setIf(\n  pObject: { [name: string]: string },\n  pProperty: string,\n  pValue: string,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  pCondition: (pX: any) => boolean = Boolean,\n) {\n  if (pCondition(pValue)) {\n    pObject[pProperty] = pValue;\n  }\n}\n\nfunction setIfNotEmpty(\n  pObject: { [name: string]: string },\n  pProperty: string,\n  pValue: string,\n) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  setIf(pObject, pProperty, pValue, (pX: Array) => pX && pX.length > 0);\n}\n\nfunction extractAction(pActivityCandidate: string): {\n  type: string;\n  body: string;\n} {\n  const lMatch = TRIGGER_RE.exec(pActivityCandidate);\n  const lTypePos = 1;\n  const lBodyPos = 2;\n\n  if (lMatch) {\n    return {\n      type: lMatch[lTypePos],\n      body: lMatch[lBodyPos],\n    };\n  }\n  return {\n    type: \"activity\",\n    body: pActivityCandidate,\n  };\n}\n\nfunction extractActions(pString: string): { type: string; body: string }[] {\n  return pString\n    .split(/\\n\\s*/g)\n    .map((pActivityCandidate) => pActivityCandidate.trim())\n    .map(extractAction);\n}\n\nexport default {\n  initState,\n  extractUndeclaredStates,\n  classifyForkJoins,\n  getStateType,\n  stateEqual,\n  uniq,\n  parseTransitionExpression,\n  extractActions,\n  setIf,\n  setIfNotEmpty,\n};\n", "// @generated by Peggy 4.2.0.\n//\n// https://peggyjs.org/\n\nimport parserHelpers from \"../parser-helpers.mjs\";\n\n\nfunction peg$subclass(child, parent) {\n  function C() { this.constructor = child; }\n  C.prototype = parent.prototype;\n  child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n  var self = Error.call(this, message);\n  // istanbul ignore next Check is a necessary evil to support older environments\n  if (Object.setPrototypeOf) {\n    Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n  }\n  self.expected = expected;\n  self.found = found;\n  self.location = location;\n  self.name = \"SyntaxError\";\n  return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n  padString = padString || \" \";\n  if (str.length > targetLength) { return str; }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n  var str = \"Error: \" + this.message;\n  if (this.location) {\n    var src = null;\n    var k;\n    for (k = 0; k < sources.length; k++) {\n      if (sources[k].source === this.location.source) {\n        src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n        break;\n      }\n    }\n    var s = this.location.start;\n    var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n      ? this.location.source.offset(s)\n      : s;\n    var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n    if (src) {\n      var e = this.location.end;\n      var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n      var line = src[s.line - 1];\n      var last = s.line === e.line ? e.column : line.length + 1;\n      var hatLen = (last - s.column) || 1;\n      str += \"\\n --> \" + loc + \"\\n\"\n          + filler + \" |\\n\"\n          + offset_s.line + \" | \" + line + \"\\n\"\n          + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n          + peg$padEnd(\"\", hatLen, \"^\");\n    } else {\n      str += \"\\n at \" + loc;\n    }\n  }\n  return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n  var DESCRIBE_EXPECTATION_FNS = {\n    literal: function(expectation) {\n      return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n    },\n\n    class: function(expectation) {\n      var escapedParts = expectation.parts.map(function(part) {\n        return Array.isArray(part)\n          ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n          : classEscape(part);\n      });\n\n      return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n    },\n\n    any: function() {\n      return \"any character\";\n    },\n\n    end: function() {\n      return \"end of input\";\n    },\n\n    other: function(expectation) {\n      return expectation.description;\n    }\n  };\n\n  function hex(ch) {\n    return ch.charCodeAt(0).toString(16).toUpperCase();\n  }\n\n  function literalEscape(s) {\n    return s\n      .replace(/\\\\/g, \"\\\\\\\\\")\n      .replace(/\"/g,  \"\\\\\\\"\")\n      .replace(/\\0/g, \"\\\\0\")\n      .replace(/\\t/g, \"\\\\t\")\n      .replace(/\\n/g, \"\\\\n\")\n      .replace(/\\r/g, \"\\\\r\")\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return \"\\\\x0\" + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\"  + hex(ch); });\n  }\n\n  function classEscape(s) {\n    return s\n      .replace(/\\\\/g, \"\\\\\\\\\")\n      .replace(/\\]/g, \"\\\\]\")\n      .replace(/\\^/g, \"\\\\^\")\n      .replace(/-/g,  \"\\\\-\")\n      .replace(/\\0/g, \"\\\\0\")\n      .replace(/\\t/g, \"\\\\t\")\n      .replace(/\\n/g, \"\\\\n\")\n      .replace(/\\r/g, \"\\\\r\")\n      .replace(/[\\x00-\\x0F]/g,          function(ch) { return \"\\\\x0\" + hex(ch); })\n      .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\"  + hex(ch); });\n  }\n\n  function describeExpectation(expectation) {\n    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n  }\n\n  function describeExpected(expected) {\n    var descriptions = expected.map(describeExpectation);\n    var i, j;\n\n    descriptions.sort();\n\n    if (descriptions.length > 0) {\n      for (i = 1, j = 1; i < descriptions.length; i++) {\n        if (descriptions[i - 1] !== descriptions[i]) {\n          descriptions[j] = descriptions[i];\n          j++;\n        }\n      }\n      descriptions.length = j;\n    }\n\n    switch (descriptions.length) {\n      case 1:\n        return descriptions[0];\n\n      case 2:\n        return descriptions[0] + \" or \" + descriptions[1];\n\n      default:\n        return descriptions.slice(0, -1).join(\", \")\n          + \", or \"\n          + descriptions[descriptions.length - 1];\n    }\n  }\n\n  function describeFound(found) {\n    return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n  }\n\n  return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n  options = options !== undefined ? options : {};\n\n  var peg$FAILED = {};\n  var peg$source = options.grammarSource;\n\n  var peg$startRuleFunctions = { program: peg$parseprogram };\n  var peg$startRuleFunction = peg$parseprogram;\n\n  var peg$c0 = \",\";\n  var peg$c1 = \";\";\n  var peg$c2 = \"[\";\n  var peg$c3 = \"]\";\n  var peg$c4 = \":\";\n  var peg$c5 = \"{\";\n  var peg$c6 = \"}\";\n  var peg$c7 = \"=\";\n  var peg$c8 = \"label\";\n  var peg$c9 = \"color\";\n  var peg$c10 = \"class\";\n  var peg$c11 = \"active\";\n  var peg$c12 = \"type\";\n  var peg$c13 = \"regular\";\n  var peg$c14 = \"initial\";\n  var peg$c15 = \"terminate\";\n  var peg$c16 = \"final\";\n  var peg$c17 = \"parallel\";\n  var peg$c18 = \"history\";\n  var peg$c19 = \"deephistory\";\n  var peg$c20 = \"choice\";\n  var peg$c21 = \"forkjoin\";\n  var peg$c22 = \"fork\";\n  var peg$c23 = \"join\";\n  var peg$c24 = \"junction\";\n  var peg$c25 = \"width\";\n  var peg$c26 = \"external\";\n  var peg$c27 = \"internal\";\n  var peg$c28 = \"->\";\n  var peg$c29 = \"=>>\";\n  var peg$c30 = \"=>\";\n  var peg$c31 = \">>\";\n  var peg$c32 = \":>\";\n  var peg$c33 = \"--\";\n  var peg$c34 = \"==\";\n  var peg$c35 = \"<-\";\n  var peg$c36 = \"<<=\";\n  var peg$c37 = \"<=\";\n  var peg$c38 = \"<<\";\n  var peg$c39 = \"<:\";\n  var peg$c40 = \"#\";\n  var peg$c41 = \".\";\n  var peg$c42 = \"\\\"\";\n  var peg$c43 = \"\\\\\\\"\";\n  var peg$c44 = \"/*\";\n  var peg$c45 = \"*/\";\n  var peg$c46 = \"//\";\n\n  var peg$r0 = /^[0-9]/;\n  var peg$r1 = /^[a-zA-Z0-9_\\- ]/;\n  var peg$r2 = /^[,;{]/;\n  var peg$r3 = /^[;{]/;\n  var peg$r4 = /^[^;, \"\\t\\n\\r=\\-><:{[]/;\n  var peg$r5 = /^[ \\t]/;\n  var peg$r6 = /^[\\r\\n]/;\n  var peg$r7 = /^[^\\r\\n]/;\n\n  var peg$e0 = peg$otherExpectation(\"statemachine\");\n  var peg$e1 = peg$literalExpectation(\",\", false);\n  var peg$e2 = peg$literalExpectation(\";\", false);\n  var peg$e3 = peg$otherExpectation(\"state\");\n  var peg$e4 = peg$literalExpectation(\"[\", false);\n  var peg$e5 = peg$literalExpectation(\"]\", false);\n  var peg$e6 = peg$literalExpectation(\":\", false);\n  var peg$e7 = peg$literalExpectation(\"{\", false);\n  var peg$e8 = peg$literalExpectation(\"}\", false);\n  var peg$e9 = peg$otherExpectation(\"extended state attributes\");\n  var peg$e10 = peg$otherExpectation(\"extended state attribute\");\n  var peg$e11 = peg$literalExpectation(\"=\", false);\n  var peg$e12 = peg$otherExpectation(\"state attribute name\");\n  var peg$e13 = peg$literalExpectation(\"label\", true);\n  var peg$e14 = peg$literalExpectation(\"color\", true);\n  var peg$e15 = peg$otherExpectation(\"class attribute\");\n  var peg$e16 = peg$literalExpectation(\"class\", true);\n  var peg$e17 = peg$otherExpectation(\"state flag\");\n  var peg$e18 = peg$literalExpectation(\"active\", true);\n  var peg$e19 = peg$otherExpectation(\"state type\");\n  var peg$e20 = peg$literalExpectation(\"type\", true);\n  var peg$e21 = peg$otherExpectation(\"state type type\");\n  var peg$e22 = peg$literalExpectation(\"regular\", false);\n  var peg$e23 = peg$literalExpectation(\"initial\", false);\n  var peg$e24 = peg$literalExpectation(\"terminate\", false);\n  var peg$e25 = peg$literalExpectation(\"final\", false);\n  var peg$e26 = peg$literalExpectation(\"parallel\", false);\n  var peg$e27 = peg$literalExpectation(\"history\", false);\n  var peg$e28 = peg$literalExpectation(\"deephistory\", false);\n  var peg$e29 = peg$literalExpectation(\"choice\", false);\n  var peg$e30 = peg$literalExpectation(\"forkjoin\", false);\n  var peg$e31 = peg$literalExpectation(\"fork\", false);\n  var peg$e32 = peg$literalExpectation(\"join\", false);\n  var peg$e33 = peg$literalExpectation(\"junction\", false);\n  var peg$e34 = peg$otherExpectation(\"transition\");\n  var peg$e35 = peg$otherExpectation(\"extended transition attributes\");\n  var peg$e36 = peg$otherExpectation(\"extended transition attribute\");\n  var peg$e37 = peg$otherExpectation(\"transition attribute name\");\n  var peg$e38 = peg$otherExpectation(\"transition type name\");\n  var peg$e39 = peg$otherExpectation(\"numeric transition attribute name\");\n  var peg$e40 = peg$literalExpectation(\"width\", true);\n  var peg$e41 = peg$otherExpectation(\"transition type value\");\n  var peg$e42 = peg$literalExpectation(\"external\", false);\n  var peg$e43 = peg$literalExpectation(\"internal\", false);\n  var peg$e44 = peg$otherExpectation(\"left to right arrow\");\n  var peg$e45 = peg$literalExpectation(\"->\", false);\n  var peg$e46 = peg$literalExpectation(\"=>>\", false);\n  var peg$e47 = peg$literalExpectation(\"=>\", false);\n  var peg$e48 = peg$literalExpectation(\">>\", false);\n  var peg$e49 = peg$literalExpectation(\":>\", false);\n  var peg$e50 = peg$literalExpectation(\"--\", false);\n  var peg$e51 = peg$literalExpectation(\"==\", false);\n  var peg$e52 = peg$otherExpectation(\"right to left arrow\");\n  var peg$e53 = peg$literalExpectation(\"<-\", false);\n  var peg$e54 = peg$literalExpectation(\"<<=\", false);\n  var peg$e55 = peg$literalExpectation(\"<=\", false);\n  var peg$e56 = peg$literalExpectation(\"<<\", false);\n  var peg$e57 = peg$literalExpectation(\"<:\", false);\n  var peg$e58 = peg$literalExpectation(\"#\", false);\n  var peg$e59 = peg$literalExpectation(\".\", false);\n  var peg$e60 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n  var peg$e61 = peg$otherExpectation(\"double quoted string\");\n  var peg$e62 = peg$literalExpectation(\"\\\"\", false);\n  var peg$e63 = peg$literalExpectation(\"\\\\\\\"\", false);\n  var peg$e64 = peg$anyExpectation();\n  var peg$e65 = peg$otherExpectation(\"valid class string\");\n  var peg$e66 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\", \"-\", \" \"], false, false);\n  var peg$e67 = peg$classExpectation([\",\", \";\", \"{\"], false, false);\n  var peg$e68 = peg$classExpectation([\";\", \"{\"], false, false);\n  var peg$e69 = peg$otherExpectation(\"identifier\");\n  var peg$e70 = peg$classExpectation([\";\", \",\", \" \", \"\\\"\", \"\\t\", \"\\n\", \"\\r\", \"=\", \"-\", \">\", \"<\", \":\", \"{\", \"[\"], true, false);\n  var peg$e71 = peg$otherExpectation(\"whitespace\");\n  var peg$e72 = peg$classExpectation([\" \", \"\\t\"], false, false);\n  var peg$e73 = peg$otherExpectation(\"line end\");\n  var peg$e74 = peg$classExpectation([\"\\r\", \"\\n\"], false, false);\n  var peg$e75 = peg$literalExpectation(\"/*\", false);\n  var peg$e76 = peg$literalExpectation(\"*/\", false);\n  var peg$e77 = peg$literalExpectation(\"//\", false);\n  var peg$e78 = peg$classExpectation([\"\\r\", \"\\n\"], true, false);\n  var peg$e79 = peg$otherExpectation(\"comment\");\n\n  var peg$f0 = function(statemachine) {\n        statemachine.states = parserHelpers.extractUndeclaredStates(statemachine);\n        return parserHelpers.classifyForkJoins(statemachine);\n    };\n  var peg$f1 = function(states, transitions) {\n        let lStateMachine = {};\n        parserHelpers.setIf(lStateMachine, 'states', states);\n        parserHelpers.setIfNotEmpty(lStateMachine, 'transitions', transitions);\n\n        return lStateMachine;\n      };\n  var peg$f2 = function(state) {return state};\n  var peg$f3 = function(state) {return state};\n  var peg$f4 = function(states) {\n      return parserHelpers.uniq(states[0].concat(states[1]), parserHelpers.stateEqual);\n    };\n  var peg$f5 = function(notes, id, attrs) {return attrs};\n  var peg$f6 = function(notes, id, extended_state_attributes, act) {return act};\n  var peg$f7 = function(notes, id, extended_state_attributes, actions, sm) {return sm;};\n  var peg$f8 = function(notes, id, extended_state_attributes, actions, statemachine) {\n          let lState = parserHelpers.initState(id);\n          (extended_state_attributes || []).forEach(\n            pExtendedAttribute => parserHelpers.setIf(lState, pExtendedAttribute.name, pExtendedAttribute.value)\n          );\n          parserHelpers.setIf(lState, 'typeExplicitlySet', (extended_state_attributes || []).some(pExtendedAttribute => pExtendedAttribute.typeExplicitlySet));\n          parserHelpers.setIf(lState, 'statemachine', statemachine);\n          parserHelpers.setIfNotEmpty(lState, 'note', notes);\n\n          if (actions) {\n            parserHelpers.setIfNotEmpty(\n                lState,\n                'actions',\n                parserHelpers.extractActions(actions)\n            );\n          }\n\n          return lState;\n        };\n  var peg$f9 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f10 = function(name, value) {\n        return {name, value}\n    };\n  var peg$f11 = function(name) {\n        return {name, value:true}\n    };\n  var peg$f12 = function(name, value) {\n        return {name, value, typeExplicitlySet:true}\n    };\n  var peg$f13 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f14 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f15 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f16 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f17 = function(notes, trans, attrs) {return attrs};\n  var peg$f18 = function(notes, trans, extended_attributes, lbl) {return lbl};\n  var peg$f19 = function(notes, trans, extended_attributes, label) {\n      if (label) {\n          trans.label = label;\n          trans = Object.assign(\n              trans,\n              parserHelpers.parseTransitionExpression(label),\n          );\n      }\n      (extended_attributes || []).forEach(\n          pExtendedAttribute => parserHelpers.setIf(trans, pExtendedAttribute.name, pExtendedAttribute.value)\n      );\n      parserHelpers.setIfNotEmpty(trans, 'note', notes);\n\n      trans.id=options.counter.next();\n      return trans;\n    };\n  var peg$f20 = function(from_, to) {\n              return {\n                  from: from_,\n                  to: to\n              }\n          };\n  var peg$f21 = function(to, from_) {\n          return {\n              from: from_,\n              to: to\n          }\n      };\n  var peg$f22 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f23 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f24 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f25 = function(name, value) {\n        return {name, value};\n    };\n  var peg$f26 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f27 = function(name) {\n        return name.toLowerCase();\n    };\n  var peg$f28 = function(name) {\n        return name\n    };\n  var peg$f29 = function(com) {\n      return com.join(\"\").trim()\n    };\n  var peg$f30 = function(digits) { return parseFloat(digits.join(\"\")); };\n  var peg$f31 = function(digits) { return parseInt(digits.join(\"\"), 10); };\n  var peg$f32 = function(s) {return s.join(\"\").replace(/\\\\\\\"/g, \"\\\"\")};\n  var peg$f33 = function(c) {return c};\n  var peg$f34 = function(s) {return s.join(\"\")};\n  var peg$f35 = function(c) {return c};\n  var peg$f36 = function(s) {return s.join(\"\").trim()};\n  var peg$f37 = function(s) {return s.join(\"\").trim()};\n  var peg$f38 = function(c) {return c};\n  var peg$f39 = function(c) {return c};\n  var peg$f40 = function(chars) {return chars.join(\"\")};\n  var peg$currPos = options.peg$currPos | 0;\n  var peg$savedPos = peg$currPos;\n  var peg$posDetailsCache = [{ line: 1, column: 1 }];\n  var peg$maxFailPos = peg$currPos;\n  var peg$maxFailExpected = options.peg$maxFailExpected || [];\n  var peg$silentFails = options.peg$silentFails | 0;\n\n  var peg$result;\n\n  if (options.startRule) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function offset() {\n    return peg$savedPos;\n  }\n\n  function range() {\n    return {\n      source: peg$source,\n      start: peg$savedPos,\n      end: peg$currPos\n    };\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos) {\n    var details = peg$posDetailsCache[pos];\n    var p;\n\n    if (details) {\n      return details;\n    } else {\n      if (pos >= peg$posDetailsCache.length) {\n        p = peg$posDetailsCache.length - 1;\n      } else {\n        p = pos;\n        while (!peg$posDetailsCache[--p]) {}\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos, offset) {\n    var startPosDetails = peg$computePosDetails(startPos);\n    var endPosDetails = peg$computePosDetails(endPos);\n\n    var res = {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n    if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n      res.start = peg$source.offset(res.start);\n      res.end = peg$source.offset(res.end);\n    }\n    return res;\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parseprogram() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parsestatemachine();\n    s3 = peg$parse_();\n    peg$savedPos = s0;\n    s0 = peg$f0(s2);\n\n    return s0;\n  }\n\n  function peg$parsestatemachine() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parsestates();\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    s2 = [];\n    s3 = peg$parsetransition();\n    while (s3 !== peg$FAILED) {\n      s2.push(s3);\n      s3 = peg$parsetransition();\n    }\n    peg$savedPos = s0;\n    s0 = peg$f1(s1, s2);\n    peg$silentFails--;\n    s1 = peg$FAILED;\n    if (peg$silentFails === 0) { peg$fail(peg$e0); }\n\n    return s0;\n  }\n\n  function peg$parsestates() {\n    var s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = [];\n    s3 = peg$currPos;\n    s4 = peg$parsestate();\n    if (s4 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 44) {\n        s5 = peg$c0;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e1); }\n      }\n      if (s5 !== peg$FAILED) {\n        peg$savedPos = s3;\n        s3 = peg$f2(s4);\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s3;\n      s3 = peg$FAILED;\n    }\n    while (s3 !== peg$FAILED) {\n      s2.push(s3);\n      s3 = peg$currPos;\n      s4 = peg$parsestate();\n      if (s4 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 44) {\n          s5 = peg$c0;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e1); }\n        }\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s3;\n          s3 = peg$f2(s4);\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n    }\n    s3 = peg$currPos;\n    s4 = peg$parsestate();\n    if (s4 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 59) {\n        s5 = peg$c1;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e2); }\n      }\n      if (s5 !== peg$FAILED) {\n        peg$savedPos = s3;\n        s3 = peg$f3(s4);\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s3;\n      s3 = peg$FAILED;\n    }\n    if (s3 !== peg$FAILED) {\n      s2 = [s2, s3];\n      s1 = s2;\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f4(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsestate() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parsenote();\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parsenote();\n    }\n    s2 = peg$parse_();\n    s3 = peg$parseidentifier();\n    if (s3 !== peg$FAILED) {\n      s4 = peg$parse_();\n      s5 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s6 = peg$c2;\n        peg$currPos++;\n      } else {\n        s6 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e4); }\n      }\n      if (s6 !== peg$FAILED) {\n        s7 = peg$parseextended_state_attributes();\n        if (input.charCodeAt(peg$currPos) === 93) {\n          s8 = peg$c3;\n          peg$currPos++;\n        } else {\n          s8 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e5); }\n        }\n        if (s8 !== peg$FAILED) {\n          peg$savedPos = s5;\n          s5 = peg$f5(s1, s3, s7);\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s5;\n        s5 = peg$FAILED;\n      }\n      if (s5 === peg$FAILED) {\n        s5 = null;\n      }\n      s6 = peg$parse_();\n      s7 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s8 = peg$c4;\n        peg$currPos++;\n      } else {\n        s8 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e6); }\n      }\n      if (s8 !== peg$FAILED) {\n        s9 = peg$parse_();\n        s10 = peg$parsestring();\n        if (s10 !== peg$FAILED) {\n          s11 = peg$parse_();\n          peg$savedPos = s7;\n          s7 = peg$f6(s1, s3, s5, s10);\n        } else {\n          peg$currPos = s7;\n          s7 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s7;\n        s7 = peg$FAILED;\n      }\n      if (s7 === peg$FAILED) {\n        s7 = null;\n      }\n      s8 = peg$parse_();\n      s9 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 123) {\n        s10 = peg$c5;\n        peg$currPos++;\n      } else {\n        s10 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e7); }\n      }\n      if (s10 !== peg$FAILED) {\n        s11 = peg$parse_();\n        s12 = peg$parsestatemachine();\n        if (s12 !== peg$FAILED) {\n          s13 = peg$parse_();\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s14 = peg$c6;\n            peg$currPos++;\n          } else {\n            s14 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e8); }\n          }\n          if (s14 !== peg$FAILED) {\n            peg$savedPos = s9;\n            s9 = peg$f7(s1, s3, s5, s7, s12);\n          } else {\n            peg$currPos = s9;\n            s9 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s9;\n          s9 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s9;\n        s9 = peg$FAILED;\n      }\n      if (s9 === peg$FAILED) {\n        s9 = null;\n      }\n      s10 = peg$parse_();\n      peg$savedPos = s0;\n      s0 = peg$f8(s1, s3, s5, s7, s9);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e3); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_attributes() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseextended_state_attribute();\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseextended_state_attribute();\n    }\n    peg$silentFails--;\n    s1 = peg$FAILED;\n    if (peg$silentFails === 0) { peg$fail(peg$e9); }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_attribute() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parseextended_state_string_attribute_name();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parse_();\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s4 = peg$c7;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e11); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse_();\n        s6 = peg$parsequotedstring();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f9(s2, s6);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      s2 = peg$parseclass_attribute_name();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s4 = peg$c7;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e11); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          s6 = peg$parseclass_string();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parse_();\n            peg$savedPos = s0;\n            s0 = peg$f10(s2, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        s2 = peg$parseextended_state_boolean_attribute_name();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f11(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parse_();\n          s2 = peg$parseextended_state_type_attribute_name();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parse_();\n            if (input.charCodeAt(peg$currPos) === 61) {\n              s4 = peg$c7;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e11); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              s6 = peg$parseextended_state_type_attribute_type();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                peg$savedPos = s0;\n                s0 = peg$f12(s2, s6);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e10); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_string_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c8) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e13); }\n    }\n    if (s1 === peg$FAILED) {\n      s1 = input.substr(peg$currPos, 5);\n      if (s1.toLowerCase() === peg$c9) {\n        peg$currPos += 5;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e14); }\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f13(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e12); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseclass_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c10) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e16); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f14(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e15); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_boolean_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 6);\n    if (s1.toLowerCase() === peg$c11) {\n      peg$currPos += 6;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e18); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f15(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e17); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_type_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 4);\n    if (s1.toLowerCase() === peg$c12) {\n      peg$currPos += 4;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e20); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f16(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e19); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_state_type_attribute_type() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 7) === peg$c13) {\n      s0 = peg$c13;\n      peg$currPos += 7;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e22); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 7) === peg$c14) {\n        s0 = peg$c14;\n        peg$currPos += 7;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e23); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 9) === peg$c15) {\n          s0 = peg$c15;\n          peg$currPos += 9;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e24); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c16) {\n            s0 = peg$c16;\n            peg$currPos += 5;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e25); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 8) === peg$c17) {\n              s0 = peg$c17;\n              peg$currPos += 8;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e26); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 7) === peg$c18) {\n                s0 = peg$c18;\n                peg$currPos += 7;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e27); }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.substr(peg$currPos, 11) === peg$c19) {\n                  s0 = peg$c19;\n                  peg$currPos += 11;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e28); }\n                }\n                if (s0 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 6) === peg$c20) {\n                    s0 = peg$c20;\n                    peg$currPos += 6;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e29); }\n                  }\n                  if (s0 === peg$FAILED) {\n                    if (input.substr(peg$currPos, 8) === peg$c21) {\n                      s0 = peg$c21;\n                      peg$currPos += 8;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$e30); }\n                    }\n                    if (s0 === peg$FAILED) {\n                      if (input.substr(peg$currPos, 4) === peg$c22) {\n                        s0 = peg$c22;\n                        peg$currPos += 4;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$e31); }\n                      }\n                      if (s0 === peg$FAILED) {\n                        if (input.substr(peg$currPos, 4) === peg$c23) {\n                          s0 = peg$c23;\n                          peg$currPos += 4;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$e32); }\n                        }\n                        if (s0 === peg$FAILED) {\n                          if (input.substr(peg$currPos, 8) === peg$c24) {\n                            s0 = peg$c24;\n                            peg$currPos += 8;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$e33); }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e21); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsetransition() {\n    var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parsenote();\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parsenote();\n    }\n    s2 = peg$parsetransitionbase();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s4 = peg$c2;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e4); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseextended_transition_attributes();\n        if (input.charCodeAt(peg$currPos) === 93) {\n          s6 = peg$c3;\n          peg$currPos++;\n        } else {\n          s6 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e5); }\n        }\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s3;\n          s3 = peg$f17(s1, s2, s5);\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      s4 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s5 = peg$c4;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e6); }\n      }\n      if (s5 !== peg$FAILED) {\n        s6 = peg$parse_();\n        s7 = peg$parsetransitionstring();\n        if (s7 !== peg$FAILED) {\n          s8 = peg$parse_();\n          peg$savedPos = s4;\n          s4 = peg$f18(s1, s2, s3, s7);\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s4;\n        s4 = peg$FAILED;\n      }\n      if (s4 === peg$FAILED) {\n        s4 = null;\n      }\n      if (input.charCodeAt(peg$currPos) === 59) {\n        s5 = peg$c1;\n        peg$currPos++;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e2); }\n      }\n      if (s5 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f19(s1, s2, s3, s4);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e34); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsetransitionbase() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parseidentifier();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parse_();\n      s4 = peg$parsefwdarrowtoken();\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse_();\n        s6 = peg$parseidentifier();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f20(s2, s6);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      s2 = peg$parseidentifier();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        s4 = peg$parsebckarrowtoken();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          s6 = peg$parseidentifier();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parse_();\n            peg$savedPos = s0;\n            s0 = peg$f21(s2, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_attributes() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseextended_transition_attribute();\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseextended_transition_attribute();\n    }\n    peg$silentFails--;\n    s1 = peg$FAILED;\n    if (peg$silentFails === 0) { peg$fail(peg$e35); }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_attribute() {\n    var s0, s1, s2, s3, s4, s5, s6, s7;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    s2 = peg$parseextended_transition_string_attribute_name();\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parse_();\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s4 = peg$c7;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e11); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parse_();\n        s6 = peg$parsequotedstring();\n        if (s6 !== peg$FAILED) {\n          s7 = peg$parse_();\n          peg$savedPos = s0;\n          s0 = peg$f22(s2, s6);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      s2 = peg$parseclass_attribute_name();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s4 = peg$c7;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e11); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          s6 = peg$parseclass_string();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parse_();\n            peg$savedPos = s0;\n            s0 = peg$f23(s2, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        s2 = peg$parseextended_transition_type_name();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (input.charCodeAt(peg$currPos) === 61) {\n            s4 = peg$c7;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e11); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            s6 = peg$parseextended_transition_type_value();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parse_();\n              peg$savedPos = s0;\n              s0 = peg$f24(s2, s6);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parse_();\n          s2 = peg$parseextended_transition_numeric_attribute_name();\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parse_();\n            if (input.charCodeAt(peg$currPos) === 61) {\n              s4 = peg$c7;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e11); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              s6 = peg$parsepositive_number();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                peg$savedPos = s0;\n                s0 = peg$f25(s2, s6);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e36); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_string_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c9) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e14); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f26(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e37); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_type_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 4);\n    if (s1.toLowerCase() === peg$c12) {\n      peg$currPos += 4;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e20); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f27(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e38); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_numeric_attribute_name() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c25) {\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e40); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f28(s1);\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e39); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseextended_transition_type_value() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 8) === peg$c26) {\n      s0 = peg$c26;\n      peg$currPos += 8;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e42); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 8) === peg$c27) {\n        s0 = peg$c27;\n        peg$currPos += 8;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e43); }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e41); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsefwdarrowtoken() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 2) === peg$c28) {\n      s0 = peg$c28;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e45); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 3) === peg$c29) {\n        s0 = peg$c29;\n        peg$currPos += 3;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e46); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c30) {\n          s0 = peg$c30;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e47); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c31) {\n            s0 = peg$c31;\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e48); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c32) {\n              s0 = peg$c32;\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e49); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 2) === peg$c33) {\n                s0 = peg$c33;\n                peg$currPos += 2;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e50); }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.substr(peg$currPos, 2) === peg$c34) {\n                  s0 = peg$c34;\n                  peg$currPos += 2;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e51); }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e44); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsebckarrowtoken() {\n    var s0, s1;\n\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 2) === peg$c35) {\n      s0 = peg$c35;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e53); }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 3) === peg$c36) {\n        s0 = peg$c36;\n        peg$currPos += 3;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e54); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c37) {\n          s0 = peg$c37;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e55); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c38) {\n            s0 = peg$c38;\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e56); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c39) {\n              s0 = peg$c39;\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e57); }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e52); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsenote() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (input.charCodeAt(peg$currPos) === 35) {\n      s2 = peg$c40;\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e58); }\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = [];\n      s4 = peg$parseslcomtok();\n      while (s4 !== peg$FAILED) {\n        s3.push(s4);\n        s4 = peg$parseslcomtok();\n      }\n      peg$savedPos = s0;\n      s0 = peg$f29(s3);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsepositive_number() {\n    var s0;\n\n    s0 = peg$parsepositive_real();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsecardinal();\n    }\n\n    return s0;\n  }\n\n  function peg$parsepositive_real() {\n    var s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parsecardinal();\n    if (s2 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 46) {\n        s3 = peg$c41;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e59); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parsecardinal();\n        if (s4 !== peg$FAILED) {\n          s2 = [s2, s3, s4];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f30(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsecardinal() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = input.charAt(peg$currPos);\n    if (peg$r0.test(s2)) {\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e60); }\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = input.charAt(peg$currPos);\n        if (peg$r0.test(s2)) {\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e60); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f31(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsetransitionstring() {\n    var s0;\n\n    s0 = peg$parsequotedstring();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseunquotedtransitionstring();\n    }\n\n    return s0;\n  }\n\n  function peg$parsestring() {\n    var s0;\n\n    s0 = peg$parsequotedstring();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseunquotedstring();\n    }\n\n    return s0;\n  }\n\n  function peg$parsequotedstring() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c42;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsestringcontent();\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f32(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e61); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsestringcontent() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s3 = peg$c42;\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c43) {\n        s3 = peg$c43;\n        peg$currPos += 2;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e63); }\n      }\n      if (s3 === peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e64); }\n        }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f33(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c43) {\n          s3 = peg$c43;\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e63); }\n        }\n        if (s3 === peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e64); }\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f33(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseclass_string() {\n    var s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c42;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseclass_stringcontent();\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f34(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e65); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseclass_stringcontent() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s3 = peg$c42;\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e62); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = input.charAt(peg$currPos);\n      if (peg$r1.test(s3)) {\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e66); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f35(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s3 = peg$c42;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e62); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = input.charAt(peg$currPos);\n        if (peg$r1.test(s3)) {\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e66); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f35(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseunquotedtransitionstring() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parsetransitionnonsep();\n    peg$savedPos = s0;\n    s1 = peg$f36(s1);\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseunquotedstring() {\n    var s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parsenonsep();\n    peg$savedPos = s0;\n    s1 = peg$f37(s1);\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsenonsep() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    s3 = input.charAt(peg$currPos);\n    if (peg$r2.test(s3)) {\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e67); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e64); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f38(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      s3 = input.charAt(peg$currPos);\n      if (peg$r2.test(s3)) {\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e67); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e64); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f38(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsetransitionnonsep() {\n    var s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    peg$silentFails++;\n    s3 = input.charAt(peg$currPos);\n    if (peg$r3.test(s3)) {\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e68); }\n    }\n    peg$silentFails--;\n    if (s3 === peg$FAILED) {\n      s2 = undefined;\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e64); }\n      }\n      if (s3 !== peg$FAILED) {\n        peg$savedPos = s1;\n        s1 = peg$f39(s3);\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$currPos;\n      s2 = peg$currPos;\n      peg$silentFails++;\n      s3 = input.charAt(peg$currPos);\n      if (peg$r3.test(s3)) {\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e68); }\n      }\n      peg$silentFails--;\n      if (s3 === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e64); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s1;\n          s1 = peg$f39(s3);\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseidentifier() {\n    var s0, s1, s2;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = input.charAt(peg$currPos);\n    if (peg$r4.test(s2)) {\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e70); }\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = input.charAt(peg$currPos);\n        if (peg$r4.test(s2)) {\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e70); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f40(s1);\n    }\n    s0 = s1;\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsequotedstring();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e69); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsewhitespace() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = input.charAt(peg$currPos);\n    if (peg$r5.test(s0)) {\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e72); }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e71); }\n    }\n\n    return s0;\n  }\n\n  function peg$parselineend() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = input.charAt(peg$currPos);\n    if (peg$r6.test(s0)) {\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e74); }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e73); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomstart() {\n    var s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c44) {\n      s0 = peg$c44;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e75); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomend() {\n    var s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c45) {\n      s0 = peg$c45;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e76); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomtok() {\n    var s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    peg$silentFails++;\n    if (input.substr(peg$currPos, 2) === peg$c45) {\n      s2 = peg$c45;\n      peg$currPos += 2;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e76); }\n    }\n    peg$silentFails--;\n    if (s2 === peg$FAILED) {\n      s1 = undefined;\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s2 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e64); }\n      }\n      if (s2 !== peg$FAILED) {\n        s1 = [s1, s2];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsemlcomment() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsemlcomstart();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsemlcomtok();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsemlcomtok();\n      }\n      s3 = peg$parsemlcomend();\n      if (s3 !== peg$FAILED) {\n        s1 = [s1, s2, s3];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseslcomstart() {\n    var s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c46) {\n      s0 = peg$c46;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e77); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseslcomtok() {\n    var s0;\n\n    s0 = input.charAt(peg$currPos);\n    if (peg$r7.test(s0)) {\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e78); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseslcomment() {\n    var s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseslcomstart();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseslcomtok();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseslcomtok();\n      }\n      s1 = [s1, s2];\n      s0 = s1;\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecomment() {\n    var s0, s1;\n\n    peg$silentFails++;\n    s0 = peg$parseslcomment();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsemlcomment();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e79); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse_() {\n    var s0, s1;\n\n    s0 = [];\n    s1 = peg$parsewhitespace();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parselineend();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parsecomment();\n      }\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parsewhitespace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parselineend();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parsecomment();\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  if (options.peg$library) {\n    return /** @type {any} */ ({\n      peg$result,\n      peg$currPos,\n      peg$FAILED,\n      peg$maxFailExpected,\n      peg$maxFailPos\n    });\n  }\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nconst peg$allowedStartRules = [\n  \"program\"\n];\n\nexport {\n  peg$allowedStartRules as StartRules,\n  peg$SyntaxError as SyntaxError,\n  peg$parse as parse\n};\n", "import type { IStateMachine } from \"types/state-machine-cat.mjs\";\nimport { Counter } from \"../../counter.mjs\";\nimport { parse as pegParse } from \"./smcat-parser.mjs\";\n\nexport function parse(pScript: string): IStateMachine {\n  return pegParse(pScript, { counter: new Counter() });\n}\n", "/* eslint-disable security/detect-object-injection */\nimport fastxml from \"fast-xml-parser\";\nimport he from \"he\";\nimport traverse from \"neotraverse\";\nimport { Counter } from \"../../counter.mjs\";\nimport parserHelpers from \"../parser-helpers.mjs\";\nimport utl from \"../../transform/utl.mjs\";\nimport { castArray } from \"./utl.mjs\";\nimport { normalizeMachine } from \"./normalize-machine.mjs\";\n\nconst formatLabel = utl.formatLabel;\n\nfunction extractActions(pState, pActionType) {\n  return castArray(pState[pActionType]).map((pAction) => ({\n    type: pActionType === \"onexit\" ? \"exit\" : \"entry\",\n    body: he.decode(pAction).trim(),\n  }));\n}\n\nfunction extractActionsFromInvokes(pInvokeTriggers) {\n  return castArray(pInvokeTriggers).map((pInvokeTrigger) => {\n    const lId = he.decode(pInvokeTrigger.id || \"\").trim();\n\n    return {\n      type: \"activity\",\n      body: lId || he.decode(pInvokeTrigger || \"\").trim(),\n    };\n  });\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @returns {any[]}\n */\nfunction deriveActions(pState) {\n  let lReturnValue = [];\n\n  if (pState.onentry) {\n    lReturnValue = lReturnValue.concat(extractActions(pState, \"onentry\"));\n  }\n  if (pState.invoke) {\n    lReturnValue = lReturnValue.concat(\n      extractActionsFromInvokes(pState.invoke),\n    );\n  }\n  if (pState.onexit) {\n    lReturnValue = lReturnValue.concat(extractActions(pState, \"onexit\"));\n  }\n  return lReturnValue;\n}\n\n/**\n * @param {import(\"../../..\").StateType} pType\n * @param {import(\"./scxml\").ISCXMLHistoryState} pState\n * @param {any} pState\n * @returns {import(\"../../..\").StateType}\n */\nfunction deriveStateType(pType, pState) {\n  return pType === \"history\" && pState.type === \"deep\" ? \"deephistory\" : pType;\n}\n\n/**\n * @param {import(\"../../../types/state-machine-cat\").StateType} pType\n * @returns {(any) => import(\"../../..\").IState}\n */\nfunction mapState(pType) {\n  return (pState) => {\n    /** @type {import(\"../../../types/state-machine-cat\").IState} */\n    const lReturnValue = {\n      name: pState.id,\n      type: deriveStateType(pType, pState),\n    };\n\n    if (parserHelpers.getStateType(pState.id) !== lReturnValue.type) {\n      lReturnValue.typeExplicitlySet = true;\n    }\n    if (pState.onentry || pState.onexit || pState.invoke) {\n      lReturnValue.actions = deriveActions(pState);\n    }\n    if (\n      Object.keys(pState).some((pKey) =>\n        [\"initial\", \"state\", \"history\", \"parallel\", \"final\"].includes(pKey),\n      )\n    ) {\n      // recursion, so ...\n      // eslint-disable-next-line no-use-before-define\n      lReturnValue.statemachine = mapMachine(pState);\n    }\n    return lReturnValue;\n  };\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{event?: string; cond?: string; action?: string; type?: string;}}\n */\nfunction extractTransitionAttributesFromObject(pTransition) {\n  const lReturnValue = {};\n\n  if (pTransition.event) {\n    // SCXML uses spaces to distinguish multiple events\n    // the smcat ast uses linebreaks\n    lReturnValue.event = pTransition.event.split(/\\s+/).join(\"\\n\");\n  }\n  if (pTransition.cond) {\n    lReturnValue.cond = pTransition.cond;\n  }\n  if (pTransition[\"#text\"]) {\n    lReturnValue.action = he.decode(pTransition[\"#text\"]).trim();\n  }\n\n  if (pTransition.type) {\n    lReturnValue.type = pTransition.type;\n  }\n\n  return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{action?: string; label?: string;event?: string; cond?: string; type?: string}}\n */\nfunction extractTransitionAttributes(pTransition) {\n  const lReturnValue = {};\n\n  if (typeof pTransition === \"string\") {\n    lReturnValue.action = he.decode(pTransition).trim();\n  } else {\n    Object.assign(\n      lReturnValue,\n      extractTransitionAttributesFromObject(pTransition),\n    );\n  }\n\n  const lLabel = formatLabel(\n    lReturnValue.event,\n    lReturnValue.cond,\n    lReturnValue.action,\n  );\n\n  if (lLabel) {\n    lReturnValue.label = lLabel;\n  }\n\n  return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n */\nfunction reduceTransition(pState, pCounter) {\n  /**\n   * @param {import(\"./scxml\").ISCXMLTransition[]} pAllTransitions\n   * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n   * @returns {import(\"../../..\").ITransition}\n   */\n  return (pAllTransitions, pTransition) => {\n    // in SCXML spaces denote references to multiple states\n    // => split into multiple transitions\n    const lTargets = (pTransition?.target ?? pState.id).split(/\\s+/);\n    const lTransitionAttributes = extractTransitionAttributes(pTransition);\n\n    return pAllTransitions.concat(\n      lTargets.map((pTarget) => ({\n        id: pCounter.next(),\n        from: pState.id,\n        // a 'target-less transition' is typically\n        // a self-transition\n        to: pTarget,\n        ...lTransitionAttributes,\n      })),\n    );\n  };\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState[]} pStates\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n * @returns {import(\"../../../types/state-machine-cat\").ITransition[]}\n */\nfunction extractTransitions(pStates, pCounter) {\n  return pStates\n    .filter((pState) => Object.hasOwn(pState, \"transition\"))\n    .reduce((pAllTransitions, pThisState) => {\n      const lTransitionAsArray = castArray(pThisState.transition);\n      return pAllTransitions.concat(\n        lTransitionAsArray.reduce(reduceTransition(pThisState, pCounter), []),\n      );\n    }, []);\n}\n\n/**\n * @param {any} pSCXMLStateMachine\n * @returns {import(\"../../..\").IStateMachine}\n */\nfunction mapMachine(pSCXMLStateMachine) {\n  const lNormalizedMachine = normalizeMachine(pSCXMLStateMachine);\n  const lReturnValue = {\n    states: lNormalizedMachine.initial\n      .map(mapState(\"initial\"))\n      .concat(lNormalizedMachine.state.map(mapState(\"regular\")))\n      .concat(lNormalizedMachine.parallel.map(mapState(\"parallel\")))\n      .concat(lNormalizedMachine.history.map(mapState(\"history\")))\n      .concat(lNormalizedMachine.final.map(mapState(\"final\"))),\n  };\n  const lCounter = new Counter();\n\n  const lTransitions = extractTransitions(lNormalizedMachine.initial, lCounter)\n    .concat(extractTransitions(lNormalizedMachine.state, lCounter))\n    .concat(extractTransitions(lNormalizedMachine.parallel, lCounter));\n\n  if (lTransitions.length > 0) {\n    lReturnValue.transitions = lTransitions;\n  }\n\n  return lReturnValue;\n}\n\n/**\n * This funky looking replace  exists to make the output of the fast-xml-parser\n * backwards compatible with its version 3 that in case of conflicts between\n * attribute names and tag names gave preference to the attribute name (version 4\n * does the opposite). The previous behaviour was undocumented and for fast-xml-parser\n * likely a kind of edge case (normal people probably don't pass an empty attributeNamePrefix).\n *\n * @param {any} pObject\n * @param {string} pAttributeNamePrefix\n * @returns {any} the object, but\n * - with attributes that have the same name as tags in the same parent removed,\n * - attributes that don't have an equally named tag get their key renamed back\n *   to the one without the pAttributeNamePrefix\n */\nfunction deDuplicateAttributesAndTags(pObject, pAttributeNamePrefix) {\n  // - 'traverse' relies on the 'this' property a 'normal' function provides,\n  //   so this is not an arrow function.\n  // - while it looks iffy to have a map function without a return statement\n  //   it's canonical traverse use (as per https://github.com/ljharb/js-traverse/blob/v0.6.7/README.md)\n  // eslint-disable-next-line array-callback-return\n  return traverse(pObject).map(function deDuplicate() {\n    if (this.key?.startsWith(pAttributeNamePrefix)) {\n      const pUnPrefixedAttributeName = this.key.slice(\n        pAttributeNamePrefix.length,\n      );\n      if (this.parent.keys.includes(pUnPrefixedAttributeName)) {\n        this.remove();\n      } else {\n        this.parent.node[pUnPrefixedAttributeName] = this.node;\n        this.remove();\n      }\n    }\n  });\n}\n\n/**\n * Parses SCXML into a state machine AST.\n *\n * @param {string} pSCXMLString The SCXML to parse\n * @returns {import(\"../../../types/state-machine-cat\").IStateMachine} state machine AST\n */\nexport function parse(pSCXMLString) {\n  const lTrimmedSCXMLString = pSCXMLString.trim();\n  const lAttributeNamePrefix = \"@_\";\n  /** @type {import(\"./scxml\").ISCXMLAsJSON} */\n  let lXMLAsJSON = {};\n\n  const lXMLParser = new fastxml.XMLParser({\n    attributeNamePrefix: lAttributeNamePrefix,\n    ignoreAttributes: false,\n    parseTagValue: true,\n    processEntities: false,\n    tagValueProcessor: (_pTagName, pTagValue) => he.decode(pTagValue),\n    stopNodes: [\"*.onentry\", \"*.onexit\", \"*.transition\"],\n  });\n\n  try {\n    lXMLAsJSON = deDuplicateAttributesAndTags(\n      lXMLParser.parse(lTrimmedSCXMLString, true),\n      lAttributeNamePrefix,\n    );\n  } catch (pError) {\n    throw new Error(\"That doesn't look like valid xml ...\\n\");\n  }\n  return mapMachine(\n    lXMLAsJSON?.scxml ?? {\n      xmlns: \"http://www.w3.org/2005/07/scxml\",\n      version: \"1.0\",\n    },\n  );\n}\n", "// src/index.ts\nvar to_string = (obj) => Object.prototype.toString.call(obj);\nvar is_typed_array = (value) => ArrayBuffer.isView(value) && !(value instanceof DataView);\nvar is_date = (obj) => to_string(obj) === \"[object Date]\";\nvar is_regexp = (obj) => to_string(obj) === \"[object RegExp]\";\nvar is_error = (obj) => to_string(obj) === \"[object Error]\";\nvar is_boolean = (obj) => to_string(obj) === \"[object Boolean]\";\nvar is_number = (obj) => to_string(obj) === \"[object Number]\";\nvar is_string = (obj) => to_string(obj) === \"[object String]\";\nvar is_array = Array.isArray;\nvar gopd = Object.getOwnPropertyDescriptor;\nvar is_property_enumerable = Object.prototype.propertyIsEnumerable;\nvar get_own_property_symbols = Object.getOwnPropertySymbols;\nvar has_own_property = Object.prototype.hasOwnProperty;\nfunction own_enumerable_keys(obj) {\n  const res = Object.keys(obj);\n  const symbols = get_own_property_symbols(obj);\n  for (let i = 0; i < symbols.length; i++) {\n    if (is_property_enumerable.call(obj, symbols[i])) {\n      res.push(symbols[i]);\n    }\n  }\n  return res;\n}\nfunction is_writable(object, key) {\n  return !gopd(object, key)?.writable;\n}\nfunction copy(src, options) {\n  if (typeof src === \"object\" && src !== null) {\n    let dst;\n    if (is_array(src)) {\n      dst = [];\n    } else if (is_date(src)) {\n      dst = new Date(src.getTime ? src.getTime() : src);\n    } else if (is_regexp(src)) {\n      dst = new RegExp(src);\n    } else if (is_error(src)) {\n      dst = { message: src.message };\n    } else if (is_boolean(src) || is_number(src) || is_string(src)) {\n      dst = Object(src);\n    } else if (is_typed_array(src)) {\n      return src.slice();\n    } else {\n      dst = Object.create(Object.getPrototypeOf(src));\n    }\n    const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n    for (const key of iterator_function(src)) {\n      dst[key] = src[key];\n    }\n    return dst;\n  }\n  return src;\n}\nvar empty_null = {\n  includeSymbols: false,\n  immutable: false\n};\nfunction walk(root, cb, options = empty_null) {\n  const path = [];\n  const parents = [];\n  let alive = true;\n  const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n  const immutable = !!options.immutable;\n  return function walker(node_) {\n    const node = immutable ? copy(node_, options) : node_;\n    const modifiers = {};\n    let keep_going = true;\n    const state = {\n      node,\n      node_,\n      path: [].concat(path),\n      parent: parents[parents.length - 1],\n      parents,\n      key: path[path.length - 1],\n      isRoot: path.length === 0,\n      level: path.length,\n      circular: void 0,\n      isLeaf: false,\n      notLeaf: true,\n      notRoot: true,\n      isFirst: false,\n      isLast: false,\n      update: function(x, stopHere = false) {\n        if (!state.isRoot) {\n          state.parent.node[state.key] = x;\n        }\n        state.node = x;\n        if (stopHere) {\n          keep_going = false;\n        }\n      },\n      delete: function(stopHere) {\n        delete state.parent.node[state.key];\n        if (stopHere) {\n          keep_going = false;\n        }\n      },\n      remove: function(stopHere) {\n        if (is_array(state.parent.node)) {\n          state.parent.node.splice(state.key, 1);\n        } else {\n          delete state.parent.node[state.key];\n        }\n        if (stopHere) {\n          keep_going = false;\n        }\n      },\n      keys: null,\n      before: function(f) {\n        modifiers.before = f;\n      },\n      after: function(f) {\n        modifiers.after = f;\n      },\n      pre: function(f) {\n        modifiers.pre = f;\n      },\n      post: function(f) {\n        modifiers.post = f;\n      },\n      stop: function() {\n        alive = false;\n      },\n      block: function() {\n        keep_going = false;\n      }\n    };\n    if (!alive) {\n      return state;\n    }\n    function update_state() {\n      if (typeof state.node === \"object\" && state.node !== null) {\n        if (!state.keys || state.node_ !== state.node) {\n          state.keys = iterator_function(state.node);\n        }\n        state.isLeaf = state.keys.length === 0;\n        for (let i = 0; i < parents.length; i++) {\n          if (parents[i].node_ === node_) {\n            state.circular = parents[i];\n            break;\n          }\n        }\n      } else {\n        state.isLeaf = true;\n        state.keys = null;\n      }\n      state.notLeaf = !state.isLeaf;\n      state.notRoot = !state.isRoot;\n    }\n    update_state();\n    const ret = cb.call(state, state.node);\n    if (ret !== void 0 && state.update) {\n      state.update(ret);\n    }\n    if (modifiers.before) {\n      modifiers.before.call(state, state.node);\n    }\n    if (!keep_going) {\n      return state;\n    }\n    if (typeof state.node === \"object\" && state.node !== null && !state.circular) {\n      parents.push(state);\n      update_state();\n      for (const [index, key] of Object.entries(state.keys ?? [])) {\n        path.push(key);\n        if (modifiers.pre) {\n          modifiers.pre.call(state, state.node[key], key);\n        }\n        const child = walker(state.node[key]);\n        if (immutable && has_own_property.call(state.node, key) && !is_writable(state.node, key)) {\n          state.node[key] = child.node;\n        }\n        child.isLast = state.keys?.length ? +index === state.keys.length - 1 : false;\n        child.isFirst = +index === 0;\n        if (modifiers.post) {\n          modifiers.post.call(state, child);\n        }\n        path.pop();\n      }\n      parents.pop();\n    }\n    if (modifiers.after) {\n      modifiers.after.call(state, state.node);\n    }\n    return state;\n  }(root).node;\n}\nvar Traverse = class {\n  // ! Have to keep these public as legacy mode requires them\n  #value;\n  #options;\n  constructor(obj, options = empty_null) {\n    this.#value = obj;\n    this.#options = options;\n  }\n  /**\n   * Get the element at the array `path`.\n   */\n  get(paths) {\n    let node = this.#value;\n    for (let i = 0; node && i < paths.length; i++) {\n      const key = paths[i];\n      if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n        return void 0;\n      }\n      node = node[key];\n    }\n    return node;\n  }\n  /**\n   * Return whether the element at the array `path` exists.\n   */\n  has(paths) {\n    let node = this.#value;\n    for (let i = 0; node && i < paths.length; i++) {\n      const key = paths[i];\n      if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n        return false;\n      }\n      node = node[key];\n    }\n    return true;\n  }\n  /**\n   * Set the element at the array `path` to `value`.\n   */\n  set(path, value) {\n    let node = this.#value;\n    let i = 0;\n    for (i = 0; i < path.length - 1; i++) {\n      const key = path[i];\n      if (!has_own_property.call(node, key)) {\n        node[key] = {};\n      }\n      node = node[key];\n    }\n    node[path[i]] = value;\n    return value;\n  }\n  /**\n   * Execute `fn` for each node in the object and return a new object with the results of the walk. To update nodes in the result use `this.update(value)`.\n   */\n  map(cb) {\n    return walk(this.#value, cb, {\n      immutable: true,\n      includeSymbols: !!this.#options.includeSymbols\n    });\n  }\n  /**\n   * Execute `fn` for each node in the object but unlike `.map()`, when `this.update()` is called it updates the object in-place.\n   */\n  forEach(cb) {\n    this.#value = walk(this.#value, cb, this.#options);\n    return this.#value;\n  }\n  /**\n   * For each node in the object, perform a [left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function)) with the return value of `fn(acc, node)`.\n   *\n   * If `init` isn't specified, `init` is set to the root object for the first step and the root element is skipped.\n   */\n  reduce(cb, init) {\n    const skip = arguments.length === 1;\n    let acc = skip ? this.#value : init;\n    this.forEach(function(x) {\n      if (!this.isRoot || !skip) {\n        acc = cb.call(this, acc, x);\n      }\n    });\n    return acc;\n  }\n  /**\n   * Return an `Array` of every possible non-cyclic path in the object.\n   * Paths are `Array`s of string keys.\n   */\n  paths() {\n    const acc = [];\n    this.forEach(function() {\n      acc.push(this.path);\n    });\n    return acc;\n  }\n  /**\n   * Return an `Array` of every node in the object.\n   */\n  nodes() {\n    const acc = [];\n    this.forEach(function() {\n      acc.push(this.node);\n    });\n    return acc;\n  }\n  /**\n   * Create a deep clone of the object.\n   */\n  clone() {\n    const parents = [];\n    const nodes = [];\n    const options = this.#options;\n    if (is_typed_array(this.#value)) {\n      return this.#value.slice();\n    }\n    return function clone(src) {\n      for (let i = 0; i < parents.length; i++) {\n        if (parents[i] === src) {\n          return nodes[i];\n        }\n      }\n      if (typeof src === \"object\" && src !== null) {\n        const dst = copy(src, options);\n        parents.push(src);\n        nodes.push(dst);\n        const iteratorFunction = options.includeSymbols ? own_enumerable_keys : Object.keys;\n        for (const key of iteratorFunction(src)) {\n          dst[key] = clone(src[key]);\n        }\n        parents.pop();\n        nodes.pop();\n        return dst;\n      }\n      return src;\n    }(this.#value);\n  }\n};\nvar traverse = (obj, options) => {\n  return new Traverse(obj, options);\n};\ntraverse.get = (obj, paths, options) => {\n  return new Traverse(obj, options).get(paths);\n};\ntraverse.set = (obj, path, value, options) => {\n  return new Traverse(obj, options).set(path, value);\n};\ntraverse.has = (obj, paths, options) => {\n  return new Traverse(obj, options).has(paths);\n};\ntraverse.map = (obj, cb, options) => {\n  return new Traverse(obj, options).map(cb);\n};\ntraverse.forEach = (obj, cb, options) => {\n  return new Traverse(obj, options).forEach(cb);\n};\ntraverse.reduce = (obj, cb, init, options) => {\n  return new Traverse(obj, options).reduce(cb, init);\n};\ntraverse.paths = (obj, options) => {\n  return new Traverse(obj, options).paths();\n};\ntraverse.nodes = (obj, options) => {\n  return new Traverse(obj, options).nodes();\n};\ntraverse.clone = (obj, options) => {\n  return new Traverse(obj, options).clone();\n};\nvar src_default = traverse;\nexport {\n  Traverse,\n  src_default as default\n};\n", "function formatLabel(\n  pEvent?: string,\n  pCond?: string,\n  pActions?: string,\n): string {\n  let lReturnValue = \"\";\n\n  if (pEvent) {\n    lReturnValue += pEvent;\n  }\n  if (pCond) {\n    lReturnValue += ` [${pCond}]`;\n  }\n  if (pActions) {\n    lReturnValue += `/ ${pActions}`;\n  }\n  return lReturnValue.trim();\n}\n\nexport default {\n  formatLabel,\n};\n", "export function castArray(pAThing: unknown): Array {\n  return Array.isArray(pAThing) ? pAThing : [pAThing];\n}\n", "import { castArray } from \"./utl.mjs\";\nimport type { INormalizedSCXMLMachine, ISCXMLInitialState } from \"./scxml.js\";\n\nfunction normalizeInitialFromObject(\n  pInitialObject: Partial,\n  pId: string,\n): ISCXMLInitialState {\n  const lReturnValue = {\n    // ensure the 'initial' state has a unique name\n    id: pId ? `${pId}.initial` : \"initial\",\n  };\n\n  if (pInitialObject.transition) {\n    Object.assign(lReturnValue, {\n      transition: [pInitialObject.transition],\n    });\n  }\n\n  return lReturnValue;\n}\n\nfunction normalizeInitialFromString(pString: string): ISCXMLInitialState {\n  return {\n    id: \"initial\",\n    transition: [\n      {\n        target: pString,\n      },\n    ],\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalizeInitial(pMachine: any): ISCXMLInitialState[] {\n  const lReturnValue = [];\n\n  if (pMachine.initial) {\n    if (typeof pMachine.initial === \"string\") {\n      lReturnValue.push(normalizeInitialFromString(pMachine.initial));\n    } else {\n      lReturnValue.push(\n        normalizeInitialFromObject(pMachine.initial, pMachine.id),\n      );\n    }\n  }\n  return lReturnValue;\n}\n\n/**\n * Massages SCXML-as-json to be uniform:\n *\n * @param pMachine SCXML-as-json state machine\n * @returns Still an SCXML-as-json state machine,\n * but more consistent and easier to use\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nexport function normalizeMachine(pMachine: any): INormalizedSCXMLMachine {\n  return {\n    ...pMachine,\n    initial: normalizeInitial(pMachine),\n    state: castArray(pMachine?.state ?? []),\n    parallel: castArray(pMachine?.parallel ?? []),\n    history: castArray(pMachine?.history ?? []),\n    final: castArray(pMachine?.final ?? []),\n  };\n}\n", "export default {\n  $schema: \"http://json-schema.org/draft-07/schema#\",\n  title: \"state-machine-cat abstract syntax tree schema\",\n  $ref: \"#/definitions/StateMachineType\",\n  $id: \"org.js.state-machine-cat/v7.4.0\",\n  definitions: {\n    StateType: {\n      type: \"string\",\n      enum: [\n        \"regular\",\n        \"initial\",\n        \"terminate\",\n        \"final\",\n        \"parallel\",\n        \"history\",\n        \"deephistory\",\n        \"choice\",\n        \"forkjoin\",\n        \"fork\",\n        \"join\",\n        \"junction\",\n      ],\n    },\n    TransitionType: {\n      type: \"string\",\n      enum: [\"internal\", \"external\"],\n    },\n    NoteType: {\n      type: \"array\",\n      items: {\n        type: \"string\",\n      },\n    },\n    ActionTypeType: {\n      type: \"string\",\n      enum: [\"entry\", \"activity\", \"exit\"],\n    },\n    ActionType: {\n      type: \"object\",\n      required: [\"type\", \"body\"],\n      additionalProperties: false,\n      properties: {\n        type: { $ref: \"#/definitions/ActionTypeType\" },\n        body: { type: \"string\" },\n      },\n    },\n    ClassType: {\n      type: \"string\",\n      pattern: \"^[a-zA-Z0-9_\\\\- ]*$\",\n    },\n    StateMachineType: {\n      type: \"object\",\n      additionalProperties: false,\n      required: [\"states\"],\n      properties: {\n        states: {\n          type: \"array\",\n          items: {\n            type: \"object\",\n            required: [\"name\", \"type\"],\n            additionalProperties: false,\n            properties: {\n              name: {\n                description:\n                  \"The name and identifier of the state. Unique within the root state machine.\",\n                type: \"string\",\n              },\n              type: {\n                description:\n                  \"What kind of state (or pseudo state) this state is. E.g. 'regular' for normal states or 'initial', 'final', 'choice' etc for pseudo states. Most UML (pseudo-) states are supported.\",\n                $ref: \"#/definitions/StateType\",\n              },\n              label: {\n                description:\n                  \"The display label of the state. If it's not present, most renderers will use the states' name in stead.\",\n                type: \"string\",\n              },\n              color: {\n                description:\n                  'Color to use for rendering the state. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n                type: \"string\",\n              },\n              class: {\n                description:\n                  \"Class name to give the state in dot and svg output.\",\n                $ref: \"#/definitions/ClassType\",\n              },\n              active: {\n                description:\n                  \"If true the state is considered to be active and rendered as such.\",\n                type: \"boolean\",\n              },\n              typeExplicitlySet: {\n                description:\n                  \"The default parser derives the `type` from the `name` with inband signaling. The user can override that behavior by explicitly setting the `type`. This attribute is there to express that (and make sure that on next parses & processing it doesn't get accidentily re-derived from the name again).\",\n                type: \"boolean\",\n              },\n              isComposite: {\n                description:\n                  \"convenience, derived attribute - set to true if there's a state machine inside the state; false in all other cases. For internal use - @deprecated\",\n                type: \"boolean\",\n              },\n              actions: {\n                type: \"array\",\n                description:\n                  \"A series of actions and their types. The type describe when the action takes place (on entry, exit, or otherwise ('activity'))\",\n                items: { $ref: \"#/definitions/ActionType\" },\n              },\n              note: {\n                description:\n                  \"Comments related to this state. Some renderers will use the note attribute to render a note (i.e. as a post-it) attached to the state.\",\n                $ref: \"#/definitions/NoteType\",\n              },\n              statemachine: {\n                description: \"state machine nested within the state.\",\n                $ref: \"#/definitions/StateMachineType\",\n              },\n            },\n          },\n        },\n        transitions: {\n          type: \"array\",\n          items: {\n            type: \"object\",\n            required: [\"id\", \"from\", \"to\"],\n            additionalProperties: false,\n            properties: {\n              id: {\n                type: \"number\",\n              },\n              from: {\n                description:\n                  \"The name of the state this transition transitions from\",\n                type: \"string\",\n              },\n              to: {\n                description:\n                  \"The name of the state this transition transitions to\",\n                type: \"string\",\n              },\n              label: {\n                description:\n                  \"A display label to represent this transition. Parsers can parse this label into events conditions and actions.\",\n                type: \"string\",\n              },\n              event: {\n                description: \"Event triggering the transition\",\n                type: \"string\",\n              },\n              cond: {\n                description: \"Condition for the transition to occur.\",\n                type: \"string\",\n              },\n              action: {\n                description: \"Action to execute when the transition occurs.\",\n                type: \"string\",\n              },\n              note: {\n                description: \"Comments related to this transition\",\n                $ref: \"#/definitions/NoteType\",\n              },\n              color: {\n                description:\n                  'Color to use for rendering the transition. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n                type: \"string\",\n              },\n              width: {\n                description:\n                  \"The line width to use for rendering the transition\",\n                type: \"number\",\n                minimum: 0,\n                maximum: 30,\n              },\n              class: {\n                description:\n                  \"Class name to give the state in dot and svg output.\",\n                $ref: \"#/definitions/ClassType\",\n              },\n              type: {\n                description:\n                  \"Whether the transition is external (default) or internal. See https://www.w3.org/TR/scxml/#transition for details.\",\n                $ref: \"#/definitions/TransitionType\",\n              },\n            },\n          },\n        },\n      },\n    },\n  },\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n  IStateMachine,\n  ITransition,\n  StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\nimport { Counter } from \"../counter.mjs\";\nimport utl from \"./utl.mjs\";\n\ntype ITransitionMap = {\n  [stateName: string]: ITransition[];\n};\n\nfunction fuseTransitionAttribute(\n  pIncomingThing: string | undefined,\n  pOutgoingThing: string,\n  pJoinChar: string,\n): string {\n  return pIncomingThing\n    ? `${pIncomingThing}${pJoinChar}${pOutgoingThing}`\n    : pOutgoingThing;\n}\n\nfunction fuseIncomingToOutgoing(\n  pIncomingTransition: ITransition,\n  pOutgoingTransition: ITransition,\n  pCounter: Counter,\n): ITransition {\n  // in:\n  // a => ]: event [condition]/ action;\n  // ] => b: event_to_b [condition_to_b]/ action to b;\n  //\n  // out:\n  // a => b: event [condition]/ action\\naction to b;\n  //\n  // events and conditions are illegal on transitions outgoing\n  // from forks, so we ignore them\n  const lReturnValue = {\n    ...pIncomingTransition,\n    ...pOutgoingTransition,\n    from: pIncomingTransition.from,\n    to: pOutgoingTransition.to,\n    id: pCounter.next(),\n  };\n\n  if (pOutgoingTransition.action) {\n    lReturnValue.action = fuseTransitionAttribute(\n      pIncomingTransition.action,\n      pOutgoingTransition.action,\n      \"\\n\",\n    );\n  }\n  if (lReturnValue.event || lReturnValue.cond || lReturnValue.action) {\n    lReturnValue.label = utl.formatLabel(\n      lReturnValue.event,\n      lReturnValue.cond,\n      lReturnValue.action,\n    );\n  }\n\n  return lReturnValue;\n}\n\nfunction fuseTransitions(\n  pTransitions: ITransition[],\n  pPseudoStateNames: string[],\n  pOutgoingTransitionMap: ITransitionMap,\n  pCounter: Counter,\n): ITransition[] {\n  return pTransitions.reduce(\n    (pAll: ITransition[], pTransition: ITransition) => {\n      pPseudoStateNames.forEach((pStateName, pIndex) => {\n        if (\n          pStateName === pTransition.to &&\n          pOutgoingTransitionMap[pStateName]\n        ) {\n          pAll = pAll.concat(\n            pOutgoingTransitionMap[pStateName].map((pOutgoingTransition) =>\n              fuseIncomingToOutgoing(\n                pTransition,\n                pOutgoingTransition,\n                pCounter,\n              ),\n            ),\n          );\n        } else {\n          pAll = pIndex === 0 ? pAll.concat(pTransition) : pAll;\n        }\n      });\n      return pAll;\n    },\n    [],\n  );\n}\n\nfunction deSugarPseudoStates(\n  pMachine: IStateMachine,\n  pPseudoStateNames: string[],\n  pOutgoingTransitionMap: ITransitionMap,\n  pCounter: Counter,\n): IStateMachine {\n  const lMachine = structuredClone(pMachine);\n\n  if (lMachine.transitions && pPseudoStateNames.length > 0) {\n    lMachine.transitions = fuseTransitions(\n      lMachine.transitions,\n      pPseudoStateNames,\n      pOutgoingTransitionMap,\n      pCounter,\n    );\n  }\n\n  lMachine.states = lMachine.states.map((pState) =>\n    pState.statemachine\n      ? {\n          ...pState,\n          statemachine: deSugarPseudoStates(\n            pState.statemachine,\n            pPseudoStateNames,\n            pOutgoingTransitionMap,\n            pCounter,\n          ),\n        }\n      : pState,\n  );\n\n  return lMachine;\n}\n\nfunction removeStatesCascading(\n  pMachine: IStateMachine,\n  pStateNames: string[],\n): IStateMachine {\n  const lMachine = structuredClone(pMachine);\n\n  if (lMachine.transitions) {\n    lMachine.transitions = lMachine.transitions.filter(\n      (pTransition) =>\n        !pStateNames.some(\n          (pJunctionStateName) =>\n            pJunctionStateName === pTransition.from ||\n            pJunctionStateName === pTransition.to,\n        ),\n    );\n  }\n\n  lMachine.states = lMachine.states\n    .filter((pState) => !pStateNames.includes(pState.name))\n    .map((pState) =>\n      pState.statemachine\n        ? {\n            ...pState,\n            statemachine: removeStatesCascading(\n              pState.statemachine,\n              pStateNames,\n            ),\n          }\n        : pState,\n    );\n  return lMachine;\n}\n\n/**\n * Takes a state machine and replaces all forks with transitions from its\n * respective inputs and outputs\n *\n * e.g.\n * ```smcat\n * a => ];\n * b => ];\n * ] => c;\n * ] => d;\n * ```\n *\n * will become\n * ```smcat\n * a => c;\n * a => d;\n * b => c;\n * b => d;\n * ```\n */\nexport default (\n  pMachine: IStateMachine,\n  pDesugarableStates: StateType[] = [\"fork\", \"junction\", \"choice\"],\n): IStateMachine => {\n  const lModel = new StateMachineModel(pMachine);\n\n  const lPseudoStateNames = lModel\n    .findStatesByTypes(pDesugarableStates)\n    .map(({ name }) => name);\n\n  const lOutgoingTransitionMap: ITransitionMap = lPseudoStateNames.reduce(\n    (pAll, pStateName) => {\n      pAll[pStateName] = lModel.findTransitionsByFrom(pStateName);\n      return pAll;\n    },\n    {},\n  );\n  const lMaximumTransitionId = lModel.getMaximumTransitionId();\n\n  const lMachine = deSugarPseudoStates(\n    pMachine,\n    lPseudoStateNames,\n    lOutgoingTransitionMap,\n    new Counter(lMaximumTransitionId),\n  );\n\n  return removeStatesCascading(lMachine, lPseudoStateNames);\n};\n", "import type {\n  IActionType,\n  IState,\n  IStateMachine,\n  IRenderOptions,\n  ITransition,\n} from \"../../types/state-machine-cat.mjs\";\n\nconst NAME_QUOTABLE = /[;,{[ ]/;\nconst ACTIONS_QUOTABLE = /[;,{}]/;\nconst LABEL_QUOTABLE = /[;{]/;\n\nconst RENDERABLE_STATE_ATTRIBUTES = [\n  \"label\",\n  \"type\",\n  \"color\",\n  \"active\",\n  \"class\",\n];\n\nconst RENDERABLE_TRANSITION_ATTRIBUTES = [\"type\", \"color\", \"class\"];\n\nfunction quoteIfNecessary(pRegExp: RegExp, pString: string): string {\n  return pRegExp.test(pString) ? `\"${pString}\"` : pString;\n}\n\nfunction stateHasExtendedAttributes(pState: IState): boolean {\n  return (\n    Object.hasOwn(pState, \"label\") ||\n    Object.hasOwn(pState, \"typeExplicitlySet\") ||\n    Object.hasOwn(pState, \"color\") ||\n    Object.hasOwn(pState, \"active\") ||\n    Object.hasOwn(pState, \"class\")\n  );\n}\n\nfunction note(pNote: string[], pIndent: string = \"\"): string {\n  return pNote.map((pNoteLine) => `${pIndent}# ${pNoteLine}`).join(\"\\n\");\n}\n\nfunction extendedAttribute(pKey: string, pValue: string): string {\n  if (pKey === \"type\") {\n    // looks a lot like the default return, but this guy's without quotes\n    return `${pKey}=${pValue}`;\n  }\n  if (pKey === \"active\") {\n    return pValue ? pKey : \"\";\n  }\n  return `${pKey}=\"${pValue}\"`;\n}\n\nfunction extendedStateAttributes(pState: IState): string {\n  return Object.entries(pState)\n    .filter(([pKey]) => RENDERABLE_STATE_ATTRIBUTES.includes(pKey))\n    .filter(([pKey]) => pKey !== \"type\" || pState.typeExplicitlySet)\n    .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n    .join(\" \");\n}\n\nfunction actions(pActions: IActionType[]): string {\n  return pActions\n    .map(\n      (pAction) =>\n        `${pAction.type === \"activity\" ? \"\" : `${pAction.type}/ `}${pAction.body}`,\n    )\n    .map((pAction) => quoteIfNecessary(ACTIONS_QUOTABLE, pAction))\n    .join(\"\\n    \");\n}\n\nfunction state(pState: IState, pIndent: string = \"\"): string {\n  let lReturnValue = pIndent + quoteIfNecessary(NAME_QUOTABLE, pState.name);\n  if (pState.note) {\n    lReturnValue = `${note(pState.note, pIndent)}\\n${lReturnValue}`;\n  }\n  if (stateHasExtendedAttributes(pState)) {\n    lReturnValue += ` [${extendedStateAttributes(pState)}]`;\n  }\n  if (pState.actions) {\n    lReturnValue += `: ${actions(pState.actions)}`;\n  }\n  if (pState.statemachine) {\n    lReturnValue += \" {\\n\";\n    // eslint-disable-next-line no-use-before-define\n    lReturnValue += renderSmcat(pState.statemachine, null, `${pIndent}    `);\n    lReturnValue += `${pIndent}}`;\n  }\n\n  return lReturnValue;\n}\n\nfunction states(pStates: IState[], pIndent: string = \"\"): string {\n  return pStates\n    .map((pState) => state(pState, pIndent))\n    .join(\",\\n\")\n    .concat(pStates.length > 0 ? \";\\n\\n\" : \"\");\n}\n\nfunction transitionHasExtendedAttributes(pTransition: ITransition): boolean {\n  return Object.entries(pTransition).some(([pKey]) =>\n    RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey),\n  );\n}\n\nfunction extendedTransitionAttributes(pTransition: ITransition): string {\n  return (\n    Object.entries(pTransition)\n      .filter(([pKey]) => RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey))\n      // lazily re-using the extendedStateAttribute function, even though it does\n      // a little more than necessary\n      .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n      .join(\" \")\n  );\n}\n\nfunction transition(pTransition: ITransition, pIndent: string = \"\"): string {\n  let lReturnValue = `${pIndent}${quoteIfNecessary(NAME_QUOTABLE, pTransition.from)} => ${quoteIfNecessary(\n    NAME_QUOTABLE,\n    pTransition.to,\n  )}`;\n  if (pTransition.note) {\n    lReturnValue = `${note(pTransition.note, pIndent)}\\n${lReturnValue}`;\n  }\n  if (transitionHasExtendedAttributes(pTransition)) {\n    lReturnValue += ` [${extendedTransitionAttributes(pTransition)}]`;\n  }\n  if (pTransition.label) {\n    lReturnValue += `: ${quoteIfNecessary(LABEL_QUOTABLE, pTransition.label)}`;\n  }\n  return lReturnValue;\n}\n\nfunction transitions(\n  pTransitions: ITransition[],\n  pIndent: string = \"\",\n): string {\n  return pTransitions\n    .map((pTransition) => `${transition(pTransition, pIndent)};\\n`)\n    .join(\"\");\n}\n\nexport default function renderSmcat(\n  pStateMachine: IStateMachine,\n  _pOptions: IRenderOptions | null = {},\n  pIndent: string = \"\",\n): string {\n  return (\n    states(pStateMachine.states, pIndent) +\n    transitions(pStateMachine.transitions || [], pIndent)\n  );\n}\n", "/* eslint-disable max-params */\n/* eslint-disable max-lines */\n/* eslint-disable no-use-before-define */\n/* eslint-disable complexity */\nimport he from \"he\";\nimport type {\n  IStateMachine,\n  IRenderOptions,\n  IState,\n  ITransition,\n  StateType,\n  IActionType,\n} from \"../../../types/state-machine-cat.mjs\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport {\n  buildGraphAttributes,\n  buildNodeAttributes,\n  buildEdgeAttributes,\n} from \"./attributebuilder.mjs\";\nimport {\n  escapeLabelString,\n  formatActionType,\n  getTransitionPorts,\n  isCompositeSelf,\n  isVertical,\n  type IStateNormalized,\n  noteToLabel,\n  normalizeState,\n  stateNote,\n} from \"./utl.mjs\";\n\nfunction initial(pState: IStateNormalized, pIndent: string): string {\n  const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n\n  return `${pIndent}  \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction regularStateActions(pActions: IActionType[], pIndent: string): string {\n  return pActions\n    .map((pAction) =>\n      he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n    )\n    .map((pActionString, pIndex) => {\n      let lReturnValue = `${pActionString}`;\n      if (pIndex === 0) {\n        lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\n// TODO: regularStateActions and compositeStateActions differ by the 'cellpadding' attribute\n// - would it hurt to add it to the composite, so we can have just one function?\n// - if not - parametrize?\nfunction compositeStateActions(\n pActions: IActionType[],\n pIndent: string,\n): string {\n return pActions\n .map((pAction) =>\n he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n )\n .map((pActionString, pIndex) => {\n let lReturnValue = `${pActionString}`;\n if (pIndex === 0) {\n lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\nfunction atomicRegular(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=1 style=rounded\" : \"\";\n // eslint-disable-next-line no-magic-numbers\n const lCellPadding = (pState.actions?.length ?? 0) > 0 ? 2 : 7;\n const lActions = regularStateActions(pState?.actions ?? [], pIndent);\n\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `\n${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n return `${pIndent} \"${pState.name}\" [margin=0 class=\"${pState.class}\" label= <${lLabelTag}\n${pIndent} >${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction compositeRegular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n // eslint-disable-next-line no-nested-ternary\n const lPenWidth = pState.isParallelArea\n ? \"1.0\"\n : pState.active\n ? \"3.0\"\n : \"2.0\";\n const lStyle = pState.isParallelArea ? \"dashed\" : \"rounded\";\n const lActions = compositeStateActions(pState?.actions ?? [], pIndent);\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n const lSelfTransitionHelperPoints = pModel\n .findExternalSelfTransitions(pState.name)\n .map(\n (pTransition) =>\n `${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [shape=point style=invis width=0 height=0 fixedsize=true]\\n`,\n )\n .join(\"\");\n\n return `${lSelfTransitionHelperPoints}${pIndent} subgraph \"cluster_${pState.name}\" {\n${pIndent} class=\"${pState.class}\" label= <\n${lLabelTag}\n${pIndent} > style=${lStyle} penwidth=${lPenWidth}${pState.colorAttribute}${pState.fontColorAttribute}\n${pIndent} \"${pState.name}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n${states(pState?.statemachine?.states ?? [], `${pIndent} `, pOptions, pModel, pRenderedTransitions)}\n${pIndent} }${pState.noteText}`;\n}\n\nfunction regular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n if (pState.statemachine) {\n return compositeRegular(pState, pIndent, pOptions, pModel, pRenderedTransitions);\n }\n return atomicRegular(pState, pIndent);\n}\n\nfunction history(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction deepHistory(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H*\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction choiceActions(pActions: IActionType[], pActive: boolean): string {\n return pActions\n .map((pAction) => {\n let lReturnValue = he.escape(\n `${formatActionType(pAction.type)}${pAction.body}`,\n );\n if (pActive) {\n lReturnValue = `${lReturnValue}`;\n }\n return lReturnValue;\n })\n .join(\"\\\\n\");\n}\n\nfunction choice(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lActions = choiceActions(\n pState?.actions ?? [],\n pState?.active ?? false,\n );\n const lLabelTag = lActions;\n const lDiamond = `${pIndent} \"${pState.name}\" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 label=\" \" class=\"${pState.class}\"${pState.colorAttribute}${lActiveAttribute}]`;\n const lLabelConstruct = `${pIndent} \"${pState.name}\" -> \"${pState.name}\" [color=\"#FFFFFF01\" fontcolor=\"${pState.color}\" class=\"${pState.class}\" label=<${lLabelTag}>]`;\n\n return `${lDiamond}\\n${lLabelConstruct}${pState.noteText}`;\n}\n\nfunction forkjoin(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n const lSizingExtras = isVertical(lDirection) ? \" height=0.1\" : \" width=0.1\";\n\n return `${pIndent} \"${pState.name}\" [shape=rect fixedsize=true label=\" \" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}${lSizingExtras}]${pState.noteText}`;\n}\n\nfunction junction(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n const lNote = stateNote(pState, pIndent);\n\n return `${pIndent} \"${pState.name}\" [shape=circle fixedsize=true height=0.15 label=\"\" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}]${lNote}`;\n}\n\nfunction terminate(pState: IStateNormalized, pIndent: string): string {\n const lLabelTag = `\n${pIndent} \n${pIndent} \n${pIndent} \n${pIndent}
X
${pState.label}
`;\n\n return `${pIndent} \"${pState.name}\" [label= <${lLabelTag}\n${pIndent} > class=\"${pState.class}\"]${pState.noteText}`;\n}\n\nfunction final(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 peripheries=2 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n// @ts-expect-error - TS is yapping about something that just works :shrug:\nconst STATE_TYPE2FUNCTION = new Map<\n StateType,\n (\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel?: StateMachineModel,\n ) => string\n>([\n [\"initial\", initial],\n [\"regular\", regular],\n [\"history\", history],\n [\"deephistory\", deepHistory],\n [\"choice\", choice],\n [\"fork\", forkjoin],\n [\"forkjoin\", forkjoin],\n [\"join\", forkjoin],\n [\"junction\", junction],\n [\"terminate\", terminate],\n [\"final\", final],\n // parallel\n]);\n\nfunction state(\n pState: IState,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n const lState = normalizeState(pState, pOptions, pIndent);\n const lCandidateTransitions = pModel.findTransitionsToSiblings(\n pState.name,\n pRenderedTransitions,\n );\n lCandidateTransitions.forEach((pTransition) => {\n pRenderedTransitions.add(pTransition.id);\n });\n const lTransitions = transitions(\n lCandidateTransitions,\n pIndent,\n pOptions,\n pModel,\n );\n\n return (\n // eslint-disable-next-line prefer-template\n (STATE_TYPE2FUNCTION.get(pState.type) ?? regular)(\n lState,\n pIndent,\n pOptions,\n pModel,\n pRenderedTransitions\n ) +\n lTransitions +\n \"\\n\"\n );\n}\n\nfunction states(\n pStates: IState[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n return pStates\n .map((pState) => state(pState, pIndent, pOptions, pModel, pRenderedTransitions))\n .join(\"\");\n}\n\n// eslint-disable-next-line max-statements, max-lines-per-function\nfunction transition(\n pTransition: ITransition,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n // TODO: should also be he.escape'd?\n const lLabel = `${escapeLabelString(pTransition.label ?? \" \")}`;\n // using a default color (`pTransition.color ?? \"black\"`) makes the output\n // look more consistent and easier to check, but it also blocks the 'inheritance'\n //\n const lColorAttribute = pTransition.color\n ? ` color=\"${pTransition.color}\"`\n : \"\";\n const lFontColorAttribute = pTransition.color\n ? ` fontcolor=\"${pTransition.color}\"`\n : \"\";\n const lPenWidth = pTransition.width ? ` penwidth=${pTransition.width}` : \"\";\n const lClass = pTransition.class\n ? // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type + \" \" : \" \"}${pTransition.class}`\n : // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type : \"\"}`;\n // for transitions to/ from composite states put the _cluster_ as the head\n // instead of the state itself\n const lTail = pModel.findStateByName(pTransition.from)?.statemachine\n ? ` ltail=\"cluster_${pTransition.from}\"`\n : \"\";\n const lHead = pModel.findStateByName(pTransition.to)?.statemachine\n ? ` lhead=\"cluster_${pTransition.to}\"`\n : \"\";\n const lTransitionName = `tr_${pTransition.from}_${pTransition.to}_${pTransition.id}`;\n\n if (isCompositeSelf(pModel, pTransition)) {\n // for self-transitions to/ from composite states ensure the transition leaves\n // and enters to/ from the right side of the state\n const { lTailPorts, lHeadPorts } = getTransitionPorts(\n pOptions,\n pModel,\n pTransition,\n );\n // as for composite self-transitions the transition is already split, we just\n // have to connect any note to that same split point\n let lNoteAndLine = \"\";\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lLineToNote = `\\n${pIndent} \"${lNoteName}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n lNoteAndLine = lLineToNote + lNote;\n }\n\n // the invisible 'self' node is declared with the state (so not here). If we\n // do it later than in the state the transition is guaranteed to look ugly.\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [label=\"${lLabel}\" arrowhead=none class=\"${lClass}\"${lTailPorts}${lTail}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" -> \"${pTransition.to}\" [class=\"${lClass}\"${lHead}${lHeadPorts}${lColorAttribute}${lPenWidth}]`;\n return lTransitionFrom + lTransitionTo + lNoteAndLine;\n }\n\n // to attach a note, split the transition in half, reconnect them via an\n // in-between point and connect the note to that in-between point as well\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lNoteNodeName = `i_${lNoteName}`;\n const lNoteNode = `\\n${pIndent} \"${lNoteNodeName}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]`;\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"${lNoteNodeName}\" [arrowhead=none${lTail}${lColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${pTransition.to}\" [label=\"${lLabel}\"${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lLineToNote = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n return lNoteNode + lTransitionFrom + lTransitionTo + lLineToNote + lNote;\n }\n\n return `\\n${pIndent} \"${pTransition.from}\" -> \"${pTransition.to}\" [label=\"${lLabel}\" class=\"${lClass}\"${lTail}${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n}\n\nfunction transitions(\n pTransitions: ITransition[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n return pTransitions\n .map((pTransition) => transition(pTransition, pIndent, pOptions, pModel))\n .join(\"\");\n}\n\n// eslint-disable-next-line max-lines-per-function\nexport default function renderDot(\n pStateMachine: IStateMachine,\n pOptions: IRenderOptions = {},\n pIndent: string = \"\",\n): string {\n const lGraphAttributes = buildGraphAttributes(\n getOptionValue(pOptions, \"engine\") as string,\n getOptionValue(pOptions, \"direction\") as string,\n pOptions?.dotGraphAttrs || [],\n );\n const lNodeAttributes = buildNodeAttributes(pOptions.dotNodeAttrs || []);\n const lEdgeAttributes = buildEdgeAttributes(pOptions.dotEdgeAttrs || []);\n const lModel = new StateMachineModel(pStateMachine);\n const lRenderedTransitions:Set = new Set();\n const lStates = states(pStateMachine.states, pIndent, pOptions, lModel, lRenderedTransitions);\n // ideally, we render transitions together with the states. However, in graphviz\n // that only renders as we want to if we if the transition is _within_ the state.\n // In this guy 'a' is rendered within cluster_b, though\n // digraph {\n // a\n // subgraph \"cluster_b\" {\n // label=b\n // ba\n // ba -> a\n // }\n // }\n // This is documented and defined behavior in graphviz, so we will have to\n // work around that...\n // - one way is to render all transitions separately in one go which (accidentally)\n // did in the previous render engine. That is guaranteed to work, but\n // some transitions might look ugly (i.e. when attaching a note the note\n // and the intermediate node will be in the outer state)\n // - Another way would be to render the transitions in the most outer state of\n // the (to, from). This is a nice idea, but it's not guaranteed to work\n // because how the graphviz engine works. If there's a transition defined in\n // state A to substate BB of state B, it will only show up if BB is already\n // declared in the graph. If it's not, the transition will be ignored.\n // - The compromise we landed with is to\n // 1. Render transitions within a composite state if _both_ ends of the transition\n // are in that state (see the state function above). That means at least\n // comments on transitions for these will look a bit nicer.\n // 2. Render all other transitions separately (below)\n const lRemainingTransitions = transitions(\n lModel.flattenedTransitions.filter(\n (pTransition) => !lRenderedTransitions.has(pTransition.id),\n ),\n pIndent,\n pOptions,\n lModel,\n );\n\n return `digraph \"state transitions\" {\n ${lGraphAttributes}\n node [${lNodeAttributes}]\n edge [${lEdgeAttributes}]\n\n${lStates}${lRemainingTransitions}\n}\n`;\n}\n", "/* eslint-disable security/detect-object-injection */\ninterface INameValuePair {\n name: string;\n value: string | number;\n}\nconst GENERIC_GRAPH_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: '\"Helvetica\"' },\n { name: \"fontsize\", value: \"12\" },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst GRAPH_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n dot: [\n { name: \"splines\", value: \"true\" },\n { name: \"ordering\", value: \"out\" },\n { name: \"compound\", value: \"true\" },\n { name: \"overlap\", value: \"scale\" },\n { name: \"nodesep\", value: \"0.3\" },\n { name: \"ranksep\", value: \"0.1\" },\n ],\n fdp: [{ name: \"K\", value: \"0.9\" }],\n osage: [{ name: \"pack\", value: \"42\" }],\n neato: [{ name: \"epsilon\", value: \"0.9\" }],\n};\n\nconst DIRECTION_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n \"bottom-top\": [{ name: \"rankdir\", value: \"BT\" }],\n \"left-right\": [{ name: \"rankdir\", value: \"LR\" }],\n \"right-left\": [{ name: \"rankdir\", value: \"RL\" }],\n};\n\nconst NODE_ATTRIBUTES: INameValuePair[] = [\n { name: \"shape\", value: \"plaintext\" },\n { name: \"style\", value: \"filled\" },\n { name: \"fillcolor\", value: '\"#FFFFFF01\"' },\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 12 },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst EDGE_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 10 },\n];\n\nfunction toNameValueString(pAttribute: INameValuePair): string {\n return `${pAttribute.name}=${pAttribute.value}`;\n}\n\nexport function buildGraphAttributes(\n pEngine: string,\n pDirection: string,\n pDotGraphAttributes?: INameValuePair[],\n): string {\n return GENERIC_GRAPH_ATTRIBUTES.concat(GRAPH_ATTRIBUTES[pEngine] || [])\n .concat(DIRECTION_ATTRIBUTES[pDirection] || [])\n .concat(pDotGraphAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildNodeAttributes(\n pDotNodeAttributes?: INameValuePair[],\n): string {\n return NODE_ATTRIBUTES.concat(pDotNodeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildEdgeAttributes(\n pDotEdgeAttributes?: INameValuePair[],\n): string {\n return EDGE_ATTRIBUTES.concat(pDotEdgeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport default {\n buildGraphAttributes,\n buildNodeAttributes,\n buildEdgeAttributes,\n};\n", "import he from \"he\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport type {\n dotAttributesType,\n IRenderOptions,\n IState,\n ITransition,\n} from \"../../../types/state-machine-cat.mjs\";\nimport type StateMachineModel from \"../../state-machine-model.mjs\";\n\n// eslint-disable-next-line complexity\nfunction getStateColor(\n pState: IState,\n pNodeAttributes?: dotAttributesType,\n): string {\n const lNodeColor = (pNodeAttributes || []).find(\n (pAttribute) => pAttribute.name === \"color\",\n )?.value;\n\n if (\n lNodeColor &&\n !pState.color &&\n [\n \"initial\",\n \"fork\",\n \"join\",\n \"junction\",\n \"forkjoin\",\n \"terminate\",\n \"final\",\n ].includes(pState.type)\n ) {\n return lNodeColor;\n }\n return pState.color ?? \"black\";\n}\n\nexport function escapeString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \"\\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\"\\\\l\");\n}\n\nexport function escapeLabelString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \" \\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\" \\\\l\");\n}\n\n// TODO integrate this into the normalization\n\nexport function isVertical(pDirection: string): boolean {\n const lDirection = pDirection || \"top-down\";\n\n return lDirection === \"top-down\" || lDirection === \"bottom-top\";\n}\n\nexport function isCompositeSelf(\n pStateMachineModel: StateMachineModel,\n pTransition: ITransition,\n): boolean {\n return (\n pTransition.from === pTransition.to &&\n (pStateMachineModel.findStateByName(pTransition.from)?.statemachine ??\n false) &&\n pTransition.type !== \"internal\"\n );\n}\n\nexport interface IStateNormalized extends IState {\n colorAttribute: string;\n fontColorAttribute: string;\n class: string;\n label: string;\n noteText: string;\n isParallelArea: boolean;\n}\n\nexport function noteToLabel(pNote: string[]): string {\n return pNote.map(escapeString).join(\"\");\n}\n\nexport function stateNote(pState: IState, pIndent: string): string {\n if (pState.note) {\n const lNoteName = `note_${pState.name}`;\n let lReturnValue = `\\n${pIndent} \"${lNoteName}\" [color=black fontcolor=black label=\"${noteToLabel(pState.note)}\" shape=note fontsize=10 fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n lReturnValue += `\\n${pIndent} \"${pState.name}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none]`;\n\n return lReturnValue;\n }\n return \"\";\n}\n\n// eslint-disable-next-line complexity\nexport function normalizeState(\n pState: IState & Partial,\n pOptions: IRenderOptions,\n pIndent: string,\n): IStateNormalized {\n const lReturnValue = structuredClone(pState) as IStateNormalized;\n\n // TODO: this is kludgy\n // we use these in regular, composite and history states\n lReturnValue.colorAttribute = pState.color ? ` color=\"${pState.color}\"` : \"\";\n lReturnValue.fontColorAttribute = pState.color\n ? ` fontcolor=\"${pState.color}\"`\n : \"\";\n // we use these in initial, fork, join, junction, forkjoin, terminal and final states\n lReturnValue.color = getStateColor(pState, pOptions.dotNodeAttrs);\n\n lReturnValue.class = pState.class\n ? `state ${pState.type} ${pState.class}`\n : `state ${pState.type}`;\n lReturnValue.label = he.escape(pState.label ?? pState.name);\n lReturnValue.noteText = stateNote(pState, pIndent);\n if (\n !pState.isParallelArea &&\n pState.type === \"parallel\" &&\n (pState.statemachine?.states ?? []).length > 0\n ) {\n // @ts-expect-error as lReturnValue is a clone of pStates statemachine && states\n // are bound to exist on there as well.\n lReturnValue.statemachine.states = pState.statemachine.states.map(\n (pChildState) => ({\n ...pChildState,\n isParallelArea: pChildState.type === \"regular\",\n }),\n );\n }\n\n return lReturnValue;\n}\n\nexport function formatActionType(pString: string): string {\n return pString === \"activity\" ? \"\" : `${pString}/ `;\n}\n\nexport function getTransitionPorts(\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pTransition: ITransition,\n) {\n let lTailPorts = ' tailport=\"n\" headport=\"n\"';\n let lHeadPorts = ' tailport=\"n\"';\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n if (isVertical(lDirection)) {\n lTailPorts = ' tailport=\"e\" headport=\"e\"';\n lHeadPorts = ' tailport=\"w\"';\n } else if (pModel.findStateByName(pTransition.from)?.parent ?? false) {\n lTailPorts = ' tailport=\"n\" headport=\"n\"';\n lHeadPorts = ' tailport=\"s\"';\n }\n return { lTailPorts, lHeadPorts };\n}\n", "var un=ArrayBuffer,$=Uint8Array,$e=Uint16Array,cn=Int16Array;var Ve=Int32Array,cr=function(c,_,l){if($.prototype.slice)return $.prototype.slice.call(c,_,l);(_==null||_<0)&&(_=0),(l==null||l>c.length)&&(l=c.length);var s=new $(l-_);return s.set(c.subarray(_,l)),s},Ue=function(c,_,l,s){if($.prototype.fill)return $.prototype.fill.call(c,_,l,s);for((l==null||l<0)&&(l=0),(s==null||s>c.length)&&(s=c.length);lc.length)&&(s=c.length);l2046MB)\",\"invalid block type\",\"FSE accuracy too high\",\"match distance too far back\",\"unexpected EOF\"],V=function(c,_,l){var s=new Error(_||_n[c]);if(s.code=c,Error.captureStackTrace&&Error.captureStackTrace(s,V),!l)throw s;return s},Hr=function(c,_,l){for(var s=0,d=0;s>>0},dn=function(c,_){var l=c[0]|c[1]<<8|c[2]<<16;if(l==3126568&&c[3]==253){var s=c[4],d=s>>5&1,h=s>>2&1,p=s&3,E=s>>6;s&8&&V(0);var G=6-d,j=p==3?4:p,q=Hr(c,G,j);G+=j;var U=E?1<>3);K=J+(J>>3)*(c[5]&7)}K>2145386496&&V(1);var L=new $((_==1?H||K:_?0:K)+12);return L[0]=1,L[4]=4,L[8]=8,{b:G+U,y:0,l:0,d:q,w:_&&_!=1?_:L.subarray(12),e:K,o:new Ve(L.buffer,0,3),u:H,c:h,m:Math.min(131072,K)}}else if((l>>4|c[3]<<20)==25481893)return ln(c,4)+8;V(0)},Le=function(c){for(var _=0;1<<_<=c;++_);return _-1},He=function(c,_,l){var s=(_<<3)+4,d=(c[_]&15)+5;d>l&&V(3);for(var h=1<0;){var X=Le(p+1),W=s>>3,fe=(1<>(s&7)&fe,m=(1<m&&(C-=Q)),H[++E]=--C,C==-1?(p+=C,T[--q]=E):p-=C,!C)do{var ie=s>>3;G=(c[ie]|c[ie+1]<<8)>>(s&7)&3,s+=2,E+=G}while(G==3)}(E>255||p)&&V(0);for(var B=0,R=(h>>1)+(h>>3)+3,ae=h-1,ne=0;ne<=E;++ne){var Z=H[ne];if(Z<1){K[ne]=-Z;continue}for(j=0;j=q)}}for(B&&V(0),j=0;j>3,{b:d,s:T,n:te,t:J}]},vn=function(c,_){var l=0,s=-1,d=new $(292),h=c[_],p=d.subarray(0,256),E=d.subarray(256,268),G=new $e(d.buffer,268);if(h<128){var j=He(c,_+1,6),q=j[0],U=j[1];_+=h;var H=q<<3,K=c[_];K||V(0);for(var J=0,L=0,T=U.b,te=T,X=(++_<<3)-8+Le(K);X-=T,!(X>3;if(J+=(c[W]|c[W+1]<<8)>>(X&7)&(1<>3,L+=(c[W]|c[W+1]<<8)>>(X&7)&(1<255&&V(0)}else{for(s=h-127;l>4,p[l+1]=fe&15}++_}var C=0;for(l=0;l11&&V(0),C+=m&&1<0;--l){var ne=G[l];Ue(ae,l,ne,G[l-1]=ne+E[l]*(1<E&&U>3,K=(c[H]|c[H+1]<<8|c[H+2]<<16)>>(q&7);G=(G<>2,p=h<<1,E=h+p;je(c.subarray(s,s+=c[0]|c[1]<<8),_.subarray(0,h),l),je(c.subarray(s,s+=c[2]|c[3]<<8),_.subarray(h,p),l),je(c.subarray(s,s+=c[4]|c[5]<<8),_.subarray(p,E),l),je(c.subarray(s),_.subarray(E),l)},Bn=function(c,_,l){var s,d=_.b,h=c[d],p=h>>1&3;_.l=h&1;var E=h>>3|c[d+1]<<5|c[d+2]<<13,G=(d+=3)+E;if(p==1)return d>=c.length?void 0:(_.b=d+1,l?(Ue(l,c[d],_.y,_.y+=E),l):Ue(new $(E),c[d]));if(!(G>c.length)){if(p==0)return _.b=G,l?(l.set(c.subarray(d,G),_.y),_.y+=E,l):cr(c,d,G);if(p==2){var j=c[d],q=j&3,U=j>>2&3,H=j>>4,K=0,J=0;q<2?U&1?H|=c[++d]<<4|(U&2&&c[++d]<<12):H=j>>3:(J=U,U<2?(H|=(c[++d]&63)<<4,K=c[d]>>6|c[++d]<<2):U==2?(H|=c[++d]<<4|(c[++d]&3)<<12,K=c[d]>>2|c[++d]<<6):(H|=c[++d]<<4|(c[++d]&63)<<12,K=c[d]>>6|c[++d]<<2|c[++d]<<10)),++d;var L=l?l.subarray(_.y,_.y+_.m):new $(_.m),T=L.length-H;if(q==0)L.set(c.subarray(d,d+=H),T);else if(q==1)Ue(L,c[d++],T);else{var te=_.h;if(q==2){var X=vn(c,d);K+=d-(d=X[0]),_.h=te=X[1]}else te||V(0);(J?wn:je)(c.subarray(d,d+=K),L.subarray(T),te)}var W=c[d++];if(W){W==255?W=(c[d++]|c[d++]<<8)+32512:W>127&&(W=W-128<<8|c[d++]);var fe=c[d++];fe&3&&V(0);for(var C=[pn,yn,hn],m=2;m>-1;--m){var Q=fe>>(m<<1)+2&3;if(Q==1){var k=new $([0,0,c[d++]]);C[m]={s:k.subarray(2,3),n:k.subarray(0,1),t:new $e(k.buffer,0,1),b:0}}else Q==2?(s=He(c,d,9-(m&1)),d=s[0],C[m]=s[1]):Q==3&&(_.t||V(0),C[m]=_.t[m])}var ie=_.t=C,B=ie[0],R=ie[1],ae=ie[2],ne=c[G-1];ne||V(0);var Z=(G<<3)-8+Le(ne)-ae.b,I=Z>>3,A=0,Ie=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var xe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var Oe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var qe=1<>>(Z&7)&qe-1);I=(Z-=_r[Te])>>3;var he=mn[Te]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<<_r[Te])-1);I=(Z-=fr[Pe])>>3;var pe=En[Pe]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<>3,Ie=ae.t[Ie]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,Oe=B.t[Oe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,xe=R.t[xe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<3)_.o[2]=_.o[1],_.o[1]=_.o[0],_.o[0]=_e-=3;else{var Me=_e-(pe!=0);Me?(_e=Me==3?_.o[0]-1:_.o[Me],Me>1&&(_.o[2]=_.o[1]),_.o[1]=_.o[0],_.o[0]=_e):_e=_.o[0]}for(var m=0;mhe&&(Fe=he);for(var m=0;m{var c=typeof document<\"u\"?document.currentScript?.src:void 0;return function(_={}){var l,s=_,d,h,p=new Promise((e,r)=>{d=e,h=r}),E=!1,G=Object.assign({},s),j=\"./this.program\",q=(e,r)=>{throw r},U=\"\";function H(e){return U+e}var K,J,L=console.log.bind(console),T=console.error.bind(console);Object.assign(s,G),G=null;var te=s.wasmBinary,X,W=!1,fe;function C(e,r){e||pe(r)}var m,Q,k,ie,B,R,ae,ne;function Z(){var e=X.buffer;s.HEAP8=m=new Int8Array(e),s.HEAP16=k=new Int16Array(e),s.HEAPU8=Q=new Uint8Array(e),s.HEAPU16=ie=new Uint16Array(e),s.HEAP32=B=new Int32Array(e),s.HEAPU32=R=new Uint32Array(e),s.HEAPF32=ae=new Float32Array(e),s.HEAPF64=ne=new Float64Array(e)}var I=[],A=[],Ie=[],xe=!1;function Oe(){ke(I)}function Pe(){xe=!0,!s.noFSInit&&!n.initialized&&n.init(),n.ignorePermissions=!1,Ge.init(),ke(A)}function Qe(){ke(Ie)}function Te(e){A.unshift(e)}var me=0,be=null,we=null;function qe(e){return e}function _e(e){me++}function he(e){if(me--,me==0&&(be!==null&&(clearInterval(be),be=null),we)){var r=we;we=null,r()}}function pe(e){e=\"Aborted(\"+e+\")\",T(e),W=!0,e+=\". Build with -sASSERTIONS for more info.\";var r=new WebAssembly.RuntimeError(e);throw h(r),r}var Me=\"data:application/octet-stream;base64,\",Be=e=>e.startsWith(Me),Fe=e=>e.startsWith(\"file://\");function Je(){var e=\"graphvizlib.wasm\";return Be(e)?e:H(e)}var Ne;function dr(e){if(e==Ne&&te)return new Uint8Array(te);if(J)return J(e);throw\"both async and sync fetching of the wasm failed\"}function Vr(e){return te?Promise.resolve().then(()=>dr(e)):K(e).then(r=>new Uint8Array(r),()=>dr(e))}function vr(e,r,t){return Vr(e).then(o=>WebAssembly.instantiate(o,r)).then(t,o=>{T(`failed to asynchronously prepare wasm: ${o}`),pe(o)})}function qr(e,r,t,o){return!e&&typeof WebAssembly.instantiateStreaming==\"function\"&&!Be(r)&&!Fe(r)&&typeof fetch==\"function\"?fetch(r,{credentials:\"same-origin\"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(o,function(u){return T(`wasm streaming compile failed: ${u}`),T(\"falling back to ArrayBuffer instantiation\"),vr(r,t,o)})}):vr(r,t,o)}function Jr(){return{a:Jt}}function Nr(){function e(o,i){return z=o.exports,X=z.B,Z(),Te(z.C),he(\"wasm-instantiate\"),z}_e(\"wasm-instantiate\");function r(o){e(o.instance)}var t=Jr();return Ne??=Je(),qr(te,Ne,t,r).catch(h),{}}var O,N,kr={173064:(e,r)=>{var t=se(e),o=se(r);n.createPath(\"/\",S.dirname(t)),n.writeFile(S.join(\"/\",t),o)}};class Ar{name=\"ExitStatus\";constructor(r){this.message=`Program terminated with exit(${r})`,this.status=r}}var ke=e=>{for(;e.length>0;)e.shift()(s)};class et{constructor(r){this.excPtr=r,this.ptr=r-24}set_type(r){R[this.ptr+4>>2]=r}get_type(){return R[this.ptr+4>>2]}set_destructor(r){R[this.ptr+8>>2]=r}get_destructor(){return R[this.ptr+8>>2]}set_caught(r){r=r?1:0,m[this.ptr+12]=r}get_caught(){return m[this.ptr+12]!=0}set_rethrown(r){r=r?1:0,m[this.ptr+13]=r}get_rethrown(){return m[this.ptr+13]!=0}init(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)}set_adjusted_ptr(r){R[this.ptr+16>>2]=r}get_adjusted_ptr(){return R[this.ptr+16>>2]}}var hr=0,rt=0,tt=(e,r,t)=>{var o=new et(e);throw o.init(r,t),hr=e,rt++,hr},S={isAbs:e=>e.charAt(0)===\"/\",splitPath:e=>{var r=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return r.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,o=e.length-1;o>=0;o--){var i=e[o];i===\".\"?e.splice(o,1):i===\"..\"?(e.splice(o,1),t++):t&&(e.splice(o,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:e=>{var r=S.isAbs(e),t=e.substr(-1)===\"/\";return e=S.normalizeArray(e.split(\"/\").filter(o=>!!o),!r).join(\"/\"),!e&&!r&&(e=\".\"),e&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:e=>{var r=S.splitPath(e),t=r[0],o=r[1];return!t&&!o?\".\":(o&&(o=o.substr(0,o.length-1)),t+o)},basename:e=>{if(e===\"/\")return\"/\";e=S.normalize(e),e=e.replace(/\\/$/,\"\");var r=e.lastIndexOf(\"/\");return r===-1?e:e.substr(r+1)},join:(...e)=>S.normalize(e.join(\"/\")),join2:(e,r)=>S.normalize(e+\"/\"+r)},nt=()=>{if(typeof crypto==\"object\"&&typeof crypto.getRandomValues==\"function\")return e=>crypto.getRandomValues(e);pe(\"initRandomDevice\")},pr=e=>(pr=nt())(e),ge={resolve:(...e)=>{for(var r=\"\",t=!1,o=e.length-1;o>=-1&&!t;o--){var i=o>=0?e[o]:n.cwd();if(typeof i!=\"string\")throw new TypeError(\"Arguments to path.resolve must be strings\");if(!i)return\"\";r=i+\"/\"+r,t=S.isAbs(i)}return r=S.normalizeArray(r.split(\"/\").filter(a=>!!a),!t).join(\"/\"),(t?\"/\":\"\")+r||\".\"},relative:(e,r)=>{e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);function t(F){for(var b=0;b=0&&F[Y]===\"\";Y--);return b>Y?[]:F.slice(b,Y-b+1)}for(var o=t(e.split(\"/\")),i=t(r.split(\"/\")),a=Math.min(o.length,i.length),u=a,f=0;f{for(var o=r+t,i=r;e[i]&&!(i>=o);)++i;if(i-r>16&&e.buffer&&yr)return yr.decode(e.subarray(r,i));for(var a=\"\";r>10,56320|F&1023)}}return a},Ae=[],er=e=>{for(var r=0,t=0;t=55296&&o<=57343?(r+=4,++t):r+=3}return r},rr=(e,r,t,o)=>{if(!(o>0))return 0;for(var i=t,a=t+o-1,u=0;u=55296&&f<=57343){var v=e.charCodeAt(++u);f=65536+((f&1023)<<10)|v&1023}if(f<=127){if(t>=a)break;r[t++]=f}else if(f<=2047){if(t+1>=a)break;r[t++]=192|f>>6,r[t++]=128|f&63}else if(f<=65535){if(t+2>=a)break;r[t++]=224|f>>12,r[t++]=128|f>>6&63,r[t++]=128|f&63}else{if(t+3>=a)break;r[t++]=240|f>>18,r[t++]=128|f>>12&63,r[t++]=128|f>>6&63,r[t++]=128|f&63}}return r[t]=0,t-i};function tr(e,r,t){var o=t>0?t:er(e)+1,i=new Array(o),a=rr(e,i,0,i.length);return r&&(i.length=a),i}var ot=()=>{if(!Ae.length){var e=null;if(!e)return null;Ae=tr(e,!0)}return Ae.shift()},Ge={ttys:[],init(){},shutdown(){},register(e,r){Ge.ttys[e]={input:[],output:[],ops:r},n.registerDevice(e,Ge.stream_ops)},stream_ops:{open(e){var r=Ge.ttys[e.node.rdev];if(!r)throw new n.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,o,i){if(!e.tty||!e.tty.ops.get_char)throw new n.ErrnoError(60);for(var a=0,u=0;u0&&(L(Re(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){r===null||r===10?(T(Re(e.output)),e.output=[]):r!=0&&e.output.push(r)},fsync(e){e.output&&e.output.length>0&&(T(Re(e.output)),e.output=[])}}},it=(e,r)=>{Q.fill(0,e,e+r)},nr=(e,r)=>Math.ceil(e/r)*r,Er=e=>{e=nr(e,65536);var r=jr(65536,e);return r&&it(r,e),r},g={ops_table:null,mount(e){return g.createNode(null,\"/\",16895,0)},createNode(e,r,t,o){if(n.isBlkdev(t)||n.isFIFO(t))throw new n.ErrnoError(63);g.ops_table||={dir:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,lookup:g.node_ops.lookup,mknod:g.node_ops.mknod,rename:g.node_ops.rename,unlink:g.node_ops.unlink,rmdir:g.node_ops.rmdir,readdir:g.node_ops.readdir,symlink:g.node_ops.symlink},stream:{llseek:g.stream_ops.llseek}},file:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:{llseek:g.stream_ops.llseek,read:g.stream_ops.read,write:g.stream_ops.write,allocate:g.stream_ops.allocate,mmap:g.stream_ops.mmap,msync:g.stream_ops.msync}},link:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,readlink:g.node_ops.readlink},stream:{}},chrdev:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:n.chrdev_stream_ops}};var i=n.createNode(e,r,t,o);return n.isDir(i.mode)?(i.node_ops=g.ops_table.dir.node,i.stream_ops=g.ops_table.dir.stream,i.contents={}):n.isFile(i.mode)?(i.node_ops=g.ops_table.file.node,i.stream_ops=g.ops_table.file.stream,i.usedBytes=0,i.contents=null):n.isLink(i.mode)?(i.node_ops=g.ops_table.link.node,i.stream_ops=g.ops_table.link.stream):n.isChrdev(i.mode)&&(i.node_ops=g.ops_table.chrdev.node,i.stream_ops=g.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){var o=1024*1024;r=Math.max(r,t*(t>>0),t!=0&&(r=Math.max(r,256));var i=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,r){if(e.usedBytes!=r)if(r==0)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr(e){var r={};return r.dev=n.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,n.isDir(e.mode)?r.size=4096:n.isFile(e.mode)?r.size=e.usedBytes:n.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){r.mode!==void 0&&(e.mode=r.mode),r.timestamp!==void 0&&(e.timestamp=r.timestamp),r.size!==void 0&&g.resizeFileStorage(e,r.size)},lookup(e,r){throw g.doesNotExistError},mknod(e,r,t,o){return g.createNode(e,r,t,o)},rename(e,r,t){if(n.isDir(e.mode)){var o;try{o=n.lookupNode(r,t)}catch{}if(o)for(var i in o.contents)throw new n.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp},unlink(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir(e,r){var t=n.lookupNode(e,r);for(var o in t.contents)throw new n.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir(e){var r=[\".\",\"..\"];for(var t of Object.keys(e.contents))r.push(t);return r},symlink(e,r,t){var o=g.createNode(e,r,41471,0);return o.link=t,o},readlink(e){if(!n.isLink(e.mode))throw new n.ErrnoError(28);return e.link}},stream_ops:{read(e,r,t,o,i){var a=e.node.contents;if(i>=e.node.usedBytes)return 0;var u=Math.min(e.node.usedBytes-i,o);if(u>8&&a.subarray)r.set(a.subarray(i,i+u),t);else for(var f=0;f0||t+r{var i=o?\"\":`al ${e}`;K(e).then(a=>{r(new Uint8Array(a)),i&&he(i)},a=>{if(t)t();else throw`Loading data file \"${e}\" failed.`}),i&&_e(i)},st=(e,r,t,o,i,a)=>{n.createDataFile(e,r,t,o,i,a)},ut=[],ct=(e,r,t,o)=>{typeof Browser<\"u\"&&Browser.init();var i=!1;return ut.forEach(a=>{i||a.canHandle(r)&&(a.handle(e,r,t,o),i=!0)}),i},ft=(e,r,t,o,i,a,u,f,v,F)=>{var b=r?ge.resolve(S.join2(e,r)):e,Y=`cp ${b}`;function x(w){function M(ee){F?.(),f||st(e,r,ee,o,i,v),a?.(),he(Y)}ct(w,b,M,()=>{u?.(),he(Y)})||M(w)}_e(Y),typeof t==\"string\"?at(t,x,u):x(t)},_t=e=>{var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090},t=r[e];if(typeof t>\"u\")throw new Error(`Unknown file open mode: ${e}`);return t},or=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},n={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,ErrnoError:class{name=\"ErrnoError\";constructor(e){this.errno=e}},filesystems:null,syncFSRequests:0,FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,o){e||(e=this),this.parent=e,this.mount=e.mount,this.id=n.nextInode++,this.name=r,this.mode=t,this.rdev=o}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return n.isDir(this.mode)}get isDevice(){return n.isChrdev(this.mode)}},lookupPath(e,r={}){if(e=ge.resolve(e),!e)return{path:\"\",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new n.ErrnoError(32);for(var o=e.split(\"/\").filter(Y=>!!Y),i=n.root,a=\"/\",u=0;u40)throw new n.ErrnoError(32)}}return{path:a,node:i}},getPath(e){for(var r;;){if(n.isRoot(e)){var t=e.mount.mountpoint;return r?t[t.length-1]!==\"/\"?`${t}/${r}`:t+r:t}r=r?`${e.name}/${r}`:e.name,e=e.parent}},hashName(e,r){for(var t=0,o=0;o>>0)%n.nameTable.length},hashAddNode(e){var r=n.hashName(e.parent.id,e.name);e.name_next=n.nameTable[r],n.nameTable[r]=e},hashRemoveNode(e){var r=n.hashName(e.parent.id,e.name);if(n.nameTable[r]===e)n.nameTable[r]=e.name_next;else for(var t=n.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=n.mayLookup(e);if(t)throw new n.ErrnoError(t);for(var o=n.hashName(e.id,r),i=n.nameTable[o];i;i=i.name_next){var a=i.name;if(i.parent.id===e.id&&a===r)return i}return n.lookup(e,r)},createNode(e,r,t,o){var i=new n.FSNode(e,r,t,o);return n.hashAddNode(i),i},destroyNode(e){n.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var r=[\"r\",\"w\",\"rw\"][e&3];return e&512&&(r+=\"w\"),r},nodePermissions(e,r){return n.ignorePermissions?0:r.includes(\"r\")&&!(e.mode&292)||r.includes(\"w\")&&!(e.mode&146)||r.includes(\"x\")&&!(e.mode&73)?2:0},mayLookup(e){if(!n.isDir(e.mode))return 54;var r=n.nodePermissions(e,\"x\");return r||(e.node_ops.lookup?0:2)},mayCreate(e,r){try{var t=n.lookupNode(e,r);return 20}catch{}return n.nodePermissions(e,\"wx\")},mayDelete(e,r,t){var o;try{o=n.lookupNode(e,r)}catch(a){return a.errno}var i=n.nodePermissions(e,\"wx\");if(i)return i;if(t){if(!n.isDir(o.mode))return 54;if(n.isRoot(o)||n.getPath(o)===n.cwd())return 10}else if(n.isDir(o.mode))return 31;return 0},mayOpen(e,r){return e?n.isLink(e.mode)?32:n.isDir(e.mode)&&(n.flagsToPermissionString(r)!==\"r\"||r&512)?31:n.nodePermissions(e,n.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=n.MAX_OPEN_FDS;e++)if(!n.streams[e])return e;throw new n.ErrnoError(33)},getStreamChecked(e){var r=n.getStream(e);if(!r)throw new n.ErrnoError(8);return r},getStream:e=>n.streams[e],createStream(e,r=-1){return e=Object.assign(new n.FSStream,e),r==-1&&(r=n.nextfd()),e.fd=r,n.streams[r]=e,e},closeStream(e){n.streams[e]=null},dupStream(e,r=-1){var t=n.createStream(e,r);return t.stream_ops?.dup?.(t),t},chrdev_stream_ops:{open(e){var r=n.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new n.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,r)=>e<<8|r,registerDevice(e,r){n.devices[e]={stream_ops:r}},getDevice:e=>n.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var o=t.pop();r.push(o),t.push(...o.mounts)}return r},syncfs(e,r){typeof e==\"function\"&&(r=e,e=!1),n.syncFSRequests++,n.syncFSRequests>1&&T(`warning: ${n.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=n.getMounts(n.root.mount),o=0;function i(u){return n.syncFSRequests--,r(u)}function a(u){if(u)return a.errored?void 0:(a.errored=!0,i(u));++o>=t.length&&i(null)}t.forEach(u=>{if(!u.type.syncfs)return a(null);u.type.syncfs(u,e,a)})},mount(e,r,t){var o=t===\"/\",i=!t,a;if(o&&n.root)throw new n.ErrnoError(10);if(!o&&!i){var u=n.lookupPath(t,{follow_mount:!1});if(t=u.path,a=u.node,n.isMountpoint(a))throw new n.ErrnoError(10);if(!n.isDir(a.mode))throw new n.ErrnoError(54)}var f={type:e,opts:r,mountpoint:t,mounts:[]},v=e.mount(f);return v.mount=f,f.root=v,o?n.root=v:a&&(a.mounted=f,a.mount&&a.mount.mounts.push(f)),v},unmount(e){var r=n.lookupPath(e,{follow_mount:!1});if(!n.isMountpoint(r.node))throw new n.ErrnoError(28);var t=r.node,o=t.mounted,i=n.getMounts(o);Object.keys(n.nameTable).forEach(u=>{for(var f=n.nameTable[u];f;){var v=f.name_next;i.includes(f.mount)&&n.destroyNode(f),f=v}}),t.mounted=null;var a=t.mount.mounts.indexOf(o);t.mount.mounts.splice(a,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var o=n.lookupPath(e,{parent:!0}),i=o.node,a=S.basename(e);if(!a||a===\".\"||a===\"..\")throw new n.ErrnoError(28);var u=n.mayCreate(i,a);if(u)throw new n.ErrnoError(u);if(!i.node_ops.mknod)throw new n.ErrnoError(63);return i.node_ops.mknod(i,a,r,t)},statfs(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:n.nextInode,ffree:n.nextInode-1,fsid:42,flags:2,namelen:255},t=n.lookupPath(e,{follow:!0}).node;return t?.node_ops.statfs&&Object.assign(r,t.node_ops.statfs(t.mount.opts.root)),r},create(e,r=438){return r&=4095,r|=32768,n.mknod(e,r,0)},mkdir(e,r=511){return r&=1023,r|=16384,n.mknod(e,r,0)},mkdirTree(e,r){for(var t=e.split(\"/\"),o=\"\",i=0;i\"u\"&&(t=r,r=438),r|=8192,n.mknod(e,r,t)},symlink(e,r){if(!ge.resolve(e))throw new n.ErrnoError(44);var t=n.lookupPath(r,{parent:!0}),o=t.node;if(!o)throw new n.ErrnoError(44);var i=S.basename(r),a=n.mayCreate(o,i);if(a)throw new n.ErrnoError(a);if(!o.node_ops.symlink)throw new n.ErrnoError(63);return o.node_ops.symlink(o,i,e)},rename(e,r){var t=S.dirname(e),o=S.dirname(r),i=S.basename(e),a=S.basename(r),u,f,v;if(u=n.lookupPath(e,{parent:!0}),f=u.node,u=n.lookupPath(r,{parent:!0}),v=u.node,!f||!v)throw new n.ErrnoError(44);if(f.mount!==v.mount)throw new n.ErrnoError(75);var F=n.lookupNode(f,i),b=ge.relative(e,o);if(b.charAt(0)!==\".\")throw new n.ErrnoError(28);if(b=ge.relative(r,t),b.charAt(0)!==\".\")throw new n.ErrnoError(55);var Y;try{Y=n.lookupNode(v,a)}catch{}if(F!==Y){var x=n.isDir(F.mode),w=n.mayDelete(f,i,x);if(w)throw new n.ErrnoError(w);if(w=Y?n.mayDelete(v,a,x):n.mayCreate(v,a),w)throw new n.ErrnoError(w);if(!f.node_ops.rename)throw new n.ErrnoError(63);if(n.isMountpoint(F)||Y&&n.isMountpoint(Y))throw new n.ErrnoError(10);if(v!==f&&(w=n.nodePermissions(f,\"w\"),w))throw new n.ErrnoError(w);n.hashRemoveNode(F);try{f.node_ops.rename(F,v,a),F.parent=v}catch(M){throw M}finally{n.hashAddNode(F)}}},rmdir(e){var r=n.lookupPath(e,{parent:!0}),t=r.node,o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!0);if(a)throw new n.ErrnoError(a);if(!t.node_ops.rmdir)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.rmdir(t,o),n.destroyNode(i)},readdir(e){var r=n.lookupPath(e,{follow:!0}),t=r.node;if(!t.node_ops.readdir)throw new n.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var r=n.lookupPath(e,{parent:!0}),t=r.node;if(!t)throw new n.ErrnoError(44);var o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!1);if(a)throw new n.ErrnoError(a);if(!t.node_ops.unlink)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.unlink(t,o),n.destroyNode(i)},readlink(e){var r=n.lookupPath(e),t=r.node;if(!t)throw new n.ErrnoError(44);if(!t.node_ops.readlink)throw new n.ErrnoError(28);return t.node_ops.readlink(t)},stat(e,r){var t=n.lookupPath(e,{follow:!r}),o=t.node;if(!o)throw new n.ErrnoError(44);if(!o.node_ops.getattr)throw new n.ErrnoError(63);return o.node_ops.getattr(o)},lstat(e){return n.stat(e,!0)},chmod(e,r,t){var o;if(typeof e==\"string\"){var i=n.lookupPath(e,{follow:!t});o=i.node}else o=e;if(!o.node_ops.setattr)throw new n.ErrnoError(63);o.node_ops.setattr(o,{mode:r&4095|o.mode&-4096,timestamp:Date.now()})},lchmod(e,r){n.chmod(e,r,!0)},fchmod(e,r){var t=n.getStreamChecked(e);n.chmod(t.node,r)},chown(e,r,t,o){var i;if(typeof e==\"string\"){var a=n.lookupPath(e,{follow:!o});i=a.node}else i=e;if(!i.node_ops.setattr)throw new n.ErrnoError(63);i.node_ops.setattr(i,{timestamp:Date.now()})},lchown(e,r,t){n.chown(e,r,t,!0)},fchown(e,r,t){var o=n.getStreamChecked(e);n.chown(o.node,r,t)},truncate(e,r){if(r<0)throw new n.ErrnoError(28);var t;if(typeof e==\"string\"){var o=n.lookupPath(e,{follow:!0});t=o.node}else t=e;if(!t.node_ops.setattr)throw new n.ErrnoError(63);if(n.isDir(t.mode))throw new n.ErrnoError(31);if(!n.isFile(t.mode))throw new n.ErrnoError(28);var i=n.nodePermissions(t,\"w\");if(i)throw new n.ErrnoError(i);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate(e,r){var t=n.getStreamChecked(e);if(!(t.flags&2097155))throw new n.ErrnoError(28);n.truncate(t.node,r)},utime(e,r,t){var o=n.lookupPath(e,{follow:!0}),i=o.node;i.node_ops.setattr(i,{timestamp:Math.max(r,t)})},open(e,r,t=438){if(e===\"\")throw new n.ErrnoError(44);r=typeof r==\"string\"?_t(r):r,r&64?t=t&4095|32768:t=0;var o;if(typeof e==\"object\")o=e;else{e=S.normalize(e);try{var i=n.lookupPath(e,{follow:!(r&131072)});o=i.node}catch{}}var a=!1;if(r&64)if(o){if(r&128)throw new n.ErrnoError(20)}else o=n.mknod(e,t,0),a=!0;if(!o)throw new n.ErrnoError(44);if(n.isChrdev(o.mode)&&(r&=-513),r&65536&&!n.isDir(o.mode))throw new n.ErrnoError(54);if(!a){var u=n.mayOpen(o,r);if(u)throw new n.ErrnoError(u)}r&512&&!a&&n.truncate(o,0),r&=-131713;var f=n.createStream({node:o,path:n.getPath(o),flags:r,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return f.stream_ops.open&&f.stream_ops.open(f),f},close(e){if(n.isClosed(e))throw new n.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(r){throw r}finally{n.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new n.ErrnoError(70);if(t!=0&&t!=1&&t!=2)throw new n.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,o,i){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if((e.flags&2097155)===1)throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.read)throw new n.ErrnoError(28);var a=typeof i<\"u\";if(!a)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var u=e.stream_ops.read(e,r,t,o,i);return a||(e.position+=u),u},write(e,r,t,o,i,a){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.write)throw new n.ErrnoError(28);e.seekable&&e.flags&1024&&n.llseek(e,0,2);var u=typeof i<\"u\";if(!u)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var f=e.stream_ops.write(e,r,t,o,i,a);return u||(e.position+=f),f},allocate(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(r<0||t<=0)throw new n.ErrnoError(28);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(!n.isFile(e.node.mode)&&!n.isDir(e.node.mode))throw new n.ErrnoError(43);if(!e.stream_ops.allocate)throw new n.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap(e,r,t,o,i){if(o&2&&!(i&2)&&(e.flags&2097155)!==2)throw new n.ErrnoError(2);if((e.flags&2097155)===1)throw new n.ErrnoError(2);if(!e.stream_ops.mmap)throw new n.ErrnoError(43);if(!r)throw new n.ErrnoError(28);return e.stream_ops.mmap(e,r,t,o,i)},msync(e,r,t,o,i){return e.stream_ops.msync?e.stream_ops.msync(e,r,t,o,i):0},ioctl(e,r,t){if(!e.stream_ops.ioctl)throw new n.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||\"binary\",r.encoding!==\"utf8\"&&r.encoding!==\"binary\")throw new Error(`Invalid encoding type \"${r.encoding}\"`);var t,o=n.open(e,r.flags),i=n.stat(e),a=i.size,u=new Uint8Array(a);return n.read(o,u,0,a,0),r.encoding===\"utf8\"?t=Re(u):r.encoding===\"binary\"&&(t=u),n.close(o),t},writeFile(e,r,t={}){t.flags=t.flags||577;var o=n.open(e,t.flags,t.mode);if(typeof r==\"string\"){var i=new Uint8Array(er(r)+1),a=rr(r,i,0,i.length);n.write(o,i,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))n.write(o,r,0,r.byteLength,void 0,t.canOwn);else throw new Error(\"Unsupported data type\");n.close(o)},cwd:()=>n.currentPath,chdir(e){var r=n.lookupPath(e,{follow:!0});if(r.node===null)throw new n.ErrnoError(44);if(!n.isDir(r.node.mode))throw new n.ErrnoError(54);var t=n.nodePermissions(r.node,\"x\");if(t)throw new n.ErrnoError(t);n.currentPath=r.path},createDefaultDirectories(){n.mkdir(\"/tmp\"),n.mkdir(\"/home\"),n.mkdir(\"/home/web_user\")},createDefaultDevices(){n.mkdir(\"/dev\"),n.registerDevice(n.makedev(1,3),{read:()=>0,write:(o,i,a,u,f)=>u,llseek:()=>0}),n.mkdev(\"/dev/null\",n.makedev(1,3)),Ge.register(n.makedev(5,0),Ge.default_tty_ops),Ge.register(n.makedev(6,0),Ge.default_tty1_ops),n.mkdev(\"/dev/tty\",n.makedev(5,0)),n.mkdev(\"/dev/tty1\",n.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(r===0&&(r=pr(e).byteLength),e[--r]);n.createDevice(\"/dev\",\"random\",t),n.createDevice(\"/dev\",\"urandom\",t),n.mkdir(\"/dev/shm\"),n.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){n.mkdir(\"/proc\");var e=n.mkdir(\"/proc/self\");n.mkdir(\"/proc/self/fd\"),n.mount({mount(){var r=n.createNode(e,\"fd\",16895,73);return r.node_ops={lookup(t,o){var i=+o,a=n.getStreamChecked(i),u={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>a.path}};return u.parent=u,u}},r}},{},\"/proc/self/fd\")},createStandardStreams(e,r,t){e?n.createDevice(\"/dev\",\"stdin\",e):n.symlink(\"/dev/tty\",\"/dev/stdin\"),r?n.createDevice(\"/dev\",\"stdout\",null,r):n.symlink(\"/dev/tty\",\"/dev/stdout\"),t?n.createDevice(\"/dev\",\"stderr\",null,t):n.symlink(\"/dev/tty1\",\"/dev/stderr\");var o=n.open(\"/dev/stdin\",0),i=n.open(\"/dev/stdout\",1),a=n.open(\"/dev/stderr\",1)},staticInit(){n.nameTable=new Array(4096),n.mount(g,{},\"/\"),n.createDefaultDirectories(),n.createDefaultDevices(),n.createSpecialDirectories(),n.filesystems={MEMFS:g}},init(e,r,t){n.initialized=!0,n.createStandardStreams(e,r,t)},quit(){n.initialized=!1;for(var e=0;ethis.length-1||w<0)){var M=w%this.chunkSize,ee=w/this.chunkSize|0;return this.getter(ee)[M]}}setDataGetter(w){this.getter=w}cacheLength(){var w=new XMLHttpRequest;if(w.open(\"HEAD\",t,!1),w.send(null),!(w.status>=200&&w.status<300||w.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+w.status);var M=Number(w.getResponseHeader(\"Content-length\")),ee,le=(ee=w.getResponseHeader(\"Accept-Ranges\"))&&ee===\"bytes\",oe=(ee=w.getResponseHeader(\"Content-Encoding\"))&&ee===\"gzip\",de=1024*1024;le||(de=M);var ve=(ye,Ye)=>{if(ye>Ye)throw new Error(\"invalid range (\"+ye+\", \"+Ye+\") or no bytes requested!\");if(Ye>M-1)throw new Error(\"only \"+M+\" bytes available! programmer error!\");var re=new XMLHttpRequest;if(re.open(\"GET\",t,!1),M!==de&&re.setRequestHeader(\"Range\",\"bytes=\"+ye+\"-\"+Ye),re.responseType=\"arraybuffer\",re.overrideMimeType&&re.overrideMimeType(\"text/plain; charset=x-user-defined\"),re.send(null),!(re.status>=200&&re.status<300||re.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+re.status);return re.response!==void 0?new Uint8Array(re.response||[]):tr(re.responseText||\"\",!0)},Se=this;Se.setDataGetter(ye=>{var Ye=ye*de,re=(ye+1)*de-1;if(re=Math.min(re,M-1),typeof Se.chunks[ye]>\"u\"&&(Se.chunks[ye]=ve(Ye,re)),typeof Se.chunks[ye]>\"u\")throw new Error(\"doXHR failed!\");return Se.chunks[ye]}),(oe||!M)&&(de=M=1,M=this.getter(0).length,de=M,L(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=M,this._chunkSize=de,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<\"u\"){if(!E)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var u=new a,f={isDevice:!1,contents:u}}else var f={isDevice:!1,url:t};var v=n.createFile(e,r,f,o,i);f.contents?v.contents=f.contents:f.url&&(v.contents=null,v.url=f.url),Object.defineProperties(v,{usedBytes:{get:function(){return this.contents.length}}});var F={},b=Object.keys(v.stream_ops);b.forEach(x=>{var w=v.stream_ops[x];F[x]=(...M)=>(n.forceLoadFile(v),w(...M))});function Y(x,w,M,ee,le){var oe=x.node.contents;if(le>=oe.length)return 0;var de=Math.min(oe.length-le,ee);if(oe.slice)for(var ve=0;ve(n.forceLoadFile(v),Y(x,w,M,ee,le)),F.mmap=(x,w,M,ee,le)=>{n.forceLoadFile(v);var oe=Er(w);if(!oe)throw new n.ErrnoError(48);return Y(x,m,oe,w,M),{ptr:oe,allocated:!0}},v.stream_ops=F,v}},se=(e,r)=>e?Re(Q,e,r):\"\",P={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(S.isAbs(r))return r;var o;if(e===-100)o=n.cwd();else{var i=P.getStreamFromFD(e);o=i.path}if(r.length==0){if(!t)throw new n.ErrnoError(44);return o}return S.join2(o,r)},doStat(e,r,t){var o=e(r);B[t>>2]=o.dev,B[t+4>>2]=o.mode,R[t+8>>2]=o.nlink,B[t+12>>2]=o.uid,B[t+16>>2]=o.gid,B[t+20>>2]=o.rdev,N=[o.size>>>0,(O=o.size,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+24>>2]=N[0],B[t+28>>2]=N[1],B[t+32>>2]=4096,B[t+36>>2]=o.blocks;var i=o.atime.getTime(),a=o.mtime.getTime(),u=o.ctime.getTime();return N=[Math.floor(i/1e3)>>>0,(O=Math.floor(i/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+40>>2]=N[0],B[t+44>>2]=N[1],R[t+48>>2]=i%1e3*1e3*1e3,N=[Math.floor(a/1e3)>>>0,(O=Math.floor(a/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+56>>2]=N[0],B[t+60>>2]=N[1],R[t+64>>2]=a%1e3*1e3*1e3,N=[Math.floor(u/1e3)>>>0,(O=Math.floor(u/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+72>>2]=N[0],B[t+76>>2]=N[1],R[t+80>>2]=u%1e3*1e3*1e3,N=[o.ino>>>0,(O=o.ino,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+88>>2]=N[0],B[t+92>>2]=N[1],0},doMsync(e,r,t,o,i){if(!n.isFile(r.node.mode))throw new n.ErrnoError(43);if(o&2)return 0;var a=Q.slice(e,e+t);n.msync(r,a,i,t,o)},getStreamFromFD(e){var r=n.getStreamChecked(e);return r},varargs:void 0,getStr(e){var r=se(e);return r}};function lt(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),t&-8)return-28;var i=n.lookupPath(r,{follow:!0}),a=i.node;if(!a)return-44;var u=\"\";return t&4&&(u+=\"r\"),t&2&&(u+=\"w\"),t&1&&(u+=\"x\"),u&&n.nodePermissions(a,u)?-2:0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}var We=()=>{var e=B[+P.varargs>>2];return P.varargs+=4,e},De=We;function dt(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 0:{var i=We();if(i<0)return-28;for(;n.streams[i];)i++;var a;return a=n.dupStream(o,i),a.fd}case 1:case 2:return 0;case 3:return o.flags;case 4:{var i=We();return o.flags|=i,0}case 12:{var i=De(),u=0;return k[i+u>>1]=2,0}case 13:case 14:return 0}return-28}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function vt(e,r){try{var t=P.getStreamFromFD(e);return P.doStat(n.stat,t.path,r)}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}function ht(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 21509:return o.tty?0:-59;case 21505:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcgets){var i=o.tty.ops.ioctl_tcgets(o),a=De();B[a>>2]=i.c_iflag||0,B[a+4>>2]=i.c_oflag||0,B[a+8>>2]=i.c_cflag||0,B[a+12>>2]=i.c_lflag||0;for(var u=0;u<32;u++)m[a+u+17]=i.c_cc[u]||0;return 0}return 0}case 21510:case 21511:case 21512:return o.tty?0:-59;case 21506:case 21507:case 21508:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcsets){for(var a=De(),f=B[a>>2],v=B[a+4>>2],F=B[a+8>>2],b=B[a+12>>2],Y=[],u=0;u<32;u++)Y.push(m[a+u+17]);return o.tty.ops.ioctl_tcsets(o.tty,r,{c_iflag:f,c_oflag:v,c_cflag:F,c_lflag:b,c_cc:Y})}return 0}case 21519:{if(!o.tty)return-59;var a=De();return B[a>>2]=0,0}case 21520:return o.tty?-28:-59;case 21531:{var a=De();return n.ioctl(o,r,a)}case 21523:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tiocgwinsz){var x=o.tty.ops.ioctl_tiocgwinsz(o.tty),a=De();k[a>>1]=x[0],k[a+2>>1]=x[1]}return 0}case 21524:return o.tty?0:-59;case 21515:return o.tty?0:-59;default:return-28}}catch(w){if(typeof n>\"u\"||w.name!==\"ErrnoError\")throw w;return-w.errno}}function pt(e,r,t,o){try{r=P.getStr(r);var i=o&256,a=o&4096;return o=o&-6401,r=P.calculateAt(e,r,a),P.doStat(i?n.lstat:n.stat,r,t)}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return-u.errno}}function yt(e,r,t,o){P.varargs=o;try{r=P.getStr(r),r=P.calculateAt(e,r);var i=o?We():0;return n.open(r,t,i).fd}catch(a){if(typeof n>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}var Ze=(e,r,t)=>rr(e,Q,r,t);function Et(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),o<=0)return-28;var i=n.readlink(r),a=Math.min(o,er(i)),u=m[t+a];return Ze(i,t,o+1),m[t+a]=u,a}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function mt(e){try{return e=P.getStr(e),n.rmdir(e),0}catch(r){if(typeof n>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}function wt(e,r){try{return e=P.getStr(e),P.doStat(n.stat,e,r)}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return-t.errno}}function Bt(e,r,t){try{return r=P.getStr(r),r=P.calculateAt(e,r),t===0?n.unlink(r):t===512?n.rmdir(r):pe(\"Invalid flags passed to unlinkat\"),0}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}var gt=()=>pe(\"\"),Gt=1,Ft=()=>Gt,Lt=(e,r,t)=>Q.copyWithin(e,r,r+t),ir=(e,r)=>r+2097152>>>0<4194305-!!e?(e>>>0)+r*4294967296:NaN;function It(e,r,t,o,i,a,u,f){var v=ir(i,a);try{if(isNaN(v))return 61;var F=P.getStreamFromFD(o),b=n.mmap(F,e,v,r,t),Y=b.ptr;return B[u>>2]=b.allocated,R[f>>2]=Y,0}catch(x){if(typeof n>\"u\"||x.name!==\"ErrnoError\")throw x;return-x.errno}}function xt(e,r,t,o,i,a,u){var f=ir(a,u);try{var v=P.getStreamFromFD(i);t&2&&P.doMsync(e,v,r,o,f)}catch(F){if(typeof n>\"u\"||F.name!==\"ErrnoError\")throw F;return-F.errno}}var Ot=(e,r,t,o)=>{var i=new Date().getFullYear(),a=new Date(i,0,1),u=new Date(i,6,1),f=a.getTimezoneOffset(),v=u.getTimezoneOffset(),F=Math.max(f,v);R[e>>2]=F*60,B[r>>2]=+(f!=v);var b=w=>{var M=w>=0?\"-\":\"+\",ee=Math.abs(w),le=String(Math.floor(ee/60)).padStart(2,\"0\"),oe=String(ee%60).padStart(2,\"0\");return`UTC${M}${le}${oe}`},Y=b(f),x=b(v);v{ar.length=0;for(var t;t=Q[e++];){var o=t!=105;o&=t!=112,r+=o&&r%8?4:0,ar.push(t==112?R[r>>2]:t==105?B[r>>2]:ne[r>>3]),r+=o?8:4}return ar},Mt=(e,r,t)=>{var o=bt(r,t);return kr[e](...o)},Rt=(e,r,t)=>Mt(e,r,t),Dt=()=>Date.now(),Yt=()=>2147483648,Pt=e=>{var r=X.buffer,t=(e-r.byteLength+65535)/65536|0;try{return X.grow(t),Z(),1}catch{}},Tt=e=>{var r=Q.length;e>>>=0;var t=Yt();if(e>t)return!1;for(var o=1;o<=4;o*=2){var i=r*(1+.2/o);i=Math.min(i,e+100663296);var a=Math.min(t,nr(Math.max(e,i),65536)),u=Pt(a);if(u)return!0}return!1},sr={},Zt=()=>j||\"./this.program\",ze=()=>{if(!ze.strings){var e=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",r={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:e,_:Zt()};for(var t in sr)sr[t]===void 0?delete r[t]:r[t]=sr[t];var o=[];for(var t in r)o.push(`${t}=${r[t]}`);ze.strings=o}return ze.strings},zt=(e,r)=>{for(var t=0;t{var t=0;return ze().forEach((o,i)=>{var a=r+t;R[e+i*4>>2]=a,zt(o,a),t+=o.length+1}),0},jt=(e,r)=>{var t=ze();R[e>>2]=t.length;var o=0;return t.forEach(i=>o+=i.length+1),R[r>>2]=o,0},Ut=()=>!0,Ht=e=>{fe=e,Ut()||(W=!0),q(e,new Ar(e))},Kt=(e,r)=>{fe=e,Ht(e)},Qt=Kt;function Wt(e){try{var r=P.getStreamFromFD(e);return n.close(r),0}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return t.errno}}var Ct=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.read(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}function $t(e,r,t,o,i){var a=ir(r,t);try{if(isNaN(a))return 61;var u=P.getStreamFromFD(e);return n.llseek(u,a,o),N=[u.position>>>0,(O=u.position,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[i>>2]=N[0],B[i+4>>2]=N[1],u.getdents&&a===0&&o===0&&(u.getdents=null),0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return f.errno}}var Vt=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.write(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}n.createPreloadedFile=ft,n.staticInit(),g.doesNotExistError=new n.ErrnoError(44),g.doesNotExistError.stack=\"\";var Jt={a:tt,i:lt,f:dt,x:vt,k:ht,v:pt,h:yt,q:Et,r:mt,w:wt,s:Bt,j:gt,y:Ft,z:Lt,l:It,m:xt,o:Ot,A:Rt,c:Dt,p:Tt,t:St,u:jt,g:Qt,b:Wt,e:Xt,n:$t,d:qt},z=Nr(),Nt=()=>(Nt=z.C)(),kt=s._webidl_free=e=>(kt=s._webidl_free=z.D)(e),At=s._free=e=>(At=s._free=z.E)(e),en=s._webidl_malloc=e=>(en=s._webidl_malloc=z.F)(e),rn=s._malloc=e=>(rn=s._malloc=z.G)(e),mr=s._emscripten_bind_VoidPtr___destroy___0=e=>(mr=s._emscripten_bind_VoidPtr___destroy___0=z.H)(e),wr=s._emscripten_bind_Graphviz_Graphviz_2=(e,r)=>(wr=s._emscripten_bind_Graphviz_Graphviz_2=z.I)(e,r),Br=s._emscripten_bind_Graphviz_version_0=()=>(Br=s._emscripten_bind_Graphviz_version_0=z.J)(),gr=s._emscripten_bind_Graphviz_lastError_0=()=>(gr=s._emscripten_bind_Graphviz_lastError_0=z.K)(),Gr=s._emscripten_bind_Graphviz_createFile_2=(e,r,t)=>(Gr=s._emscripten_bind_Graphviz_createFile_2=z.L)(e,r,t),Fr=s._emscripten_bind_Graphviz_layout_3=(e,r,t,o)=>(Fr=s._emscripten_bind_Graphviz_layout_3=z.M)(e,r,t,o),Lr=s._emscripten_bind_Graphviz_acyclic_3=(e,r,t,o)=>(Lr=s._emscripten_bind_Graphviz_acyclic_3=z.N)(e,r,t,o),Ir=s._emscripten_bind_Graphviz_tred_3=(e,r,t,o)=>(Ir=s._emscripten_bind_Graphviz_tred_3=z.O)(e,r,t,o),xr=s._emscripten_bind_Graphviz_unflatten_4=(e,r,t,o,i)=>(xr=s._emscripten_bind_Graphviz_unflatten_4=z.P)(e,r,t,o,i),Or=s._emscripten_bind_Graphviz_get_layout_result_0=e=>(Or=s._emscripten_bind_Graphviz_get_layout_result_0=z.Q)(e),br=s._emscripten_bind_Graphviz_set_layout_result_1=(e,r)=>(br=s._emscripten_bind_Graphviz_set_layout_result_1=z.R)(e,r),Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=e=>(Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=z.S)(e),Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=(e,r)=>(Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=z.T)(e,r),Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=e=>(Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=z.U)(e),Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=(e,r)=>(Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=z.V)(e,r),Pr=s._emscripten_bind_Graphviz_get_tred_out_0=e=>(Pr=s._emscripten_bind_Graphviz_get_tred_out_0=z.W)(e),Tr=s._emscripten_bind_Graphviz_set_tred_out_1=(e,r)=>(Tr=s._emscripten_bind_Graphviz_set_tred_out_1=z.X)(e,r),Zr=s._emscripten_bind_Graphviz_get_tred_err_0=e=>(Zr=s._emscripten_bind_Graphviz_get_tred_err_0=z.Y)(e),zr=s._emscripten_bind_Graphviz_set_tred_err_1=(e,r)=>(zr=s._emscripten_bind_Graphviz_set_tred_err_1=z.Z)(e,r),Sr=s._emscripten_bind_Graphviz___destroy___0=e=>(Sr=s._emscripten_bind_Graphviz___destroy___0=z._)(e),jr=(e,r)=>(jr=z.aa)(e,r);s.UTF8ToString=se;var Ce;we=function e(){Ce||Ur(),Ce||(we=e)};function Ur(){if(me>0||(Oe(),me>0))return;function e(){Ce||(Ce=!0,s.calledRun=!0,!W&&(Pe(),d(s),Qe()))}e()}Ur();function ue(){}ue.prototype=Object.create(ue.prototype),ue.prototype.constructor=ue,ue.prototype.__class__=ue,ue.__cache__={},s.WrapperObject=ue;function Xe(e){return(e||ue).__cache__}s.getCache=Xe;function ur(e,r){var t=Xe(r),o=t[e];return o||(o=Object.create((r||ue).prototype),o.ptr=e,t[e]=o)}s.wrapPointer=ur;function tn(e,r){return ur(e.ptr,r)}s.castObject=tn,s.NULL=ur(0);function nn(e){if(!e.__destroy__)throw\"Error: Cannot destroy object. (Did you create it yourself?)\";e.__destroy__(),delete Xe(e.__class__)[e.ptr]}s.destroy=nn;function on(e,r){return e.ptr===r.ptr}s.compare=on;function an(e){return e.ptr}s.getPointer=an;function sn(e){return e.__class__}s.getClass=sn;var D={buffer:0,size:0,pos:0,temps:[],needed:0,prepare(){if(D.needed){for(var e=0;e=D.size?(C(o>0),D.needed+=o,i=s._webidl_malloc(o),D.temps.push(i)):(i=D.buffer+D.pos,D.pos+=o),i},copy(e,r,t){t/=r.BYTES_PER_ELEMENT;for(var o=0;o88?13:14;do l.push(s&255),s>>=8,d-=8;while(d>7);h=-1}}return h>-1&&l.push((s|h<\n\n`}}function On(c){return c.map(xn)}function bn(c,_){let l={images:[],files:[],..._};[...l.files,...On(l.images)].forEach(s=>c.createFile(s.path,s.data))}var $r=class c{constructor(_){this._module=_}static load(){return Cr().then(_=>new c(_))}static unload(){Xr()}version(){return this._module.Graphviz.prototype.version()}layout(_,l=\"svg\",s=\"dot\",d){if(!_)return\"\";let h=new this._module.Graphviz(d?.yInvert?1:0,d?.nop?d?.nop:0),p=\"\",E=\"\";try{bn(h,d);try{p=h.layout(_,l,s)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}acyclic(_,l=!1,s=!1){if(!_)return{acyclic:!1,num_rev:0,outFile:\"\"};let d=new this._module.Graphviz,h=!1,p=0,E=\"\",G=\"\";try{try{h=d.acyclic(_,l,s),p=d.acyclic_num_rev,E=d.acyclic_outFile}catch(j){G=j.message}G=d.lastError()||G}finally{this._module.destroy(d)}if(G)throw c.unload(),new Error(G);return{acyclic:h,num_rev:p,outFile:E}}tred(_,l=!1,s=!1){if(!_)return{out:\"\",err:\"\"};let d=new this._module.Graphviz,h=\"\",p=\"\",E=\"\";try{try{d.tred(_,l,s),h=d.tred_out,p=d.tred_err}catch(G){E=G.message}E=d.lastError()||E}finally{this._module.destroy(d)}if(!h&&E)throw c.unload(),new Error(E);return{out:h,err:p}}unflatten(_,l=0,s=!1,d=0){if(!_)return\"\";let h=new this._module.Graphviz,p=\"\",E=\"\";try{try{p=h.unflatten(_,l,s,d)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}circo(_,l=\"svg\",s){return this.layout(_,l,\"circo\",s)}dot(_,l=\"svg\",s){return this.layout(_,l,\"dot\",s)}fdp(_,l=\"svg\",s){return this.layout(_,l,\"fdp\",s)}sfdp(_,l=\"svg\",s){return this.layout(_,l,\"sfdp\",s)}neato(_,l=\"svg\",s){return this.layout(_,l,\"neato\",s)}osage(_,l=\"svg\",s){return this.layout(_,l,\"osage\",s)}patchwork(_,l=\"svg\",s){return this.layout(_,l,\"patchwork\",s)}twopi(_,l=\"svg\",s){return this.layout(_,l,\"twopi\",s)}nop(_){return this.layout(_,\"dot\",\"nop\")}nop2(_){return this.layout(_,\"dot\",\"nop2\")}};export{$r as Graphviz};\n", "import type {\n IRenderOptions,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport { type Engine, type Format, Graphviz } from \"@hpcc-js/wasm-graphviz\";\nimport options from \"../../options.mjs\";\nimport ast2dot from \"../dot/index.mjs\";\n\nconst OUTPUT_TYPE2FORMAT: { [name: string]: string } = {\n oldsvg: \"svg\",\n oldps2: \"ps2\",\n oldeps: \"eps\",\n};\nconst gGraphViz = await Graphviz.load();\n\nfunction getFormat(pOptions?: IRenderOptions): Format {\n return (OUTPUT_TYPE2FORMAT[\n options.getOptionValue(pOptions as IRenderOptions, \"outputType\") as string\n ] || \"svg\") as Format;\n}\n\nfunction getEngine(pOptions?: IRenderOptions): Engine {\n return options.getOptionValue(pOptions as IRenderOptions, \"engine\") as Engine;\n}\n\nconst renderVectorWithWasm: StringRenderFunctionType = (\n pStateMachine,\n pOptions,\n) =>\n gGraphViz.layout(\n ast2dot(pStateMachine, pOptions),\n getFormat(pOptions),\n getEngine(pOptions),\n );\n\nexport default renderVectorWithWasm;\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\nconst NAME_CHAR_FORBIDDEN_RE =\n /[\\u0000-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_NAME_CHAR_FORBIDDEN_EXTRA_RE =\n /[-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/g;\n\nfunction makeValidNameChars(pCandidateNameTail: string): string {\n return pCandidateNameTail.replace(NAME_CHAR_FORBIDDEN_RE, \"_\");\n}\n\n/**\n * if it's an invalid NameStartChar but a valid NameChar smack a '_' in front of it\n * if it's an invalid NameChar as well - run it through the makeValidNameChars replacer\n */\nfunction makeValidNameStartChar(pCandidateChar: string): string {\n let lReturnValue = makeValidNameChars(pCandidateChar);\n\n if (lReturnValue.match(START_NAME_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateChar}`;\n }\n return lReturnValue;\n}\n\n/**\n * Takes any string and returns a valid XMLName using these rules:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string '__empty'\n */\nexport default (pCandidateName: string): string => {\n pCandidateName = pCandidateName || \"\";\n\n if (pCandidateName.length === 0) {\n return `__empty`;\n }\n return makeValidNameStartChar(pCandidateName[0]).concat(\n makeValidNameChars(pCandidateName.slice(1)),\n );\n};\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\n// EVENT_CHAR_FORBIDDEN_RE === forbidden for NameStartChar, except \"-\" and [0-9]\n// The SCXML xsd doesn't seem to mention '*' (\\u002A) as an allowed character. But\n// they _are_ used in event descriptors in the SCXML spec. So we've excluded\n// them from forbidden characters\nconst EVENT_CHAR_FORBIDDEN_RE =\n /[\\u00B7\\u0300-\\u036F\\u203F-\\u2040\\u0000-\\u0029\\u002B-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_EVENT_CHAR_FORBIDDEN_EXTRA_RE = /[.]/g;\n\nfunction makeValidEventChar(pCandidateEventStringTail: string): string {\n return pCandidateEventStringTail.replace(EVENT_CHAR_FORBIDDEN_RE, \"_\");\n}\n\nfunction makeValidEventStartChar(pCandidateEventStringStart: string): string {\n let lReturnValue = makeValidEventChar(pCandidateEventStringStart);\n\n if (lReturnValue.match(START_EVENT_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateEventStringStart}`;\n }\n return lReturnValue;\n}\n\nfunction makeValidEventName(pCandidateEventName: string): string {\n pCandidateEventName = pCandidateEventName.replace(/\\s+/g, \" \").trim();\n\n return makeValidEventStartChar(pCandidateEventName[0]).concat(\n makeValidEventChar(pCandidateEventName.slice(1)),\n );\n}\n/**\n * Takes any string and returns a valid SCXML events string:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string 'empty'\n * *\n * @returns a valid SCXML events string\n */\nexport default (pCandidateEventNames?: string): string => {\n const lCandidateEventNames = pCandidateEventNames ?? \"\";\n\n if (lCandidateEventNames.length === 0) {\n return \"empty\";\n }\n\n return lCandidateEventNames\n .split(/[\\n\\r]+/)\n .filter((pCandidateEventName) => pCandidateEventName.length > 0)\n .map(makeValidEventName)\n .join(\" \");\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n ActionTypeType,\n IActionType,\n IRenderOptions,\n IState,\n IStateMachine,\n ITransition,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"./scjson.js\";\nimport makeValidXMLName from \"./make-valid-xml-name.mjs\";\nimport makeValidEventNames from \"./make-valid-event-names.mjs\";\n\nconst STATE_TYPE2SCXML_STATE_KIND: { [stateType: string]: string } = {\n regular: \"state\",\n initial: \"initial\",\n final: \"final\",\n terminate: \"final\",\n parallel: \"parallel\",\n history: \"history\",\n deephistory: \"history\",\n};\n\nfunction stateType2SCXMLStateKind(pStateType: string): string {\n return STATE_TYPE2SCXML_STATE_KIND[pStateType] || \"state\";\n}\n\nfunction transformTransition(pTransition: ITransition): ISCJSONTransition {\n const lReturnValue: ISCJSONTransition = {\n target: makeValidXMLName(pTransition.to),\n };\n\n if (pTransition.event) {\n lReturnValue.event = makeValidEventNames(pTransition.event);\n }\n if (pTransition.cond) {\n lReturnValue.cond = pTransition.cond;\n }\n if (pTransition.action) {\n lReturnValue.action = pTransition.action;\n }\n if (pTransition.type) {\n lReturnValue.type = pTransition.type;\n }\n return lReturnValue;\n}\n\nfunction extractTriggers(\n pTriggers: IActionType[],\n pTriggerType: ActionTypeType,\n): string[] {\n return pTriggers\n .filter((pTrigger) => pTrigger.type === pTriggerType)\n .map((pTrigger) => pTrigger.body);\n}\n\nfunction pullOutActionType(\n pReturnValue: ISCJSONState,\n pTriggersType: \"onentries\" | \"onexits\",\n pActions: IActionType[],\n pActionType: ActionTypeType,\n): void {\n const lTriggerArray: string[] = extractTriggers(pActions, pActionType);\n\n if (lTriggerArray.length > 0) {\n pReturnValue[pTriggersType] = (pReturnValue[pTriggersType] || []).concat(\n lTriggerArray,\n );\n }\n}\n\nfunction transformTriggers(pReturnValue: ISCJSONState, pState: IState): void {\n if (pState.actions) {\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"entry\");\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"activity\");\n pullOutActionType(pReturnValue, \"onexits\", pState.actions, \"exit\");\n }\n}\n\nfunction transformTransitions(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n const lTransitions = pTransitions\n .filter((pTransition) => pTransition.from === pState.name)\n .map(transformTransition);\n\n if (lTransitions.length > 0) {\n pReturnValue.transitions = lTransitions;\n }\n}\n\nfunction transformCompositeState(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n if (pState.statemachine) {\n // recursion, so ...\n // eslint-disable-next-line no-use-before-define, no-undefined\n const lRenderedState = render(pState.statemachine, undefined, pTransitions);\n\n pReturnValue.states = (pReturnValue.states || []).concat(\n lRenderedState.states,\n );\n if (lRenderedState.initial) {\n pReturnValue.initial = lRenderedState.initial;\n }\n }\n}\n\nfunction transformState(pTransitions: ITransition[]) {\n pTransitions = pTransitions || [];\n\n return (pState: IState): ISCJSONState => {\n const lReturnValue: ISCJSONState = {\n kind: stateType2SCXMLStateKind(pState.type),\n id: makeValidXMLName(pState.name),\n };\n\n if (pState.type === \"deephistory\") {\n // as 'shallow' is the default anyway, we leave it out\n lReturnValue.type = \"deep\";\n }\n\n transformTriggers(lReturnValue, pState);\n\n transformTransitions(lReturnValue, pState, pTransitions);\n\n transformCompositeState(lReturnValue, pState, pTransitions);\n return lReturnValue;\n };\n}\n\nfunction findInitialPseudoStateName(\n pStateMachine: IStateMachine,\n): string | undefined {\n const lInitial = pStateMachine.states.filter(\n (pState) => pState.type === \"initial\",\n );\n\n if (lInitial.length > 0) {\n return lInitial[0].name;\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n}\n\nfunction findInitialStateName(\n pStateMachine: IStateMachine,\n pInitialPseudoStateName?: string,\n): string | undefined {\n let lReturnValue = pInitialPseudoStateName;\n\n if (pInitialPseudoStateName && pStateMachine.transitions) {\n const lInitialTransitions = pStateMachine.transitions.filter(\n (pTransition) => pTransition.from === pInitialPseudoStateName,\n );\n\n if (lInitialTransitions.length > 0 && !lInitialTransitions[0].action) {\n lReturnValue = lInitialTransitions[0].to;\n }\n }\n return lReturnValue;\n}\n\nexport default function render(\n pStateMachine: IStateMachine,\n _pOptions?: IRenderOptions,\n pTransitions?: ITransition[],\n): ISCJSONMachine {\n const lInitialPseudoStateName = findInitialPseudoStateName(pStateMachine);\n const lInitialStateName = findInitialStateName(\n pStateMachine,\n lInitialPseudoStateName,\n );\n const lReturnValue: ISCJSONMachine = {\n states: pStateMachine.states\n .filter((pState) => {\n if (\n lInitialStateName &&\n lInitialStateName !== lInitialPseudoStateName\n ) {\n return pState.type !== \"initial\";\n }\n return true;\n })\n .map(\n transformState(\n pTransitions ||\n new StateMachineModel(pStateMachine).flattenedTransitions,\n ),\n ),\n };\n\n if (lInitialStateName) {\n lReturnValue.initial = makeValidXMLName(lInitialStateName);\n }\n return lReturnValue;\n}\n", "import he from \"he\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"../scjson/scjson.js\";\n\nconst INDENT_LENGTH = 4;\n\nfunction indentString(pString: string, pCount: number): string {\n const lRegex = /^(?!\\s*$)/gm;\n\n return pString.replace(lRegex, \" \".repeat(pCount));\n}\n\nfunction renderTransitionAttributes(pTransition: ISCJSONTransition): string {\n let lReturnValue = \"\";\n if (pTransition.event) {\n lReturnValue += ` event=\"${he.escape(pTransition.event)}\"`;\n }\n if (pTransition.cond) {\n lReturnValue += ` cond=\"${he.escape(pTransition.cond)}\"`;\n }\n if (pTransition.type) {\n lReturnValue += ` type=\"${he.escape(pTransition.type)}\"`;\n }\n lReturnValue += ` target=\"${he.escape(pTransition.target)}\"`;\n return lReturnValue;\n}\n\nfunction renderRegularTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n const lReturnValue = `\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderActionTransition(\n pTransition: ISCJSONTransition & { action: string },\n pDepth: number,\n): string {\n const lReturnValue = `\n\n ${he.escape(pTransition.action)}\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n if (pTransition.action) {\n return renderActionTransition(\n pTransition as ISCJSONTransition & { action: string },\n pDepth,\n );\n }\n\n return renderRegularTransition(pTransition, pDepth);\n}\n\nfunction renderTransitions(\n pTransitions?: ISCJSONTransition[],\n // @ts-expect-error Yes. pDepth follows optional parameter. So What?\n pDepth: number,\n): string {\n return (pTransitions ?? [])\n .map((pTransition) => renderTransition(pTransition, pDepth))\n .join(\"\");\n}\n\nfunction renderSimpleTag(\n pOnExit: string,\n pTag: string,\n pDepth: number,\n): string {\n const lReturnValue = `\n<${pTag}>${he.escape(pOnExit)}`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnEntries(pOnEntries?: string[], pDepth: number): string {\n return (pOnEntries ?? [])\n .map((pOnEntry) => renderSimpleTag(pOnEntry, \"onentry\", pDepth))\n .join(\"\");\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnExits(pOnExits?: string[], pDepth: number): string {\n return (pOnExits ?? [])\n .map((pOnExit) => renderSimpleTag(pOnExit, \"onexit\", pDepth))\n .join(\"\");\n}\n\nfunction renderStateAttributes(pState: ISCJSONState): string {\n let lReturnValue = ` id=\"${he.escape(pState.id)}\"`;\n if (pState.initial) {\n lReturnValue += ` initial=\"${he.escape(pState.initial)}\"`;\n }\n if (pState.type) {\n lReturnValue += ` type=\"${he.escape(pState.type)}\"`;\n }\n return lReturnValue;\n}\n\nfunction renderState(pState: ISCJSONState, pDepth: number): string {\n let lReturnValue = `\\n<${pState.kind}${renderStateAttributes(pState)}>`;\n // eslint-disable-next-line no-use-before-define -- recursion\n lReturnValue += renderStates(pState.states, pDepth);\n lReturnValue += renderOnEntries(pState.onentries, pDepth);\n lReturnValue += renderOnExits(pState.onexits, pDepth);\n lReturnValue += renderTransitions(pState.transitions, pDepth);\n lReturnValue += `\\n`;\n\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderStates(pStates?: ISCJSONState[], pDepth = 1): string {\n return (pStates ?? []).map((pState) => renderState(pState, pDepth)).join(\"\");\n}\n\nfunction renderInitialAttribute(pInitialString?: string): string {\n return pInitialString ? `initial=\"${pInitialString}\" ` : \"\";\n}\n\nexport default function renderSCXML(pSCJSON: ISCJSONMachine): string {\n return `\n${renderStates(pSCJSON.states)}\n\n`;\n}\n", "import type { StringRenderFunctionType } from \"types/state-machine-cat.mjs\";\nimport ast2scjson from \"../scjson/index.mjs\";\nimport renderFomSCJSON from \"./render-from-scjson.mjs\";\n\nconst renderSCXML: StringRenderFunctionType = (pStateMachine) =>\n renderFomSCJSON(ast2scjson(pStateMachine));\n\nexport default renderSCXML;\n", "import type {\n OutputType,\n RenderFunctionType,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport smcatRendererAsImported from \"./smcat.mjs\";\nimport renderDot from \"./dot/index.mjs\";\nimport svg from \"./vector/vector-with-wasm.mjs\";\nimport scjson from \"./scjson/index.mjs\";\nimport scxml from \"./scxml/index.mjs\";\n\n// tsc doesn't recognize the function that smcat/index.js exports as\n// StringRenderFunctionType, so we hack around it\nconst smcat = smcatRendererAsImported as StringRenderFunctionType;\n\nexport default function getRenderFunction(\n pOutputType: OutputType,\n): RenderFunctionType {\n const lOutputType2RenderFunctionMap: Map =\n // @ts-expect-error - now renderDot is typed, typescript seems to have an issue\n // with it. Works perfectly fine, though, so we're ignoring it for now.\n new Map([\n [\"smcat\", smcat],\n [\"dot\", renderDot],\n [\"svg\", svg],\n [\"oldsvg\", svg],\n [\"scjson\", scjson],\n [\"scxml\", scxml],\n ]);\n\n return lOutputType2RenderFunctionMap.get(pOutputType) ?? ((pX) => pX);\n}\n", "// generated by tools/get-version.mts - edits will be overwritten\nexport const version = \"12.0.20\";\n", "/* eslint-disable budapestian/global-constant-pattern */\nimport type {\n IAllowedValues,\n IRenderOptions,\n IStateMachine,\n OutputType,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"./options.mjs\";\nimport parse from \"./parse/index.mjs\";\nimport desugar from \"./transform/desugar.mjs\";\nimport getRenderFunction from \"./render/index.mjs\";\nimport { version as _version } from \"./version.mjs\";\n\n/**\n * Translates the input script to an output-script.\n *\n * @throws {Error} if an error occurred and no callback\n * function was passed: the error\n *\n * Options: see https://github.com/sverweij/state-machine-cat/docs/api.md\n *\n */\nexport function render(\n pScript: string | IStateMachine,\n pOptions: IRenderOptions,\n): string {\n const lOptions = pOptions ?? {};\n const lStateMachine = parse.getAST(pScript, lOptions);\n const lDesugar = options.getOptionValue(lOptions, \"desugar\");\n\n return getRenderFunction(\n options.getOptionValue(lOptions, \"outputType\") as OutputType,\n )(lDesugar ? desugar(lStateMachine) : lStateMachine, lOptions);\n}\n\n/**\n * The current (semver compliant) version number string of\n * state machine cat\n */\nexport const version: string = _version;\n\n/**\n * Returns an object with each of the options you can pass to\n * the render function\n * - the default value\n * - the possible values in an array of objects, each of which\n * has the properties:\n * - name: the value\n */\nexport function getAllowedValues(): IAllowedValues {\n return options.getAllowedValues();\n}\n\nexport default {\n render,\n version,\n getAllowedValues,\n};\n", "import smcat from \"../src/index.mjs\";\n\nconst MIME2LANG = Object.freeze({\n \"text/x-smcat\": \"smcat\",\n \"text/x-scxml\": \"scxml\",\n \"text/x-smcat-json\": \"json\",\n});\n\nfunction getResponseStatus(pResponse) {\n if (pResponse.ok) {\n return Promise.resolve(pResponse);\n } else {\n return Promise.reject(new Error(pResponse.statusText));\n }\n}\n\nfunction getResponseText(pResponse) {\n return pResponse.text();\n}\n\nfunction getScriptSource(pScript) {\n const lSourceURL = pScript.getAttribute(\"src\");\n if (lSourceURL) {\n return fetch(lSourceURL).then(getResponseStatus).then(getResponseText);\n }\n // when there's no \"src\" attribute, return the textContent\n // (in a Promise to have a consistent interface)\n return new Promise((pResolve, pReject) => {\n if (pScript.textContent && pScript.textContent.length > 0) {\n pResolve(pScript.textContent);\n } else {\n pReject(new Error(\"ERROR: this element doesn't contain any text\"));\n }\n });\n}\n\nfunction renderPre(pString) {\n let lReturnValue = document.createElement(\"pre\");\n lReturnValue.textContent = pString;\n return lReturnValue;\n}\n\nfunction renderCodeError(pString) {\n const lReturnValue = document.createElement(\"code\");\n lReturnValue.setAttribute(\"style\", \"color:red\");\n lReturnValue.textContent = pString;\n return lReturnValue;\n}\n\nfunction renderInElement(pSource, pOptions) {\n let lRenderedString = smcat.render(pSource, pOptions);\n\n switch (pOptions.outputType) {\n case \"json\":\n case \"scjson\": {\n return renderPre(JSON.stringify(lRenderedString, null, \" \"));\n }\n case \"svg\": {\n return new DOMParser().parseFromString(lRenderedString, \"image/svg+xml\")\n .documentElement;\n }\n default: {\n return renderPre(lRenderedString);\n }\n }\n}\nfunction renderScript(pScriptElement) {\n if (!pScriptElement.dataset.renderedby) {\n pScriptElement.dataset.renderedby = \"state-machine-cat\";\n getScriptSource(pScriptElement)\n .then((pSrc) => {\n pScriptElement.after(\n renderInElement(pSrc, {\n inputType: MIME2LANG[pScriptElement.type],\n outputType:\n pScriptElement.getAttribute(\"data-output-type\") || \"svg\",\n direction: pScriptElement.dataset.direction || \"top-down\",\n engine: pScriptElement.dataset.engine || \"dot\",\n desugar: pScriptElement.dataset.desugar || false,\n dotGraphAttrs: [{ name: \"bgcolor\", value: \"transparent\" }],\n })\n );\n })\n .catch((pErr) => {\n pScriptElement.after(\n renderCodeError(\n `Could not render ${\n pScriptElement.src\n ? `\"${pScriptElement.src}\"`\n : (pScriptElement.textContent && \"provided text content\") ||\n \"(no text content)\"\n }${pErr ? `: ${pErr}` : \"\"}`\n )\n );\n });\n }\n}\n\nfunction observerCallback(pEntries, _pObserver) {\n pEntries.forEach((pEntry) => {\n if (pEntry.isIntersecting) {\n const lScriptElement = pEntry.target.previousElementSibling;\n if (lScriptElement.tagName === \"SCRIPT\") {\n renderScript(lScriptElement);\n }\n }\n });\n}\n\nlet OBSERVER = new IntersectionObserver(observerCallback, { threshold: 1 });\n\nconst SCRIPT_ELEMENTS = [...document.scripts].filter(\n (pScript) => !!MIME2LANG[pScript.type]\n);\n\nSCRIPT_ELEMENTS.forEach((pScriptElement) => {\n // scripts are not visible, hence observing them for visibility\n // is doing nothing. Workaround: insert a marker element right\n // after it that _is_ visible, and observe that.\n const lScriptMarker = document.createElement(\"smcat-marker\");\n pScriptElement.after(lScriptMarker);\n\n OBSERVER.observe(lScriptMarker);\n});\n\n// Observer trickery, of course, is nice, but when you print a page\n// you want all of the graphs to show up anyway. This ensures that\n// that indeed happens at the right time:\nwindow.addEventListener(\"beforeprint\", (_pEvent) => {\n SCRIPT_ELEMENTS.forEach(renderScript);\n});\n\n/* eslint security/detect-object-injection: 0 */\n"], - "mappings": "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AO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,SAAS,KAAK,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,MAAM,OAAO,MAAM,SAAS,KAAK,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAO,OAAO,OAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,GAAK,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,OAAS,UAAU,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,QAAQ,OAAS,QAAQ,SAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,SAAS,OAAS,MAAM,OAAS,MAAM,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,OAAS,OAAO,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,SAAS,QAAQ,OAAS,UAAU,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,KAAK,OAAO,QAAQ,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,UAAU,OAAS,UAAU,OAAS,KAAK,OAAS,MAAM,OAAS,KAAK,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,UAAU,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,EAE5m0BC,EAAc,YACdC,EAAY,CACf,IAAK,SACL,IAAK,QACL,IAAM,SACN,IAAK,OAKL,IAAK,OAKL,IAAK,QACN,EAEIC,EAAqB,kCACrBC,EAA2B,qPAC3BC,EAAc,i8gBACdC,EAAY,CAAC,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,GAAK,SAAS,IAAM,SAAS,IAAM,eAAe,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,MAAQ,OAAO,MAAQ,OAAO,GAAK,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,OAAO,OAAS,OAAO,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,IAAI,IAAM,IAAI,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,SAAS,SAAW,SAAS,KAAO,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,OAAS,SAAS,MAAQ,OAAO,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,GAAK,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,IAAK,cAAgB,SAAS,OAAS,SAAS,SAAW,SAAS,MAAQ,OAAO,MAAQ,OAAO,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,IAAM,IAAI,MAAQ,SAAS,QAAU,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,SAAW,SAAS,MAAQ,SAAS,SAAW,SAAS,YAAc,SAAS,UAAY,SAAS,QAAU,SAAS,UAAY,SAAS,UAAY,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,KAAO,SAAS,SAAW,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,WAAa,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,UAAY,SAAS,SAAW,SAAS,QAAU,SAAS,gBAAkB,SAAS,cAAgB,SAAS,SAAW,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,aAAe,SAAS,YAAc,SAAS,cAAgB,SAAS,kBAAoB,SAAS,kBAAoB,SAAS,mBAAqB,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,UAAU,QAAU,eAAe,KAAO,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,QAAU,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,OAAO,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,KAAK,MAAQ,SAAS,SAAW,SAAS,KAAO,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,qBAAuB,SAAS,KAAO,eAAe,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO,QAAU,OAAO,QAAU,SAAS,KAAO,OAAO,UAAY,OAAO,UAAY,OAAO,IAAM,YAAe,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,UAAY,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,gBAAkB,SAAS,iBAAmB,SAAS,WAAa,SAAS,YAAc,SAAS,YAAc,SAAS,UAAY,SAAS,SAAW,OAAO,SAAW,SAAS,YAAc,SAAS,WAAa,SAAS,YAAc,SAAS,KAAO,SAAS,KAAO,SAAS,SAAW,SAAS,OAAS,SAAS,QAAU,SAAS,yBAA2B,SAAS,sBAAwB,SAAS,gBAAkB,SAAS,MAAQ,SAAS,SAAW,SAAS,MAAQ,IAAI,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,MAAQ,IAAI,OAAS,IAAI,KAAO,SAAS,OAAS,SAAS,WAAa,SAAS,UAAY,SAAS,KAAO,SAAS,QAAU,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,gBAAkB,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,UAAY,SAAS,KAAO,OAAO,KAAO,OAAO,OAAS,SAAS,gCAAkC,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,IAAM,SAAS,IAAM,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,eAAe,OAAS,SAAS,QAAU,SAAS,YAAc,SAAS,YAAc,SAAS,SAAW,SAAS,WAAa,SAAS,OAAS,OAAO,eAAiB,SAAS,gBAAkB,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,GAAK,SAAS,GAAK,SAAS,QAAU,SAAS,MAAQ,SAAS,SAAW,SAAS,QAAU,SAAS,IAAM,OAAO,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,iBAAmB,OAAO,eAAiB,SAAS,uBAAyB,SAAS,iBAAmB,IAAI,iBAAmB,SAAS,KAAO,SAAS,QAAU,SAAS,QAAU,SAAS,YAAc,SAAS,MAAQ,SAAS,IAAM,OAAO,cAAgB,SAAS,QAAU,SAAS,MAAQ,SAAS,IAAM,OAAO,OAAS,OAAO,cAAgB,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,IAAI,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,IAAM,OAAO,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,QAAU,SAAS,UAAY,SAAS,eAAiB,SAAS,sBAAwB,SAAS,UAAY,OAAO,gBAAkB,SAAS,gBAAkB,SAAS,qBAAuB,SAAS,cAAgB,SAAS,oBAAsB,SAAS,yBAA2B,SAAS,qBAAuB,SAAS,iBAAmB,SAAS,eAAiB,SAAS,cAAgB,SAAS,kBAAoB,SAAS,kBAAoB,SAAS,UAAY,SAAS,UAAY,SAAS,UAAY,SAAS,aAAe,SAAS,iBAAmB,SAAS,UAAY,SAAS,eAAiB,SAAS,gBAAkB,SAAS,iBAAmB,SAAS,oBAAsB,SAAS,kBAAoB,SAAS,eAAiB,SAAS,kBAAoB,SAAS,mBAAqB,SAAS,gBAAkB,SAAS,mBAAqB,SAAS,QAAU,SAAS,aAAe,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,SAAS,SAAW,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,OAAO,MAAQ,OAAO,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,MAAQ,SAAS,IAAM,YAAe,IAAM,YAAe,GAAK,SAAS,OAAS,OAAO,OAAS,OAAO,IAAM,SAAS,OAAS,SAAS,GAAK,SAAS,QAAU,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,iBAAmB,SAAS,OAAS,SAAS,qBAAuB,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,MAAQ,SAAS,WAAa,SAAS,YAAc,SAAS,MAAQ,SAAS,OAAS,IAAI,WAAa,SAAS,OAAS,SAAS,YAAc,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,SAAS,KAAO,IAAI,MAAQ,SAAS,OAAS,SAAS,YAAc,SAAS,aAAe,SAAS,aAAe,SAAS,cAAgB,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,kBAAoB,SAAS,sBAAwB,SAAS,MAAQ,KAAK,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,WAAa,SAAS,SAAW,SAAS,OAAS,OAAO,OAAS,SAAS,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,GAAK,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,eAAe,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,GAAK,SAAS,GAAK,SAAS,IAAM,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,MAAQ,IAAI,aAAe,SAAS,iBAAmB,SAAS,iBAAmB,SAAS,eAAiB,SAAS,YAAc,SAAS,kBAAoB,SAAS,aAAe,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,IAAI,GAAK,SAAS,GAAK,IAAI,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,UAAY,SAAS,WAAa,SAAS,QAAU,SAAS,OAAS,SAAS,UAAY,eAAe,KAAO,eAAe,MAAQ,SAAS,OAAS,SAAS,KAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,MAAQ,SAAS,IAAM,IAAI,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,SAAS,aAAe,SAAS,SAAW,SAAS,SAAW,SAAS,MAAQ,SAAS,OAAS,SAAS,cAAgB,SAAS,eAAiB,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,eAAiB,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,aAAe,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,GAAK,SAAS,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO,IAAM,SAAS,IAAM,YAAe,IAAM,SAAS,OAAS,OAAO,OAAS,OAAO,GAAK,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,WAAa,SAAS,SAAW,SAAS,SAAW,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,QAAU,SAAS,GAAK,SAAS,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,aAAe,SAAS,SAAW,SAAS,QAAU,SAAS,eAAiB,SAAS,eAAiB,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,OAAO,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,GAAK,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,OAAO,KAAO,OAAO,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,WAAa,SAAS,MAAQ,OAAO,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,eAAe,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,IAAI,OAAS,IAAI,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,IAAI,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,SAAS,GAAK,SAAS,GAAK,SAAS,iBAAmB,SAAS,UAAY,SAAS,UAAY,SAAS,UAAY,SAAS,aAAe,SAAS,oBAAsB,SAAS,cAAgB,SAAS,YAAc,SAAS,kBAAoB,SAAS,kBAAoB,SAAS,eAAiB,SAAS,kBAAoB,SAAS,UAAY,SAAS,gBAAkB,SAAS,cAAgB,SAAS,eAAiB,SAAS,eAAiB,SAAS,eAAiB,SAAS,eAAiB,SAAS,gBAAkB,SAAS,kBAAoB,SAAS,oBAAsB,SAAS,gBAAkB,SAAS,QAAU,SAAS,aAAe,SAAS,cAAgB,SAAS,eAAiB,SAAS,aAAe,SAAS,gBAAkB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,gBAAkB,SAAS,aAAe,SAAS,gBAAkB,SAAS,WAAa,SAAS,cAAgB,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,eAAe,OAAS,SAAS,WAAa,SAAS,QAAU,SAAS,UAAY,SAAS,WAAa,SAAS,iBAAmB,SAAS,cAAgB,SAAS,YAAc,SAAS,QAAU,SAAS,SAAW,SAAS,QAAU,SAAS,eAAiB,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,GAAK,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,GAAK,SAAS,MAAQ,SAAS,SAAW,SAAS,WAAa,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,WAAa,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,cAAgB,SAAS,cAAgB,SAAS,cAAgB,SAAS,mBAAqB,SAAS,mBAAqB,SAAS,mBAAqB,SAAS,WAAa,SAAS,eAAiB,SAAS,eAAiB,SAAS,eAAiB,SAAS,cAAgB,SAAS,eAAiB,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,IAAI,eAAiB,SAAS,gBAAkB,SAAS,IAAM,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,IAAI,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,IAAI,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,GAAK,IAAI,GAAK,SAAS,GAAK,IAAI,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,QAAU,SAAS,UAAY,eAAe,KAAO,eAAe,KAAO,OAAO,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,WAAa,SAAS,WAAa,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,cAAgB,SAAS,YAAc,SAAS,UAAY,SAAS,IAAM,YAAe,IAAM,YAAe,IAAM,SAAS,MAAQ,OAAO,IAAM,SAAS,OAAS,IAAI,OAAS,SAAS,OAAS,OAAO,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,UAAY,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,GAAK,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,GAAK,SAAS,GAAK,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,eAAe,IAAM,SAAS,KAAO,eAAe,MAAQ,eAAe,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,OAAO,MAAQ,eAAe,OAAS,eAAe,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,SAAW,eAAe,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,GAAK,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,eAAe,oBAAsB,SAAS,mBAAqB,SAAS,kBAAoB,SAAS,sBAAwB,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,eAAe,qBAAuB,SAAS,eAAiB,SAAS,QAAU;AAAA,EAAK,OAAS,SAAS,QAAU,SAAS,IAAM,YAAe,IAAM,YAAe,IAAM,SAAS,IAAM,eAAe,KAAO,SAAS,MAAQ,eAAe,UAAY,eAAe,KAAO,eAAe,IAAM,eAAe,MAAQ,SAAS,IAAM,SAAS,IAAM,eAAe,KAAO,SAAS,KAAO,eAAe,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,IAAM,SAAS,KAAO,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,IAAM,SAAS,IAAM,eAAe,WAAa,SAAS,WAAa,SAAS,gBAAkB,SAAS,gBAAkB,SAAS,KAAO,SAAS,MAAQ,eAAe,UAAY,eAAe,KAAO,eAAe,MAAQ,SAAS,IAAM,eAAe,MAAQ,SAAS,IAAM,SAAS,IAAM,eAAe,MAAQ,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,SAAS,QAAU,SAAS,iBAAmB,OAAO,KAAO,YAAe,KAAO,SAAS,IAAM,OAAO,IAAM,SAAS,aAAe,SAAS,UAAY,SAAS,qBAAuB,SAAS,WAAa,SAAS,SAAW,SAAS,cAAgB,eAAe,UAAY,SAAS,WAAa,SAAS,gBAAkB,SAAS,oBAAsB,eAAe,kBAAoB,eAAe,eAAiB,SAAS,qBAAuB,eAAe,gBAAkB,SAAS,gBAAkB,eAAe,aAAe,eAAe,MAAQ,SAAS,SAAW,eAAe,OAAS,eAAe,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,gBAAkB,SAAS,mBAAqB,eAAe,qBAAuB,SAAS,QAAU,SAAS,aAAe,SAAS,eAAiB,SAAS,YAAc,eAAe,kBAAoB,eAAe,aAAe,SAAS,wBAA0B,eAAe,kBAAoB,eAAe,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,YAAc,SAAS,iBAAmB,eAAe,sBAAwB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,oBAAsB,eAAe,sBAAwB,SAAS,gBAAkB,eAAe,qBAAuB,SAAS,kBAAoB,eAAe,uBAAyB,SAAS,UAAY,eAAe,eAAiB,SAAS,YAAc,SAAS,iBAAmB,eAAe,sBAAwB,SAAS,iBAAmB,eAAe,YAAc,eAAe,iBAAmB,SAAS,SAAW,SAAS,cAAgB,SAAS,kBAAoB,SAAS,cAAgB,SAAS,eAAiB,SAAS,KAAO,SAAS,UAAY,SAAS,OAAS,eAAe,MAAQ,eAAe,QAAU,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,eAAe,MAAQ,SAAS,QAAU,eAAe,MAAQ,SAAS,MAAQ,SAAS,OAAS,eAAe,OAAS,eAAe,YAAc,SAAS,YAAc,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,YAAe,KAAO,YAAe,UAAY,SAAS,eAAiB,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,eAAe,QAAU,eAAe,UAAY,SAAS,WAAa,eAAe,MAAQ,SAAS,QAAU,eAAe,KAAO,SAAS,MAAQ,SAAS,MAAQ,eAAe,QAAU,eAAe,UAAY,SAAS,WAAa,eAAe,KAAO,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,cAAgB,SAAS,gBAAkB,SAAS,eAAiB,SAAS,iBAAmB,SAAS,GAAK,SAAS,GAAK,SAAS,IAAM,IAAI,OAAS,SAAS,MAAQ,SAAS,KAAO,eAAe,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,UAAU,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,UAAU,QAAU,eAAe,OAAS,SAAS,QAAU,eAAe,MAAQ,eAAe,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,OAAS,OAAO,OAAS,OAAO,IAAM,SAAS,MAAQ,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,KAAO,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,qBAAuB,SAAS,eAAiB,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,MAAQ,SAAS,IAAM,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,OAAO,KAAO,OAAO,OAAS,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,SAAS,GAAK,SAAS,KAAO,SAAS,KAAO,YAAe,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,KAAO,OAAO,KAAO,OAAO,MAAQ,SAAS,QAAU,SAAS,UAAY,SAAS,YAAc,SAAS,gBAAkB,SAAS,IAAM,SAAS,KAAO,OAAO,SAAW,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,IAAI,OAAS,IAAI,OAAS,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,YAAe,IAAM,YAAe,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,UAAY,SAAS,IAAM,SAAS,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,KAAO,IAAI,SAAW,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,UAAY,OAAO,OAAS,OAAO,QAAU,SAAS,QAAU,SAAS,GAAK,OAAO,cAAgB,SAAS,SAAW,SAAS,KAAO,YAAe,KAAO,SAAS,MAAQ,OAAO,GAAK,SAAS,GAAK,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,WAAa,SAAS,YAAc,SAAS,SAAW,SAAS,cAAgB,SAAS,mBAAqB,SAAS,cAAgB,SAAS,OAAS,SAAS,YAAc,SAAS,SAAW,SAAS,SAAW,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,OAAS,SAAS,KAAO,SAAS,QAAU,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,KAAO,SAAS,WAAa,SAAS,aAAe,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,YAAc,SAAS,QAAU,SAAS,MAAQ,IAAI,QAAU,SAAS,KAAO,IAAI,KAAO,IAAI,MAAQ,SAAS,KAAO,eAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,OAAO,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,UAAY,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,IAAI,OAAS,IAAI,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,IAAI,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,KAAO,SAAS,GAAK,SAAS,KAAO,SAAS,QAAU,SAAS,SAAW,SAAS,MAAQ,SAAS,KAAO,SAAS,IAAM,OAAO,IAAM,OAAO,eAAiB,SAAS,mBAAqB,SAAS,qBAAuB,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,kBAAoB,SAAS,WAAa,SAAS,WAAa,SAAS,WAAa,SAAS,cAAgB,SAAS,oBAAsB,SAAS,eAAiB,SAAS,aAAe,SAAS,mBAAqB,SAAS,mBAAqB,SAAS,gBAAkB,SAAS,mBAAqB,SAAS,WAAa,SAAS,iBAAmB,SAAS,eAAiB,SAAS,gBAAkB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,gBAAkB,SAAS,SAAW,SAAS,cAAgB,SAAS,eAAiB,SAAS,gBAAkB,SAAS,cAAgB,SAAS,iBAAmB,SAAS,mBAAqB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,cAAgB,SAAS,iBAAmB,SAAS,YAAc,SAAS,eAAiB,SAAS,KAAO,SAAS,aAAe,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,OAAS,SAAS,WAAa,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,QAAU,SAAS,aAAe,SAAS,KAAO,IAAI,OAAS,SAAS,SAAW,SAAS,MAAQ,SAAS,YAAc,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,IAAI,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,YAAc,SAAS,QAAU,SAAS,GAAK,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,OAAS,SAAS,SAAW,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,OAAO,KAAO,IAAI,OAAS,SAAS,SAAW,SAAS,MAAQ,SAAS,KAAO,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,eAAiB,SAAS,eAAiB,SAAS,SAAW,SAAS,cAAgB,SAAS,gBAAkB,SAAS,aAAe,SAAS,IAAM,OAAO,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,YAAc,SAAS,cAAgB,SAAS,OAAS,SAAS,SAAW,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,eAAe,OAAS,SAAS,OAAS,SAAS,IAAM,IAAI,KAAO,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,UAAY,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,eAAe,MAAQ,SAAS,OAAS,eAAe,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,WAAa,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,WAAa,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,mBAAqB,SAAS,aAAe,SAAS,kBAAoB,SAAS,eAAiB,SAAS,oBAAsB,SAAS,YAAc,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,gBAAkB,SAAS,YAAc,SAAS,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,UAAY,SAAS,YAAc,SAAS,UAAY,SAAS,WAAa,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,WAAa,SAAS,YAAc,SAAS,SAAW,SAAS,cAAgB,SAAS,mBAAqB,SAAS,cAAgB,SAAS,OAAS,SAAS,YAAc,SAAS,SAAW,SAAS,SAAW,SAAS,QAAU,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,SAAW,SAAS,cAAgB,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,UAAY,SAAS,UAAY,SAAS,WAAa,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,MAAQ,OAAO,IAAM,IAAK,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,UAAY,SAAS,UAAY,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,OAAS,SAAS,YAAc,SAAS,SAAW,SAAS,WAAa,eAAe,OAAS,SAAS,UAAY,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,OAAO,MAAQ,OAAO,MAAQ,SAAS,MAAQ,SAAS,WAAa,SAAS,eAAiB,SAAS,WAAa,SAAS,MAAQ,OAAO,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,QAAU,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,aAAe,SAAS,aAAe,SAAS,eAAiB,SAAS,UAAY,SAAS,cAAgB,SAAS,gBAAkB,SAAS,OAAS,SAAS,KAAO,SAAS,SAAW,SAAS,UAAY,SAAS,QAAU,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,iBAAmB,SAAS,kBAAoB,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,OAAO,SAAW,IAAI,WAAa,SAAS,aAAe,SAAS,iBAAmB,SAAS,MAAQ,SAAS,UAAY,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,WAAa,SAAS,iBAAmB,SAAS,YAAc,SAAS,YAAc,SAAS,YAAc,SAAS,cAAgB,SAAS,cAAgB,SAAS,eAAiB,SAAS,MAAQ,SAAS,eAAiB,SAAS,gBAAkB,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,WAAa,SAAS,WAAa,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,OAAO,KAAO,OAAO,QAAU,SAAS,OAAS,SAAS,WAAa,SAAS,SAAW,SAAS,WAAa,SAAS,OAAS,SAAS,MAAQ,SAAS,UAAY,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,SAAW,SAAS,aAAe,eAAe,cAAgB,eAAe,aAAe,eAAe,cAAgB,eAAe,SAAW,SAAS,gBAAkB,SAAS,iBAAmB,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,IAAI,OAAS,SAAS,KAAO,IAAI,KAAO,SAAS,YAAc,SAAS,aAAe,IAAI,kBAAoB,SAAS,cAAgB,SAAS,cAAgB,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,MAAQ,eAAe,MAAQ,eAAe,KAAO,YAAe,KAAO,YAAe,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,eAAe,OAAS,eAAe,OAAS,eAAe,OAAS,eAAe,OAAS,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,YAAe,KAAO,YAAe,GAAK,SAAS,GAAK,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,OAAO,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,KAAO,OAAO,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,eAAiB,SAAS,KAAO,SAAS,KAAO,SAAS,IAAM,YAAe,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,KAAO,YAAe,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,KAAO,QAAQ,EACh9uCC,EAAkB,CAAC,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,IAAI,IAAM,IAAI,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,IAAM,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,GAAK,IAAI,GAAK,IAAI,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,MAAQ,OAAO,GAAK,IAAI,GAAK,IAAI,KAAO,OAAO,MAAQ,OAAO,OAAS,OAAO,KAAO,OAAO,IAAM,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,MAAQ,OAAO,KAAO,IAAI,KAAO,IAAI,MAAQ,OAAO,IAAM,OAAO,IAAM,OAAO,KAAO,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,OAAO,KAAO,MAAM,EAC9hDC,EAAmB,CAAC,EAAI,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,QAAQ,EACrbC,EAA6B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,OAAO,EAI7pBC,EAAqB,OAAO,aAE5BC,EAAS,CAAC,EACVC,EAAiBD,EAAO,eACxBE,EAAM,SAASF,EAAQG,GAAc,CACxC,OAAOF,EAAe,KAAKD,EAAQG,EAAY,CAChD,EAEIC,EAAW,SAASC,EAAOC,GAAO,CAGrC,QAFIC,GAAQ,GACRC,GAASH,EAAM,OACZ,EAAEE,GAAQC,IAChB,GAAIH,EAAME,EAAK,GAAKD,GACnB,MAAO,GAGT,MAAO,EACR,EAEIG,GAAQ,SAASC,EAASC,GAAU,CACvC,GAAI,CAACD,EACJ,OAAOC,GAER,IAAIC,GAAS,CAAC,EACVC,GACJ,IAAKA,MAAOF,GAGXC,GAAOC,EAAG,EAAIX,EAAIQ,EAASG,EAAG,EAAIH,EAAQG,EAAG,EAAIF,GAASE,EAAG,EAE9D,OAAOD,EACR,EAGIE,GAAoB,SAASC,EAAWC,GAAQ,CACnD,IAAIC,GAAS,GACb,OAAKF,GAAa,OAAUA,GAAa,OAAWA,EAAY,SAK3DC,IACHE,EAAW,2DAA2D,EAEhE,UAEJhB,EAAIL,EAAkBkB,CAAS,GAC9BC,IACHE,EAAW,gCAAgC,EAErCrB,EAAiBkB,CAAS,IAE9BC,IAAUZ,EAASN,EAA4BiB,CAAS,GAC3DG,EAAW,gCAAgC,EAExCH,EAAY,QACfA,GAAa,MACbE,IAAUlB,EAAmBgB,IAAc,GAAK,KAAQ,KAAM,EAC9DA,EAAY,MAASA,EAAY,MAElCE,IAAUlB,EAAmBgB,CAAS,EAC/BE,GACR,EAEIE,GAAY,SAASJ,EAAW,CACnC,MAAO,MAAQA,EAAU,SAAS,EAAE,EAAE,YAAY,EAAI,GACvD,EAEIK,EAAY,SAASL,EAAW,CACnC,MAAO,KAAOA,EAAY,GAC3B,EAEIG,EAAa,SAASG,EAAS,CAClC,MAAM,MAAM,gBAAkBA,CAAO,CACtC,EAIIC,GAAS,SAASC,EAAQb,GAAS,CACtCA,GAAUD,GAAMC,GAASY,GAAO,OAAO,EACvC,IAAIN,GAASN,GAAQ,OACjBM,IAAUvB,EAAyB,KAAK8B,CAAM,GACjDL,EAAW,sBAAsB,EAElC,IAAIM,GAAmBd,GAAQ,iBAC3Be,GAAqBf,GAAQ,mBAC7BgB,GAAqBhB,GAAQ,mBAC7BiB,GAAkBjB,GAAQ,QAAUU,EAAYD,GAEhDS,GAAkB,SAASC,GAAQ,CACtC,OAAOF,GAAgBE,GAAO,WAAW,CAAC,CAAC,CAC5C,EAEA,OAAIL,IAEHD,EAASA,EAAO,QAAQrC,EAAqB,SAAS2C,GAAQ,CAE7D,OAAIJ,IAAsBvB,EAAIb,EAAWwC,EAAM,EACvC,IAAMxC,EAAUwC,EAAM,EAAI,IAE3BD,GAAgBC,EAAM,CAC9B,CAAC,EAGGJ,KACHF,EAASA,EACP,QAAQ,cAAe,QAAQ,EAC/B,QAAQ,cAAe,QAAQ,EAC/B,QAAQ,gBAAiB,SAAS,GAGjCE,KAEHF,EAASA,EAAO,QAAQnC,EAAqB,SAASmC,GAAQ,CAE7D,MAAO,IAAMlC,EAAUkC,EAAM,EAAI,GAClC,CAAC,IAGQE,IAGLC,KACJH,EAASA,EAAO,QAAQjC,EAAa,SAASiC,GAAQ,CACrD,MAAO,IAAMlC,EAAUkC,EAAM,EAAI,GAClC,CAAC,GAIFA,EAASA,EACP,QAAQ,cAAe,QAAQ,EAC/B,QAAQ,cAAe,QAAQ,EAEjCA,EAASA,EAAO,QAAQnC,EAAqB,SAASmC,GAAQ,CAE7D,MAAO,IAAMlC,EAAUkC,EAAM,EAAI,GAClC,CAAC,GACUG,KAGXH,EAASA,EAAO,QAAQjC,EAAasC,EAAe,GAE9CL,EAEL,QAAQtC,EAAoB,SAAS6C,GAAI,CAEzC,IAAIC,GAAOD,GAAG,WAAW,CAAC,EACtBE,GAAMF,GAAG,WAAW,CAAC,EACrBf,IAAagB,GAAO,OAAU,KAAQC,GAAM,MAAS,MACzD,OAAOL,GAAgBZ,EAAS,CACjC,CAAC,EAGA,QAAQ5B,EAAmByC,EAAe,CAC7C,EAEAN,GAAO,QAAU,CAChB,mBAAsB,GACtB,iBAAoB,GACpB,OAAU,GACV,mBAAsB,GACtB,QAAY,EACb,EAEA,IAAIW,GAAS,SAASC,EAAMxB,GAAS,CACpCA,GAAUD,GAAMC,GAASuB,GAAO,OAAO,EACvC,IAAIjB,GAASN,GAAQ,OACrB,OAAIM,IAAUxB,EAAmB,KAAK0C,CAAI,GACzChB,EAAW,+BAA+B,EAEpCgB,EAAK,QAAQxC,EAAa,SAASoC,GAAIK,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAI,CAC7E,IAAI3B,GACA4B,GACAC,GACAC,GACAC,GACAC,GAEJ,OAAIZ,IACHW,GAAYX,GAELxC,EAAUmD,EAAS,GAGvBV,IAIHU,GAAYV,GACZW,GAAOV,GACHU,IAAQrC,GAAQ,kBACfM,IAAU+B,IAAQ,KACrB7B,EAAW,yCAAyC,EAE9CY,KAEHd,IACHE,EACC,6DACD,EAGMtB,EAAgBkD,EAAS,GAAKC,IAAQ,MAI3CT,IAEHM,GAAYN,GACZK,GAAYJ,GACRvB,IAAU,CAAC2B,IACdzB,EAAW,uDAAuD,EAEnEH,GAAY,SAAS6B,GAAW,EAAE,EAC3B9B,GAAkBC,GAAWC,EAAM,GAGvCwB,IAEHK,GAAYL,GACZG,GAAYF,GACRzB,IAAU,CAAC2B,IACdzB,EAAW,uDAAuD,EAEnEH,GAAY,SAAS8B,GAAW,EAAE,EAC3B/B,GAAkBC,GAAWC,EAAM,IAKvCA,IACHE,EACC,6DACD,EAEMY,GACR,CAAC,CACF,EAEAG,GAAO,QAAU,CAChB,iBAAoB,GACpB,OAAU,EACX,EAEA,IAAIe,GAAS,SAASzB,EAAQ,CAC7B,OAAOA,EAAO,QAAQjC,EAAa,SAASwC,GAAI,CAE/C,OAAOvC,EAAUuC,EAAE,CACpB,CAAC,CACF,EAIImB,EAAK,CACR,QAAW,QACX,OAAU3B,GACV,OAAUW,GACV,OAAUe,GACV,SAAYf,EACb,EAIA,GACC,OAAO,QAAU,YACjB,OAAO,OAAO,KAAO,UACrB,OAAO,IAEP,OAAO,UAAW,CACjB,OAAOgB,CACR,CAAC,UACSnE,GAAe,CAACA,EAAY,SACtC,GAAIC,EACHA,EAAW,QAAUkE,MAErB,SAASpC,MAAOoC,EACf/C,EAAI+C,EAAIpC,EAAG,IAAM/B,EAAY+B,EAAG,EAAIoC,EAAGpC,EAAG,QAI5ChC,EAAK,GAAKoE,CAGZ,GAAEtE,EAAI,ICnVN,IAAMuE,GAAiC,OAAO,OAAO,CACnD,UAAW,CACT,QAAS,QACT,OAAQ,CAAC,CAAE,KAAM,OAAQ,EAAG,CAAE,KAAM,MAAO,EAAG,CAAE,KAAM,OAAQ,CAAC,CACjE,EACA,WAAY,CACV,QAAS,MACT,OAAQ,CACN,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,MAAO,EACf,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,IAAK,EACb,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,KAAM,CAChB,CACF,EACA,OAAQ,CACN,QAAS,MACT,OAAQ,CACN,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,OAAQ,CAClB,CACF,EACA,UAAW,CACT,QAAS,WACT,OAAQ,CACN,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,YAAa,EACrB,CAAE,KAAM,YAAa,EACrB,CAAE,KAAM,YAAa,CACvB,CACF,EACA,QAAS,CACP,QAAS,GACT,OAAQ,CAAC,CAAE,KAAM,EAAK,EAAG,CAAE,KAAM,EAAM,CAAC,CAC1C,CACF,CAAC,EAEM,SAASC,GACdC,EACAC,EACkB,CAElB,OAAOD,IAAWC,CAAW,GAAKH,GAAeG,CAAW,EAAE,OAChE,CAEO,SAASC,IAAmC,CACjD,OAAOJ,EACT,CAEA,IAAOK,GAAQ,CACb,iBAAAD,GACA,eAAAH,EACF,ECxEA,IAAAK,GAAgB,WCAT,IAAMC,GAAN,KAAc,CACnBC,GAAQ,EAER,YAAYC,EAAiB,EAAG,CAC9B,KAAKD,GAAQC,CACf,CAEA,MAAe,CAEb,MAAO,EAAE,KAAKD,EAChB,CACF,ECEA,SAASE,GACPC,EACAC,EACAC,EAAkB,GACZ,CACNF,EACG,OAAQG,GAAW,EAAQA,EAAO,YAAa,EAC/C,QAASA,GAAW,CAGf,OAAO,OAAOA,EAAO,aAAc,QAAQ,GAG7CJ,GAAmBI,EAAO,aAAa,OAAQF,EAAME,EAAO,IAAI,CAEpE,CAAC,EAEHH,EAAQ,QAASG,GACfF,EAAK,IAAIE,EAAO,KAAM,CACpB,KAAMA,EAAO,KACb,KAAMA,EAAO,KACb,aAAc,EAAQA,EAAO,aAC7B,OAAQD,CACV,CAAC,CACH,CACF,CAEA,SAASE,GAAmBC,EAA6C,CACvE,IAAIC,EAA8B,CAAC,EAEnC,OAAI,OAAO,OAAOD,EAAe,aAAa,IAG5CC,EAAe,gBAAgBD,EAAc,WAAW,GAEtD,OAAO,OAAOA,EAAe,QAAQ,GACvCA,EAAc,OACX,OAAQF,GAAW,EAAQA,EAAO,YAAa,EAC/C,QAASA,GAAW,CACnBG,EAAeA,EAAa,OAG1BF,GAAmBD,EAAO,YAAY,CACxC,CACF,CAAC,EAEEG,CACT,CAEA,IAAqBC,GAArB,KAAuC,CACrCC,GACAC,GAEA,YAAYJ,EAA8B,CACxC,KAAKI,GAAmB,IAAI,IAC5BV,GAAmBM,EAAc,QAAU,CAAC,EAAG,KAAKI,EAAgB,EACpE,KAAKD,GAAwBJ,GAAmBC,CAAa,CAC/D,CAEA,IAAI,sBAAsC,CACxC,OAAO,KAAKG,EACd,CAEA,gBAAgBE,EAA4C,CAC1D,OAAO,KAAKD,GAAiB,IAAIC,CAAK,CACxC,CAEA,kBAAkBC,EAA4B,CAC5C,OAAO,MAAM,KAAK,KAAKF,GAAiB,OAAO,CAAC,EAAE,OAAQN,GACxDQ,EAAO,SAASR,EAAO,IAAI,CAC7B,CACF,CAEA,4BAA4BS,EAAmC,CAC7D,OAAO,KAAKJ,GAAsB,OAC/BK,GACCA,EAAY,OAASD,GACrBC,EAAY,KAAOD,GACnBC,EAAY,OAAS,UACzB,CACF,CAEA,sBAAsBC,EAAuC,CAC3D,OAAO,KAAKN,GAAsB,OAC/BK,GAAgBA,EAAY,OAASC,CACxC,CACF,CAEA,oBAAoBC,EAAqC,CACvD,OAAO,KAAKP,GAAsB,OAC/BK,GAAgBA,EAAY,KAAOE,CACtC,CACF,CAEA,wBAAiC,CAC/B,OAAO,KAAK,IAAI,GAAG,KAAKP,GAAsB,IAAI,CAAC,CAAE,GAAAQ,CAAG,IAAMA,CAAE,CAAC,CACnE,CAEA,0BACEJ,EACAK,EACe,CACf,OAAO,KAAKT,GAAsB,OAC/BK,GACC,CAACI,EAAY,IAAIJ,EAAY,EAAE,GAC/BA,EAAY,OAASD,GACrB,KAAKH,GAAiB,IAAII,EAAY,EAAE,GAAG,SACzC,KAAKJ,GAAiB,IAAIG,CAAU,GAAG,MAC7C,CACF,CACF,ECnHA,IAAMM,GACJ,mDAEIC,GAAa,IAAI,OAAOD,EAAsB,EAEpD,SAASE,GAAYC,EAA4BC,EAAwB,CACvE,OAAOD,EAAiB,SAASC,CAAK,CACxC,CAOA,IAAMC,GAAoC,CACxC,CACE,GAAI,UACJ,UAAW,SACb,EACA,CACE,GAAI,QACJ,UAAW,OACb,EACA,CACE,GAAI,WACJ,UAAW,UACb,EACA,CACE,GAAI,kCACJ,UAAW,aACb,EACA,CACE,GAAI,UACJ,UAAW,SACb,EACA,CACE,GAAI,QACJ,UAAW,QACb,EACA,CACE,GAAI,OACJ,UAAW,UACb,CACF,EAEA,SAASC,GAAQF,EAAe,CAC9B,OAAQG,GAAsCA,EAAO,GAAG,KAAKH,CAAK,CACpE,CAEA,SAASI,GAAaJ,EAA0B,CAC9C,OAAQC,GAAc,KAAKC,GAAQF,CAAK,CAAC,GAAK,CAAE,UAAW,SAAU,GAClE,SACL,CAEA,SAASK,GAAUL,EAAuB,CACxC,MAAO,CACL,KAAMA,EACN,KAAMI,GAAaJ,CAAK,CAC1B,CACF,CAEA,SAASM,GAAYC,EAAyB,CAC5C,MAAO,EAAQA,EAAO,YACxB,CAEA,SAASC,GAAyBC,EAAwC,CACxE,IAAMC,EAAUD,GAAe,QAAU,CAAC,EAE1C,OAAOC,EAAQ,OAAOJ,EAAW,EAAE,OACjC,CAACK,EAAgBC,IACfD,EAAe,OAGbH,GAAyBI,EAAW,YAA6B,CACnE,EACFF,EAAQ,IAAI,CAAC,CAAE,KAAAG,CAAK,IAAMA,CAAI,CAChC,CACF,CAEA,SAASC,GACPL,EACAV,EACU,CACVA,EACEA,GAAoBS,GAAyBC,CAAa,EAE5DA,EAAc,OAASA,GAAe,QAAU,CAAC,EACjD,IAAMM,EAAeN,GAAe,aAAe,CAAC,EAEpD,OAAAA,EAAc,OAAO,OAAOH,EAAW,EAAE,QAASC,GAAW,CAE3DA,EAAO,aAAa,OAASO,GAE3BP,EAAO,aACPR,CACF,CACF,CAAC,EAEDgB,EAAa,QAASC,GAAgB,CAC/BlB,GAAYC,EAAkBiB,EAAY,IAAI,IACjDjB,EAAiB,KAAKiB,EAAY,IAAI,EACtCP,EAAc,OAAO,KAAKJ,GAAUW,EAAY,IAAI,CAAC,GAElDlB,GAAYC,EAAkBiB,EAAY,EAAE,IAC/CjB,EAAiB,KAAKiB,EAAY,EAAE,EACpCP,EAAc,OAAO,KAAKJ,GAAUW,EAAY,EAAE,CAAC,EAEvD,CAAC,EACMP,EAAc,MACvB,CAEA,SAASQ,GACPC,EACAC,EACW,CACX,IAAIC,EAA0B,WAE9B,OAAIF,GAAkB,GAAKC,EAAiB,IAC1CC,EAAe,QAEbF,EAAiB,GAAKC,GAAkB,IAC1CC,EAAe,QAGVA,CACT,CAEA,SAASC,GACPZ,EACAa,EAA8B,IAAIC,GAAkBd,CAAa,EAClD,CAEf,OAAAA,EAAc,OAASA,EAAc,OAAO,IAAKF,GAAW,CAC1D,GAAIA,EAAO,OAAS,YAAc,CAACA,EAAO,kBAAmB,CAC3D,IAAMiB,EAAiBF,EAA4B,oBACjDf,EAAO,IACT,EAAE,OACIkB,EAAiBH,EAA4B,sBACjDf,EAAO,IACT,EAAE,OAEFA,EAAO,KAAOU,GAAiBO,EAAgBC,CAAc,CAC/D,CACA,OAAIlB,EAAO,eACTA,EAAO,aAAec,GACpBd,EAAO,aACPe,CACF,GAEKf,CACT,CAAC,EAEME,CACT,CAEA,SAASiB,GAAWC,EAAmBC,EAA4B,CACjE,OAAOD,EAAU,OAASC,EAAU,IACtC,CAEA,SAASC,GACPC,EACAC,EACA,CACA,OAAOD,EAAO,OAAO,CAACE,EAAkBC,IAAsB,CAC5D,IAAMC,EAAeF,EAAK,UAAWG,GACnCJ,EAAeI,EAAUF,CAAO,CAClC,EAEA,OAAIC,EAAe,IAEjBF,EAAKE,CAAY,EAAID,EACdD,GAEFA,EAAK,OAAOC,CAAO,CAC5B,EAAG,CAAC,CAAC,CACP,CAEA,SAASG,GAA0BC,EAIjC,CAEA,IAAMC,EAA0B,qCAC1BlB,EAAmE,CAAC,EAIpEmB,EAAiCD,EAAwB,KAAKD,CAAO,EACrEG,EAAY,EACZC,EAAgB,EAChBC,EAAa,EAEnB,OAAIH,EAAaC,CAAS,IACxBpB,EAAa,MAAQmB,EAAaC,CAAS,EAAE,KAAK,GAEhDD,EAAaE,CAAa,IAC5BrB,EAAa,KAAOmB,EAAaE,CAAa,EAAE,MAAM,EAAG,EAAE,EAAE,KAAK,GAEhEF,EAAaG,CAAU,IACzBtB,EAAa,OAASmB,EAAaG,CAAU,EAC1C,MAAM,EAAGH,EAAaG,CAAU,EAAE,MAAM,EACxC,KAAK,GAGHtB,CACT,CAEA,SAASuB,GACPC,EACAC,EACAC,EAEAC,EAAmC,QACnC,CACIA,EAAWD,CAAM,IACnBF,EAAQC,CAAS,EAAIC,EAEzB,CAEA,SAASE,GACPJ,EACAC,EACAC,EACA,CAEAH,GAAMC,EAASC,EAAWC,EAASG,GAAmBA,GAAMA,EAAG,OAAS,CAAC,CAC3E,CAEA,SAASC,GAAcC,EAGrB,CACA,IAAMC,EAASvD,GAAW,KAAKsD,CAAkB,EAC3CE,EAAW,EACXC,EAAW,EAEjB,OAAIF,EACK,CACL,KAAMA,EAAOC,CAAQ,EACrB,KAAMD,EAAOE,CAAQ,CACvB,EAEK,CACL,KAAM,WACN,KAAMH,CACR,CACF,CAEA,SAASI,GAAelB,EAAmD,CACzE,OAAOA,EACJ,MAAM,QAAQ,EACd,IAAKc,GAAuBA,EAAmB,KAAK,CAAC,EACrD,IAAID,EAAa,CACtB,CAEA,IAAOM,GAAQ,CACb,UAAAnD,GACA,wBAAAS,GACA,kBAAAO,GACA,aAAAjB,GACA,WAAAsB,GACA,KAAAG,GACA,0BAAAO,GACA,eAAAmB,GACA,MAAAZ,GACA,cAAAK,EACF,EC5QA,SAASS,GAAaC,EAAOC,EAAQ,CACnC,SAASC,GAAI,CAAE,KAAK,YAAcF,CAAO,CACzCE,EAAE,UAAYD,EAAO,UACrBD,EAAM,UAAY,IAAIE,CACxB,CAEA,SAASC,GAAgBC,EAASC,EAAUC,EAAOC,EAAU,CAC3D,IAAIC,EAAO,MAAM,KAAK,KAAMJ,CAAO,EAEnC,OAAI,OAAO,gBACT,OAAO,eAAeI,EAAML,GAAgB,SAAS,EAEvDK,EAAK,SAAWH,EAChBG,EAAK,MAAQF,EACbE,EAAK,SAAWD,EAChBC,EAAK,KAAO,cACLA,CACT,CAEAT,GAAaI,GAAiB,KAAK,EAEnC,SAASM,GAAWC,EAAKC,EAAcC,EAAW,CAEhD,OADAA,EAAYA,GAAa,IACrBF,EAAI,OAASC,EAAuBD,GACxCC,GAAgBD,EAAI,OACpBE,GAAaA,EAAU,OAAOD,CAAY,EACnCD,EAAME,EAAU,MAAM,EAAGD,CAAY,EAC9C,CAEAR,GAAgB,UAAU,OAAS,SAASU,EAAS,CACnD,IAAIH,EAAM,UAAY,KAAK,QAC3B,GAAI,KAAK,SAAU,CACjB,IAAII,EAAM,KACNC,EACJ,IAAKA,EAAI,EAAGA,EAAIF,EAAQ,OAAQE,IAC9B,GAAIF,EAAQE,CAAC,EAAE,SAAW,KAAK,SAAS,OAAQ,CAC9CD,EAAMD,EAAQE,CAAC,EAAE,KAAK,MAAM,aAAa,EACzC,KACF,CAEF,IAAIC,EAAI,KAAK,SAAS,MAClBC,EAAY,KAAK,SAAS,QAAW,OAAO,KAAK,SAAS,OAAO,QAAW,WAC5E,KAAK,SAAS,OAAO,OAAOD,CAAC,EAC7BA,EACAE,EAAM,KAAK,SAAS,OAAS,IAAMD,EAAS,KAAO,IAAMA,EAAS,OACtE,GAAIH,EAAK,CACP,IAAIK,EAAI,KAAK,SAAS,IAClBC,EAASX,GAAW,GAAIQ,EAAS,KAAK,SAAS,EAAE,OAAQ,GAAG,EAC5DI,EAAOP,EAAIE,EAAE,KAAO,CAAC,EACrBM,EAAON,EAAE,OAASG,EAAE,KAAOA,EAAE,OAASE,EAAK,OAAS,EACpDE,EAAUD,EAAON,EAAE,QAAW,EAClCN,GAAO;AAAA,OAAYQ,EAAM;AAAA,EACnBE,EAAS;AAAA,EACTH,EAAS,KAAO,MAAQI,EAAO;AAAA,EAC/BD,EAAS,MAAQX,GAAW,GAAIO,EAAE,OAAS,EAAG,GAAG,EACjDP,GAAW,GAAIc,EAAQ,GAAG,CAClC,MACEb,GAAO;AAAA,MAAWQ,CAEtB,CACA,OAAOR,CACT,EAEAP,GAAgB,aAAe,SAASE,EAAUC,EAAO,CACvD,IAAIkB,EAA2B,CAC7B,QAAS,SAASC,EAAa,CAC7B,MAAO,IAAOC,EAAcD,EAAY,IAAI,EAAI,GAClD,EAEA,MAAO,SAASA,EAAa,CAC3B,IAAIE,EAAeF,EAAY,MAAM,IAAI,SAASG,EAAM,CACtD,OAAO,MAAM,QAAQA,CAAI,EACrBC,EAAYD,EAAK,CAAC,CAAC,EAAI,IAAMC,EAAYD,EAAK,CAAC,CAAC,EAChDC,EAAYD,CAAI,CACtB,CAAC,EAED,MAAO,KAAOH,EAAY,SAAW,IAAM,IAAME,EAAa,KAAK,EAAE,EAAI,GAC3E,EAEA,IAAK,UAAW,CACd,MAAO,eACT,EAEA,IAAK,UAAW,CACd,MAAO,cACT,EAEA,MAAO,SAASF,EAAa,CAC3B,OAAOA,EAAY,WACrB,CACF,EAEA,SAASK,EAAIC,EAAI,CACf,OAAOA,EAAG,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY,CACnD,CAEA,SAASL,EAAcV,EAAG,CACxB,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,KAAO,KAAM,EACrB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,eAAyB,SAASe,EAAI,CAAE,MAAO,OAASD,EAAIC,CAAE,CAAG,CAAC,EAC1E,QAAQ,wBAAyB,SAASA,EAAI,CAAE,MAAO,MAASD,EAAIC,CAAE,CAAG,CAAC,CAC/E,CAEA,SAASF,EAAYb,EAAG,CACtB,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,KAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,eAAyB,SAASe,EAAI,CAAE,MAAO,OAASD,EAAIC,CAAE,CAAG,CAAC,EAC1E,QAAQ,wBAAyB,SAASA,EAAI,CAAE,MAAO,MAASD,EAAIC,CAAE,CAAG,CAAC,CAC/E,CAEA,SAASC,EAAoBP,EAAa,CACxC,OAAOD,EAAyBC,EAAY,IAAI,EAAEA,CAAW,CAC/D,CAEA,SAASQ,EAAiB5B,EAAU,CAClC,IAAI6B,EAAe7B,EAAS,IAAI2B,CAAmB,EAC/CG,EAAGC,EAIP,GAFAF,EAAa,KAAK,EAEdA,EAAa,OAAS,EAAG,CAC3B,IAAKC,EAAI,EAAGC,EAAI,EAAGD,EAAID,EAAa,OAAQC,IACtCD,EAAaC,EAAI,CAAC,IAAMD,EAAaC,CAAC,IACxCD,EAAaE,CAAC,EAAIF,EAAaC,CAAC,EAChCC,KAGJF,EAAa,OAASE,CACxB,CAEA,OAAQF,EAAa,OAAQ,CAC3B,IAAK,GACH,OAAOA,EAAa,CAAC,EAEvB,IAAK,GACH,OAAOA,EAAa,CAAC,EAAI,OAASA,EAAa,CAAC,EAElD,QACE,OAAOA,EAAa,MAAM,EAAG,EAAE,EAAE,KAAK,IAAI,EACtC,QACAA,EAAaA,EAAa,OAAS,CAAC,CAC5C,CACF,CAEA,SAASG,EAAc/B,EAAO,CAC5B,OAAOA,EAAQ,IAAOoB,EAAcpB,CAAK,EAAI,IAAO,cACtD,CAEA,MAAO,YAAc2B,EAAiB5B,CAAQ,EAAI,QAAUgC,EAAc/B,CAAK,EAAI,SACrF,EAEA,SAASgC,GAAUC,EAAOC,EAAS,CACjCA,EAAUA,IAAY,OAAYA,EAAU,CAAC,EAE7C,IAAIC,EAAa,CAAC,EACdC,EAAaF,EAAQ,cAErBG,EAAyB,CAAE,QAASC,EAAiB,EACrDC,EAAwBD,GAExBE,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,QACTC,EAAS,QACTC,EAAU,QACVC,EAAU,SACVC,EAAU,OACVC,EAAU,UACVC,EAAU,UACVC,EAAU,YACVC,EAAU,QACVC,GAAU,WACVC,GAAU,UACVC,GAAU,cACVC,EAAU,SACVC,EAAU,WACVC,GAAU,OACVC,GAAU,OACVC,GAAU,WACVC,EAAU,QACVC,GAAU,WACVC,EAAU,WACVC,GAAU,KACVC,GAAU,MACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,MACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,IACVC,GAAU,IACVC,GAAU,IACVC,GAAU,MACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KAEVC,GAAS,SACTC,GAAS,mBACTC,GAAS,SACTC,GAAS,QACTC,GAAS,yBACTC,GAAS,SACTC,GAAS,UACTC,GAAS,WAETC,GAASC,GAAqB,cAAc,EAC5CC,GAASC,EAAuB,IAAK,EAAK,EAC1CC,GAASD,EAAuB,IAAK,EAAK,EAC1CE,GAASJ,GAAqB,OAAO,EACrCK,GAASH,EAAuB,IAAK,EAAK,EAC1CI,GAASJ,EAAuB,IAAK,EAAK,EAC1CK,GAASL,EAAuB,IAAK,EAAK,EAC1CM,GAASN,EAAuB,IAAK,EAAK,EAC1CO,GAASP,EAAuB,IAAK,EAAK,EAC1CQ,GAASV,GAAqB,2BAA2B,EACzDW,GAAUX,GAAqB,0BAA0B,EACzDY,GAAUV,EAAuB,IAAK,EAAK,EAC3CW,GAAUb,GAAqB,sBAAsB,EACrDc,GAAUZ,EAAuB,QAAS,EAAI,EAC9Ca,GAAUb,EAAuB,QAAS,EAAI,EAC9Cc,GAAUhB,GAAqB,iBAAiB,EAChDiB,GAAUf,EAAuB,QAAS,EAAI,EAC9CgB,GAAUlB,GAAqB,YAAY,EAC3CmB,GAAUjB,EAAuB,SAAU,EAAI,EAC/CkB,GAAUpB,GAAqB,YAAY,EAC3CqB,EAAUnB,EAAuB,OAAQ,EAAI,EAC7CoB,GAAUtB,GAAqB,iBAAiB,EAChDuB,GAAUrB,EAAuB,UAAW,EAAK,EACjDsB,GAAUtB,EAAuB,UAAW,EAAK,EACjDuB,GAAUvB,EAAuB,YAAa,EAAK,EACnDwB,GAAUxB,EAAuB,QAAS,EAAK,EAC/CyB,GAAUzB,EAAuB,WAAY,EAAK,EAClD0B,GAAU1B,EAAuB,UAAW,EAAK,EACjD2B,EAAU3B,EAAuB,cAAe,EAAK,EACrD4B,GAAU5B,EAAuB,SAAU,EAAK,EAChD6B,GAAU7B,EAAuB,WAAY,EAAK,EAClD8B,GAAU9B,EAAuB,OAAQ,EAAK,EAC9C+B,GAAU/B,EAAuB,OAAQ,EAAK,EAC9CgC,GAAUhC,EAAuB,WAAY,EAAK,EAClDiC,GAAUnC,GAAqB,YAAY,EAC3CoC,GAAUpC,GAAqB,gCAAgC,EAC/DqC,GAAUrC,GAAqB,+BAA+B,EAC9DsC,GAAUtC,GAAqB,2BAA2B,EAC1DuC,GAAUvC,GAAqB,sBAAsB,EACrDwC,GAAUxC,GAAqB,mCAAmC,EAClEyC,GAAUvC,EAAuB,QAAS,EAAI,EAC9CwC,GAAU1C,GAAqB,uBAAuB,EACtD2C,GAAUzC,EAAuB,WAAY,EAAK,EAClD0C,GAAU1C,EAAuB,WAAY,EAAK,EAClD2C,GAAU7C,GAAqB,qBAAqB,EACpD8C,GAAU5C,EAAuB,KAAM,EAAK,EAC5C6C,GAAU7C,EAAuB,MAAO,EAAK,EAC7C8C,GAAU9C,EAAuB,KAAM,EAAK,EAC5C+C,GAAU/C,EAAuB,KAAM,EAAK,EAC5CgD,GAAUhD,EAAuB,KAAM,EAAK,EAC5CiD,GAAUjD,EAAuB,KAAM,EAAK,EAC5CkD,GAAUlD,EAAuB,KAAM,EAAK,EAC5CmD,GAAUrD,GAAqB,qBAAqB,EACpDsD,GAAUpD,EAAuB,KAAM,EAAK,EAC5CqD,GAAUrD,EAAuB,MAAO,EAAK,EAC7CsD,GAAUtD,EAAuB,KAAM,EAAK,EAC5CuD,GAAUvD,EAAuB,KAAM,EAAK,EAC5CwD,GAAUxD,EAAuB,KAAM,EAAK,EAC5CyD,GAAUzD,EAAuB,IAAK,EAAK,EAC3C0D,GAAU1D,EAAuB,IAAK,EAAK,EAC3C2D,GAAUC,GAAqB,CAAC,CAAC,IAAK,GAAG,CAAC,EAAG,GAAO,EAAK,EACzDC,GAAU/D,GAAqB,sBAAsB,EACrDgE,GAAU9D,EAAuB,IAAM,EAAK,EAC5C+D,GAAU/D,EAAuB,MAAQ,EAAK,EAC9CgE,GAAUC,GAAmB,EAC7BC,GAAUpE,GAAqB,oBAAoB,EACnDqE,GAAUP,GAAqB,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,IAAK,IAAK,GAAG,EAAG,GAAO,EAAK,EAChGQ,GAAUR,GAAqB,CAAC,IAAK,IAAK,GAAG,EAAG,GAAO,EAAK,EAC5DS,GAAUT,GAAqB,CAAC,IAAK,GAAG,EAAG,GAAO,EAAK,EACvDU,GAAUxE,GAAqB,YAAY,EAC3CyE,GAAUX,GAAqB,CAAC,IAAK,IAAK,IAAK,IAAM,IAAM;AAAA,EAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,GAAM,EAAK,EACtHY,GAAU1E,GAAqB,YAAY,EAC3C2E,GAAUb,GAAqB,CAAC,IAAK,GAAI,EAAG,GAAO,EAAK,EACxDc,GAAU5E,GAAqB,UAAU,EACzC6E,GAAUf,GAAqB,CAAC,KAAM;AAAA,CAAI,EAAG,GAAO,EAAK,EACzDgB,GAAU5E,EAAuB,KAAM,EAAK,EAC5C6E,GAAU7E,EAAuB,KAAM,EAAK,EAC5C8E,GAAU9E,EAAuB,KAAM,EAAK,EAC5C+E,GAAUnB,GAAqB,CAAC,KAAM;AAAA,CAAI,EAAG,GAAM,EAAK,EACxDoB,GAAUlF,GAAqB,SAAS,EAExCmF,GAAS,SAASC,EAAc,CAC9B,OAAAA,EAAa,OAASC,GAAc,wBAAwBD,CAAY,EACjEC,GAAc,kBAAkBD,CAAY,CACvD,EACEE,GAAS,SAASC,EAAQC,EAAa,CACrC,IAAIC,EAAgB,CAAC,EACrB,OAAAJ,GAAc,MAAMI,EAAe,SAAUF,CAAM,EACnDF,GAAc,cAAcI,EAAe,cAAeD,CAAW,EAE9DC,CACT,EACAC,GAAS,SAASC,EAAO,CAAC,OAAOA,CAAK,EACtCC,GAAS,SAASD,EAAO,CAAC,OAAOA,CAAK,EACtCE,GAAS,SAASN,EAAQ,CAC1B,OAAOF,GAAc,KAAKE,EAAO,CAAC,EAAE,OAAOA,EAAO,CAAC,CAAC,EAAGF,GAAc,UAAU,CACjF,EACES,GAAS,SAASC,EAAOC,EAAIC,EAAO,CAAC,OAAOA,CAAK,EACjDC,GAAS,SAASH,EAAOC,EAAIG,EAA2BC,EAAK,CAAC,OAAOA,CAAG,EACxEC,GAAS,SAASN,EAAOC,EAAIG,EAA2BG,EAASC,EAAI,CAAC,OAAOA,CAAG,EAChFC,GAAS,SAAST,EAAOC,EAAIG,EAA2BG,EAASlB,EAAc,CAC3E,IAAIqB,EAASpB,GAAc,UAAUW,CAAE,EACvC,OAACG,GAA6B,CAAC,GAAG,QAChCO,GAAsBrB,GAAc,MAAMoB,EAAQC,EAAmB,KAAMA,EAAmB,KAAK,CACrG,EACArB,GAAc,MAAMoB,EAAQ,qBAAsBN,GAA6B,CAAC,GAAG,KAAKO,GAAsBA,EAAmB,iBAAiB,CAAC,EACnJrB,GAAc,MAAMoB,EAAQ,eAAgBrB,CAAY,EACxDC,GAAc,cAAcoB,EAAQ,OAAQV,CAAK,EAE7CO,GACFjB,GAAc,cACVoB,EACA,UACApB,GAAc,eAAeiB,CAAO,CACxC,EAGKG,CACT,EACFE,GAAS,SAASC,EAAMC,EAAO,CAC7B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEC,GAAU,SAASF,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEE,GAAU,SAASH,EAAM,CACvB,MAAO,CAAC,KAAAA,EAAM,MAAM,EAAI,CAC5B,EACEI,GAAU,SAASJ,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,EAAO,kBAAkB,EAAI,CAC/C,EACEI,GAAU,SAASL,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEM,GAAU,SAASN,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEO,GAAU,SAASP,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEQ,GAAU,SAASR,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACES,GAAU,SAAStB,EAAOuB,EAAOrB,EAAO,CAAC,OAAOA,CAAK,EACrDsB,GAAU,SAASxB,EAAOuB,EAAOE,EAAqBC,EAAK,CAAC,OAAOA,CAAG,EACtEC,GAAU,SAAS3B,EAAOuB,EAAOE,EAAqBG,EAAO,CAC7D,OAAIA,IACAL,EAAM,MAAQK,EACdL,EAAQ,OAAO,OACXA,EACAjC,GAAc,0BAA0BsC,CAAK,CACjD,IAEHH,GAAuB,CAAC,GAAG,QACxBd,GAAsBrB,GAAc,MAAMiC,EAAOZ,EAAmB,KAAMA,EAAmB,KAAK,CACtG,EACArB,GAAc,cAAciC,EAAO,OAAQvB,CAAK,EAEhDuB,EAAM,GAAGpL,EAAQ,QAAQ,KAAK,EACvBoL,CACT,EACEM,GAAU,SAASC,EAAOC,EAAI,CACtB,MAAO,CACH,KAAMD,EACN,GAAIC,CACR,CACJ,EACJC,GAAU,SAASD,EAAID,EAAO,CAC1B,MAAO,CACH,KAAMA,EACN,GAAIC,CACR,CACJ,EACAE,GAAU,SAASpB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEoB,GAAU,SAASrB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEqB,GAAU,SAAStB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEsB,GAAU,SAASvB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEuB,GAAU,SAASxB,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEyB,GAAU,SAASzB,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACE0B,GAAU,SAAS1B,EAAM,CACvB,OAAOA,CACX,EACE2B,GAAU,SAASC,EAAK,CACxB,OAAOA,EAAI,KAAK,EAAE,EAAE,KAAK,CAC3B,EACEC,GAAU,SAASC,EAAQ,CAAE,OAAO,WAAWA,EAAO,KAAK,EAAE,CAAC,CAAG,EACjEC,GAAU,SAASD,EAAQ,CAAE,OAAO,SAASA,EAAO,KAAK,EAAE,EAAG,EAAE,CAAG,EACnEE,GAAU,SAASlO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,EAAE,QAAQ,QAAS,GAAI,CAAC,EAC/DmO,GAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,GAAU,SAASpO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,CAAC,EACxCqO,GAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,GAAU,SAAStO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,EAC/CuO,EAAU,SAASvO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,EAC/CwO,EAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,EAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,EAAU,SAASC,EAAO,CAAC,OAAOA,EAAM,KAAK,EAAE,CAAC,EAChDC,EAAcpN,EAAQ,YAAc,EACpCqN,EAAeD,EACfE,EAAsB,CAAC,CAAE,KAAM,EAAG,OAAQ,CAAE,CAAC,EAC7CC,EAAiBH,EACjBI,EAAsBxN,EAAQ,qBAAuB,CAAC,EACtDyN,EAAkBzN,EAAQ,gBAAkB,EAE5C0N,EAEJ,GAAI1N,EAAQ,UAAW,CACrB,GAAI,EAAEA,EAAQ,aAAaG,GACzB,MAAM,IAAI,MAAM,kCAAqCH,EAAQ,UAAY,IAAK,EAGhFK,EAAwBF,EAAuBH,EAAQ,SAAS,CAClE,CAEA,SAAS2N,IAAO,CACd,OAAO5N,EAAM,UAAUsN,EAAcD,CAAW,CAClD,CAEA,SAASQ,IAAS,CAChB,OAAOP,CACT,CAEA,SAASQ,IAAQ,CACf,MAAO,CACL,OAAQ3N,EACR,MAAOmN,EACP,IAAKD,CACP,CACF,CAEA,SAASrP,GAAW,CAClB,OAAO+P,GAAoBT,EAAcD,CAAW,CACtD,CAEA,SAASvP,GAASkQ,EAAahQ,EAAU,CACvC,MAAAA,EAAWA,IAAa,OACpBA,EACA+P,GAAoBT,EAAcD,CAAW,EAE3CY,GACJ,CAAClK,GAAqBiK,CAAW,CAAC,EAClChO,EAAM,UAAUsN,EAAcD,CAAW,EACzCrP,CACF,CACF,CAEA,SAASkQ,GAAMrQ,EAASG,EAAU,CAChC,MAAAA,EAAWA,IAAa,OACpBA,EACA+P,GAAoBT,EAAcD,CAAW,EAE3Cc,GAAqBtQ,EAASG,CAAQ,CAC9C,CAEA,SAASiG,EAAuB2J,EAAMQ,EAAY,CAChD,MAAO,CAAE,KAAM,UAAW,KAAMR,EAAM,WAAYQ,CAAW,CAC/D,CAEA,SAASvG,GAAqBwG,EAAOC,EAAUF,EAAY,CACzD,MAAO,CAAE,KAAM,QAAS,MAAOC,EAAO,SAAUC,EAAU,WAAYF,CAAW,CACnF,CAEA,SAASlG,IAAqB,CAC5B,MAAO,CAAE,KAAM,KAAM,CACvB,CAEA,SAASqG,IAAqB,CAC5B,MAAO,CAAE,KAAM,KAAM,CACvB,CAEA,SAASxK,GAAqBiK,EAAa,CACzC,MAAO,CAAE,KAAM,QAAS,YAAaA,CAAY,CACnD,CAEA,SAASQ,GAAsBC,EAAK,CAClC,IAAIC,EAAUnB,EAAoBkB,CAAG,EACjCE,EAEJ,GAAID,EACF,OAAOA,EAEP,GAAID,GAAOlB,EAAoB,OAC7BoB,EAAIpB,EAAoB,OAAS,MAGjC,KADAoB,EAAIF,EACG,CAAClB,EAAoB,EAAEoB,CAAC,GAAG,CASpC,IANAD,EAAUnB,EAAoBoB,CAAC,EAC/BD,EAAU,CACR,KAAMA,EAAQ,KACd,OAAQA,EAAQ,MAClB,EAEOC,EAAIF,GACLzO,EAAM,WAAW2O,CAAC,IAAM,IAC1BD,EAAQ,OACRA,EAAQ,OAAS,GAEjBA,EAAQ,SAGVC,IAGF,OAAApB,EAAoBkB,CAAG,EAAIC,EAEpBA,CAEX,CAEA,SAASX,GAAoBa,EAAUC,EAAQhB,EAAQ,CACrD,IAAIiB,EAAkBN,GAAsBI,CAAQ,EAChDG,EAAgBP,GAAsBK,CAAM,EAE5CG,EAAM,CACR,OAAQ7O,EACR,MAAO,CACL,OAAQyO,EACR,KAAME,EAAgB,KACtB,OAAQA,EAAgB,MAC1B,EACA,IAAK,CACH,OAAQD,EACR,KAAME,EAAc,KACpB,OAAQA,EAAc,MACxB,CACF,EACA,OAAIlB,GAAU1N,GAAe,OAAOA,EAAW,QAAW,aACxD6O,EAAI,MAAQ7O,EAAW,OAAO6O,EAAI,KAAK,EACvCA,EAAI,IAAM7O,EAAW,OAAO6O,EAAI,GAAG,GAE9BA,CACT,CAEA,SAASC,EAASnR,EAAU,CACtBuP,EAAcG,IAEdH,EAAcG,IAChBA,EAAiBH,EACjBI,EAAsB,CAAC,GAGzBA,EAAoB,KAAK3P,CAAQ,EACnC,CAEA,SAASqQ,GAAqBtQ,EAASG,EAAU,CAC/C,OAAO,IAAIJ,GAAgBC,EAAS,KAAM,KAAMG,CAAQ,CAC1D,CAEA,SAASiQ,GAAyBnQ,EAAUC,EAAOC,EAAU,CAC3D,OAAO,IAAIJ,GACTA,GAAgB,aAAaE,EAAUC,CAAK,EAC5CD,EACAC,EACAC,CACF,CACF,CAEA,SAASqC,IAAmB,CAC1B,IAAI6O,EAAIC,EAAIC,EAAIC,EAEhB,OAAAH,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKG,GAAsB,EAC3BF,EAAKC,EAAW,EAChBhC,EAAe4B,EACfA,EAAKhG,GAAOkG,CAAE,EAEPF,CACT,CAEA,SAASK,IAAwB,CAC/B,IAAIL,EAAIC,EAAIC,EAAIC,EAUhB,IARA3B,IACAwB,EAAK7B,EACL8B,EAAKK,GAAgB,EACjBL,IAAOjP,IACTiP,EAAK,MAEPC,EAAK,CAAC,EACNC,EAAKI,GAAoB,EAClBJ,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKI,GAAoB,EAE3B,OAAAnC,EAAe4B,EACfA,EAAK7F,GAAO8F,EAAIC,CAAE,EAClB1B,IACAyB,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnL,EAAM,EAErCoL,CACT,CAEA,SAASM,IAAkB,CACzB,IAAIN,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EA0BxB,IAxBAT,EAAK7B,EACL8B,EAAK9B,EACL+B,EAAK,CAAC,EACNC,EAAKhC,EACLqC,EAAKE,GAAe,EAChBF,IAAOxP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKpP,EACL8M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAASjL,EAAM,GAE1C2L,IAAOzP,GACToN,EAAe+B,EACfA,EAAK5F,GAAOiG,CAAE,IAEdrC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAEAmP,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKhC,EACLqC,EAAKE,GAAe,EAChBF,IAAOxP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKpP,EACL8M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAASjL,EAAM,GAE1C2L,IAAOzP,GACToN,EAAe+B,EACfA,EAAK5F,GAAOiG,CAAE,IAEdrC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAGT,OAAAmP,EAAKhC,EACLqC,EAAKE,GAAe,EAChBF,IAAOxP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKnP,EACL6M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAAS/K,EAAM,GAE1CyL,IAAOzP,GACToN,EAAe+B,EACfA,EAAK1F,GAAO+F,CAAE,IAEdrC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAEHmP,IAAOnP,GACTkP,EAAK,CAACA,EAAIC,CAAE,EACZF,EAAKC,IAEL/B,EAAc8B,EACdA,EAAKjP,GAEHiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAKvF,GAAOuF,CAAE,GAEhBD,EAAKC,EAEED,CACT,CAEA,SAASU,IAAiB,CACxB,IAAIV,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAAIC,GAAIC,GAAIC,GAAKC,GAAKC,GAAKC,GAAKC,GAMhE,IAJA3C,IACAwB,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKkB,GAAc,EACZlB,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKkB,GAAc,EAErB,OAAAlB,EAAKE,EAAW,EAChBD,EAAKkB,GAAoB,EACrBlB,IAAOnP,GACTwP,EAAKJ,EAAW,EAChBK,EAAKtC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpCwC,EAAKpP,EACL4M,MAEAwC,EAAK3P,EACDwN,IAAoB,GAAKuB,EAAS7K,EAAM,GAE1CyL,IAAO3P,GACT4P,GAAKU,GAAmC,EACpCxQ,EAAM,WAAWqN,CAAW,IAAM,IACpC0C,GAAKrP,EACL2M,MAEA0C,GAAK7P,EACDwN,IAAoB,GAAKuB,EAAS5K,EAAM,GAE1C0L,KAAO7P,GACToN,EAAeqC,EACfA,EAAK9F,GAAOsF,EAAIE,EAAIS,EAAE,IAEtBzC,EAAcsC,EACdA,EAAKzP,KAGPmN,EAAcsC,EACdA,EAAKzP,GAEHyP,IAAOzP,IACTyP,EAAK,MAEPE,EAAKP,EAAW,EAChBQ,GAAKzC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpC0C,GAAKpP,EACL0M,MAEA0C,GAAK7P,EACDwN,IAAoB,GAAKuB,EAAS3K,EAAM,GAE1CyL,KAAO7P,GACT8P,GAAKV,EAAW,EAChBW,GAAMQ,GAAgB,EAClBR,KAAQ/P,GACVgQ,GAAMZ,EAAW,EACjBhC,EAAewC,GACfA,GAAK7F,GAAOkF,EAAIE,EAAIM,EAAIM,EAAG,IAE3B5C,EAAcyC,GACdA,GAAK5P,KAGPmN,EAAcyC,GACdA,GAAK5P,GAEH4P,KAAO5P,IACT4P,GAAK,MAEPC,GAAKT,EAAW,EAChBU,GAAK3C,EACDrN,EAAM,WAAWqN,CAAW,IAAM,KACpC4C,GAAMrP,EACNyM,MAEA4C,GAAM/P,EACFwN,IAAoB,GAAKuB,EAAS1K,EAAM,GAE1C0L,KAAQ/P,GACVgQ,GAAMZ,EAAW,EACjBa,GAAMZ,GAAsB,EACxBY,KAAQjQ,GACVkQ,GAAMd,EAAW,EACbtP,EAAM,WAAWqN,CAAW,IAAM,KACpCgD,GAAMxP,EACNwM,MAEAgD,GAAMnQ,EACFwN,IAAoB,GAAKuB,EAASzK,EAAM,GAE1C6L,KAAQnQ,GACVoN,EAAe0C,GACfA,GAAK5F,GAAO+E,EAAIE,EAAIM,EAAIG,GAAIK,EAAG,IAE/B9C,EAAc2C,GACdA,GAAK9P,KAGPmN,EAAc2C,GACdA,GAAK9P,KAGPmN,EAAc2C,GACdA,GAAK9P,GAEH8P,KAAO9P,IACT8P,GAAK,MAEPC,GAAMX,EAAW,EACjBhC,EAAe4B,EACfA,EAAK3E,GAAO4E,EAAIE,EAAIM,EAAIG,GAAIE,EAAE,IAE9B3C,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9K,EAAM,GAGvC+K,CACT,CAEA,SAASsB,IAAqC,CAC5C,IAAItB,EAAIC,EAKR,IAHAzB,IACAwB,EAAK,CAAC,EACNC,EAAKuB,GAAkC,EAChCvB,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAKuB,GAAkC,EAEzC,OAAAhD,IACAyB,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASxK,EAAM,EAErCyK,CACT,CAEA,SAASwB,IAAoC,CAC3C,IAAIxB,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAEhC,OAAApC,IACAwB,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKuB,GAA8C,EAC/CvB,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKe,GAAsB,EACvBf,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKxE,GAAO0E,EAAIS,CAAE,IAElBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKyB,GAA8B,EAC/BzB,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKiB,GAAsB,EACvBjB,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKrE,GAAQuE,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAK2B,GAA+C,EAChD3B,IAAOlP,GACTmP,EAAKC,EAAW,EAChBhC,EAAe4B,EACfA,EAAKpE,GAAQsE,CAAE,IAEf/B,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAK4B,GAA4C,EAC7C5B,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKoB,GAA4C,EAC7CpB,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKnE,GAAQqE,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,MAKbwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASvK,EAAO,GAGxCwK,CACT,CAEA,SAASyB,IAAgD,CACvD,IAAIzB,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMpO,EACvBsM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASpK,EAAO,GAE3CsK,IAAOjP,IACTiP,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMnO,EACvBqM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnK,EAAO,IAG7CqK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKnE,GAAQmE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASrK,EAAO,GAGxCsK,CACT,CAEA,SAAS2B,IAAgC,CACvC,IAAI3B,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMlO,EACvBoM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASjK,EAAO,GAE3CmK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKlE,GAAQkE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASlK,EAAO,GAGxCmK,CACT,CAEA,SAAS6B,IAAiD,CACxD,IAAI7B,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMjO,EACvBmM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS/J,EAAO,GAE3CiK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKjE,GAAQiE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAShK,EAAO,GAGxCiK,CACT,CAEA,SAAS8B,IAA8C,CACrD,IAAI9B,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMhO,EACvBkM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7J,CAAO,GAE3C+J,IAAOjP,IACToN,EAAe4B,EACfC,EAAKhE,GAAQgE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9J,EAAO,GAGxC+J,CACT,CAEA,SAAS+B,IAA8C,CACrD,IAAI/B,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMjM,GACnC8N,EAAK9N,EACLiM,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS3J,EAAO,GAE3C4J,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMhM,GACnC6N,EAAK7N,EACLgM,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS1J,EAAO,GAE3C2J,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM/L,GACnC4N,EAAK5N,EACL+L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASzJ,EAAO,GAE3C0J,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM9L,GACnC2N,EAAK3N,EACL8L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASxJ,EAAO,GAE3CyJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM7L,IACnC0N,EAAK1N,GACL6L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASvJ,EAAO,GAE3CwJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM5L,IACnCyN,EAAKzN,GACL4L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAStJ,EAAO,GAE3CuJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,EAAE,IAAM3L,IACpCwN,EAAKxN,GACL2L,GAAe,KAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASrJ,CAAO,GAE3CsJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM1L,GACnCuN,EAAKvN,EACL0L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASpJ,EAAO,GAE3CqJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMzL,GACnCsN,EAAKtN,EACLyL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASnJ,EAAO,GAE3CoJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMxL,IACnCqN,EAAKrN,GACLwL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASlJ,EAAO,GAE3CmJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMvL,IACnCoN,EAAKpN,GACLuL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASjJ,EAAO,GAE3CkJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMtL,IACnCmN,EAAKnN,GACLsL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAShJ,EAAO,cAarEyH,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS5J,EAAO,GAGxC6J,CACT,CAEA,SAASO,IAAsB,CAC7B,IAAIP,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAAIC,GAMpC,IAJArC,IACAwB,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKkB,GAAc,EACZlB,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKkB,GAAc,EAErB,OAAAlB,EAAK8B,GAAwB,EACzB9B,IAAOlP,GACTmP,EAAKhC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAKjP,EACL4M,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAS7K,EAAM,GAE1CsL,IAAOxP,GACTyP,EAAKwB,GAAwC,EACzCnR,EAAM,WAAWqN,CAAW,IAAM,IACpCwC,EAAKnP,EACL2M,MAEAwC,EAAK3P,EACDwN,IAAoB,GAAKuB,EAAS5K,EAAM,GAE1CwL,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe+B,EACfA,EAAKjE,GAAQ+D,EAAIC,EAAIO,CAAE,IAEvBtC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAEHmP,IAAOnP,IACTmP,EAAK,MAEPK,EAAKrC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKhP,EACL0M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAAS3K,EAAM,GAE1CqL,IAAOzP,GACT2P,EAAKP,EAAW,EAChBQ,GAAKsB,GAA0B,EAC3BtB,KAAO5P,GACT6P,GAAKT,EAAW,EAChBhC,EAAeoC,EACfA,EAAKpE,GAAQ6D,EAAIC,EAAIC,EAAIS,EAAE,IAE3BzC,EAAcqC,EACdA,EAAKxP,KAGPmN,EAAcqC,EACdA,EAAKxP,GAEHwP,IAAOxP,IACTwP,EAAK,MAEH1P,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKnP,EACL6M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAAS/K,EAAM,GAE1CyL,IAAOzP,GACToN,EAAe4B,EACfA,EAAKzD,GAAQ0D,EAAIC,EAAIC,EAAIK,CAAE,IAE3BrC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS/I,EAAO,GAGxCgJ,CACT,CAEA,SAASgC,IAA0B,CACjC,IAAIhC,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAEhC,OAAAZ,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKmB,GAAoB,EACrBnB,IAAOlP,GACTmP,EAAKC,EAAW,EAChBI,EAAK2B,GAAuB,EACxB3B,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKU,GAAoB,EACrBV,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKvD,GAAQyD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKmB,GAAoB,EACrBnB,IAAOlP,GACTmP,EAAKC,EAAW,EAChBI,EAAK4B,GAAuB,EACxB5B,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKU,GAAoB,EACrBV,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKpD,GAAQsD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,IAIFgP,CACT,CAEA,SAASiC,IAA0C,CACjD,IAAIjC,EAAIC,EAKR,IAHAzB,IACAwB,EAAK,CAAC,EACNC,EAAKoC,GAAuC,EACrCpC,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAKoC,GAAuC,EAE9C,OAAA7D,IACAyB,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9I,EAAO,EAEtC+I,CACT,CAEA,SAASqC,IAAyC,CAChD,IAAIrC,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAEhC,OAAApC,IACAwB,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKoC,GAAmD,EACpDpC,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKe,GAAsB,EACvBf,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKnD,GAAQqD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKyB,GAA8B,EAC/BzB,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKiB,GAAsB,EACvBjB,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKlD,GAAQoD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKqC,GAAuC,EACxCrC,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAK6B,GAAwC,EACzC7B,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKjD,GAAQmD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKuC,GAAoD,EACrDvC,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAK+B,GAAyB,EAC1B/B,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKhD,GAAQkD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,MAKbwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7I,EAAO,GAGxC8I,CACT,CAEA,SAASsC,IAAqD,CAC5D,IAAItC,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMnO,EACvBqM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnK,EAAO,GAE3CqK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKhD,GAAQgD,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS5I,EAAO,GAGxC6I,CACT,CAEA,SAASuC,IAAyC,CAChD,IAAIvC,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMhO,EACvBkM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7J,CAAO,GAE3C+J,IAAOjP,IACToN,EAAe4B,EACfC,EAAK/C,GAAQ+C,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS3I,EAAO,GAGxC4I,CACT,CAEA,SAASyC,IAAsD,CAC7D,IAAIzC,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMnN,EACvBqL,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASzI,EAAO,GAE3C2I,IAAOjP,IACToN,EAAe4B,EACfC,EAAK9C,GAAQ8C,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS1I,EAAO,GAGxC2I,CACT,CAEA,SAASwC,IAA0C,CACjD,IAAIxC,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMpL,IACnCiN,EAAKjN,GACLoL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASvI,EAAO,GAE3CwI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMnL,GACnCgN,EAAKhN,EACLmL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAStI,EAAO,IAGjD+G,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASxI,EAAO,GAGxCyI,CACT,CAEA,SAASmC,IAAyB,CAChC,IAAInC,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMlL,IACnC+M,EAAK/M,GACLkL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASpI,EAAO,GAE3CqI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMjL,IACnC8M,EAAK9M,GACLiL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASnI,EAAO,GAE3CoI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMhL,IACnC6M,EAAK7M,GACLgL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASlI,EAAO,GAE3CmI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM/K,IACnC4M,EAAK5M,GACL+K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASjI,EAAO,GAE3CkI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM9K,IACnC2M,EAAK3M,GACL8K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAShI,EAAO,GAE3CiI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM7K,IACnC0M,EAAK1M,GACL6K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS/H,EAAO,GAE3CgI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM5K,IACnCyM,EAAKzM,GACL4K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS9H,EAAO,SAQ3DuG,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASrI,EAAO,GAGxCsI,CACT,CAEA,SAASoC,IAAyB,CAChC,IAAIpC,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAM3K,IACnCwM,EAAKxM,GACL2K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS5H,EAAO,GAE3C6H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM1K,IACnCuM,EAAKvM,GACL0K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS3H,EAAO,GAE3C4H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMzK,IACnCsM,EAAKtM,GACLyK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS1H,EAAO,GAE3C2H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMxK,IACnCqM,EAAKrM,GACLwK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASzH,EAAO,GAE3C0H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMvK,IACnCoM,EAAKpM,GACLuK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASxH,EAAO,OAMvDiG,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7H,EAAO,GAGxC8H,CACT,CAEA,SAASoB,IAAgB,CACvB,IAAIpB,EAAIC,EAAIC,EAAIC,EAAIK,EAWpB,GATAR,EAAK7B,EACL8B,EAAKG,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpC+B,EAAKrM,GACLsK,MAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASvH,EAAO,GAE3C0H,IAAOlP,EAAY,CAGrB,IAFAmP,EAAK,CAAC,EACNK,EAAKmC,GAAkB,EAChBnC,IAAOxP,GACZmP,EAAG,KAAKK,CAAE,EACVA,EAAKmC,GAAkB,EAEzBvE,EAAe4B,EACfA,EAAK5C,GAAQ+C,CAAE,CACjB,MACEhC,EAAc6B,EACdA,EAAKhP,EAGP,OAAOgP,CACT,CAEA,SAAS0C,IAA2B,CAClC,IAAI1C,EAEJ,OAAAA,EAAK4C,GAAuB,EACxB5C,IAAOhP,IACTgP,EAAK6C,GAAkB,GAGlB7C,CACT,CAEA,SAAS4C,IAAyB,CAChC,IAAI5C,EAAIC,EAAIC,EAAIC,EAAIK,EAEpB,OAAAR,EAAK7B,EACL8B,EAAK9B,EACL+B,EAAK2C,GAAkB,EACnB3C,IAAOlP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKrM,GACLqK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAStH,EAAO,GAE3C0H,IAAOnP,GACTwP,EAAKqC,GAAkB,EACnBrC,IAAOxP,GACTkP,EAAK,CAACA,EAAIC,EAAIK,CAAE,EAChBP,EAAKC,IAEL/B,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEHiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAK3C,GAAQ2C,CAAE,GAEjBD,EAAKC,EAEED,CACT,CAEA,SAAS6C,IAAoB,CAC3B,IAAI7C,EAAIC,EAAIC,EAWZ,GATAF,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKpP,EAAM,OAAOqN,CAAW,EACzB/J,GAAO,KAAK8L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASrH,EAAO,GAE3CwH,IAAOlP,EACT,KAAOkP,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKpP,EAAM,OAAOqN,CAAW,EACzB/J,GAAO,KAAK8L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASrH,EAAO,QAIjDuH,EAAKjP,EAEP,OAAIiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAKzC,GAAQyC,CAAE,GAEjBD,EAAKC,EAEED,CACT,CAEA,SAASkC,IAA4B,CACnC,IAAIlC,EAEJ,OAAAA,EAAK0B,GAAsB,EACvB1B,IAAOhP,IACTgP,EAAK8C,GAAkC,GAGlC9C,CACT,CAEA,SAASuB,IAAkB,CACzB,IAAIvB,EAEJ,OAAAA,EAAK0B,GAAsB,EACvB1B,IAAOhP,IACTgP,EAAK+C,GAAwB,GAGxB/C,CACT,CAEA,SAAS0B,IAAwB,CAC/B,IAAI1B,EAAIC,EAAIC,EAAIC,EAEhB,OAAA3B,IACAwB,EAAK7B,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpC8B,EAAKlM,GACLoK,MAEA8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CoH,IAAOjP,GACTkP,EAAK8C,GAAuB,EACxBlS,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CsH,IAAOnP,GACToN,EAAe4B,EACfA,EAAKvC,GAAQyC,CAAE,IAEf/B,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnH,EAAO,GAGxCoH,CACT,CAEA,SAASgD,IAAyB,CAChC,IAAIhD,EAAIC,EAAIC,EAAIC,EAgDhB,IA9CAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMnK,IACnCmM,EAAKnM,GACLmK,GAAe,IAEfgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASjH,EAAO,GAE3CqH,IAAOnP,IACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,IAG7CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKvC,GAAQyC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMnK,IACnCmM,EAAKnM,GACLmK,GAAe,IAEfgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASjH,EAAO,GAE3CqH,IAAOnP,IACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,IAG7CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKvC,GAAQyC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAAS4B,IAAwB,CAC/B,IAAI5B,EAAIC,EAAIC,EAAIC,EAEhB,OAAA3B,IACAwB,EAAK7B,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpC8B,EAAKlM,GACLoK,MAEA8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CoH,IAAOjP,GACTkP,EAAK+C,GAA6B,EAC9BnS,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CsH,IAAOnP,GACToN,EAAe4B,EACfA,EAAKrC,GAAQuC,CAAE,IAEf/B,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9G,EAAO,GAGxC+G,CACT,CAEA,SAASiD,IAA+B,CACtC,IAAIjD,EAAIC,EAAIC,EAAIC,EAuChB,IArCAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACTmP,EAAKrP,EAAM,OAAOqN,CAAW,EACzB9J,GAAO,KAAK8L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS7G,EAAO,GAE3CiH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKrC,GAAQuC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACTmP,EAAKrP,EAAM,OAAOqN,CAAW,EACzB9J,GAAO,KAAK8L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS7G,EAAO,GAE3CiH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKrC,GAAQuC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAAS8C,IAAoC,CAC3C,IAAI9C,EAAIC,EAER,OAAAD,EAAK7B,EACL8B,EAAKiD,GAA0B,EAC/B9E,EAAe4B,EACfC,EAAKpC,GAAQoC,CAAE,EACfD,EAAKC,EAEED,CACT,CAEA,SAAS+C,IAA0B,CACjC,IAAI/C,EAAIC,EAER,OAAAD,EAAK7B,EACL8B,EAAKkD,GAAgB,EACrB/E,EAAe4B,EACfC,EAAKnC,EAAQmC,CAAE,EACfD,EAAKC,EAEED,CACT,CAEA,SAASmD,IAAkB,CACzB,IAAInD,EAAIC,EAAIC,EAAIC,EAuChB,IArCAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB7J,GAAO,KAAK6L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS5G,EAAO,GAE/CqF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKlC,EAAQoC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB7J,GAAO,KAAK6L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS5G,EAAO,GAE/CqF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKlC,EAAQoC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAASkD,IAA4B,CACnC,IAAIlD,EAAIC,EAAIC,EAAIC,EAuChB,IArCAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB5J,GAAO,KAAK4L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS3G,EAAO,GAE/CoF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKjC,EAAQmC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB5J,GAAO,KAAK4L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS3G,EAAO,GAE/CoF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKjC,EAAQmC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAASqB,IAAsB,CAC7B,IAAIrB,EAAIC,EAAIC,EAYZ,GAVA1B,IACAwB,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKpP,EAAM,OAAOqN,CAAW,EACzB3J,GAAO,KAAK0L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASzG,EAAO,GAE3C4G,IAAOlP,EACT,KAAOkP,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKpP,EAAM,OAAOqN,CAAW,EACzB3J,GAAO,KAAK0L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASzG,EAAO,QAIjD2G,EAAKjP,EAEP,OAAIiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAKhC,EAAQgC,CAAE,GAEjBD,EAAKC,EACDD,IAAOhP,IACTgP,EAAK0B,GAAsB,GAE7BlD,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS1G,EAAO,GAGxC2G,CACT,CAEA,SAASoD,IAAsB,CAC7B,IAAIpD,EAAIC,EAER,OAAAzB,IACAwB,EAAKlP,EAAM,OAAOqN,CAAW,EACzB1J,GAAO,KAAKuL,CAAE,EAChB7B,KAEA6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASvG,EAAO,GAE/CgF,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASxG,EAAO,GAGxCyG,CACT,CAEA,SAASqD,IAAmB,CAC1B,IAAIrD,EAAIC,EAER,OAAAzB,IACAwB,EAAKlP,EAAM,OAAOqN,CAAW,EACzBzJ,GAAO,KAAKsL,CAAE,EAChB7B,KAEA6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASrG,EAAO,GAE/C8E,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAStG,EAAO,GAGxCuG,CACT,CAEA,SAASsD,IAAsB,CAC7B,IAAItD,EAEJ,OAAIlP,EAAM,OAAOqN,EAAa,CAAC,IAAMlK,IACnC+L,EAAK/L,GACLkK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASpG,EAAO,GAGxCqG,CACT,CAEA,SAASuD,IAAoB,CAC3B,IAAIvD,EAEJ,OAAIlP,EAAM,OAAOqN,EAAa,CAAC,IAAMjK,IACnC8L,EAAK9L,GACLiK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASnG,EAAO,GAGxCoG,CACT,CAEA,SAASwD,IAAoB,CAC3B,IAAIxD,EAAIC,EAAIC,EAEZ,OAAAF,EAAK7B,EACL8B,EAAK9B,EACLK,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMjK,IACnCgM,EAAKhM,GACLiK,GAAe,IAEf+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASnG,EAAO,GAE/C4E,IACI0B,IAAOlP,EACTiP,EAAK,QAEL9B,EAAc8B,EACdA,EAAKjP,GAEHiP,IAAOjP,GACLF,EAAM,OAASqN,GACjB+B,EAAKpP,EAAM,OAAOqN,CAAW,EAC7BA,MAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CmH,IAAOlP,GACTiP,EAAK,CAACA,EAAIC,CAAE,EACZF,EAAKC,IAEL9B,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAGAgP,CACT,CAEA,SAASyD,IAAqB,CAC5B,IAAIzD,EAAIC,EAAIC,EAAIC,EAIhB,GAFAH,EAAK7B,EACL8B,EAAKqD,GAAoB,EACrBrD,IAAOjP,EAAY,CAGrB,IAFAkP,EAAK,CAAC,EACNC,EAAKqD,GAAkB,EAChBrD,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKqD,GAAkB,EAEzBrD,EAAKoD,GAAkB,EACnBpD,IAAOnP,GACTiP,EAAK,CAACA,EAAIC,EAAIC,CAAE,EAChBH,EAAKC,IAEL9B,EAAc6B,EACdA,EAAKhP,EAET,MACEmN,EAAc6B,EACdA,EAAKhP,EAGP,OAAOgP,CACT,CAEA,SAAS0D,IAAsB,CAC7B,IAAI1D,EAEJ,OAAIlP,EAAM,OAAOqN,EAAa,CAAC,IAAMhK,IACnC6L,EAAK7L,GACLgK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASlG,EAAO,GAGxCmG,CACT,CAEA,SAAS2C,IAAoB,CAC3B,IAAI3C,EAEJ,OAAAA,EAAKlP,EAAM,OAAOqN,CAAW,EACzBxJ,GAAO,KAAKqL,CAAE,EAChB7B,KAEA6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASjG,EAAO,GAGxCkG,CACT,CAEA,SAAS2D,IAAqB,CAC5B,IAAI3D,EAAIC,EAAIC,EAAIC,EAIhB,GAFAH,EAAK7B,EACL8B,EAAKyD,GAAoB,EACrBzD,IAAOjP,EAAY,CAGrB,IAFAkP,EAAK,CAAC,EACNC,EAAKwC,GAAkB,EAChBxC,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKwC,GAAkB,EAEzB1C,EAAK,CAACA,EAAIC,CAAE,EACZF,EAAKC,CACP,MACE9B,EAAc6B,EACdA,EAAKhP,EAGP,OAAOgP,CACT,CAEA,SAAS4D,IAAmB,CAC1B,IAAI5D,EAAIC,EAER,OAAAzB,IACAwB,EAAK2D,GAAmB,EACpB3D,IAAOhP,IACTgP,EAAKyD,GAAmB,GAE1BjF,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAShG,EAAO,GAGxCiG,CACT,CAEA,SAASI,GAAa,CACpB,IAAIJ,EAAIC,EAUR,IARAD,EAAK,CAAC,EACNC,EAAKmD,GAAoB,EACrBnD,IAAOjP,IACTiP,EAAKoD,GAAiB,EAClBpD,IAAOjP,IACTiP,EAAK2D,GAAiB,IAGnB3D,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAKmD,GAAoB,EACrBnD,IAAOjP,IACTiP,EAAKoD,GAAiB,EAClBpD,IAAOjP,IACTiP,EAAK2D,GAAiB,IAK5B,OAAO5D,CACT,CAIA,GAFAvB,EAAarN,EAAsB,EAE/BL,EAAQ,YACV,MAA2B,CACzB,WAAA0N,EACA,YAAAN,EACA,WAAAnN,EACA,oBAAAuN,EACA,eAAAD,CACF,EAEF,GAAIG,IAAezN,GAAcmN,IAAgBrN,EAAM,OACrD,OAAO2N,EAEP,MAAIA,IAAezN,GAAcmN,EAAcrN,EAAM,QACnDiP,EAASV,GAAmB,CAAC,EAGzBN,GACJR,EACAD,EAAiBxN,EAAM,OAASA,EAAM,OAAOwN,CAAc,EAAI,KAC/DA,EAAiBxN,EAAM,OACnB+N,GAAoBP,EAAgBA,EAAiB,CAAC,EACtDO,GAAoBP,EAAgBA,CAAc,CACxD,CAEJ,CCnnFO,SAASuF,GAAMC,EAAgC,CACpD,OAAOC,GAASD,EAAS,CAAE,QAAS,IAAIE,EAAU,CAAC,CACrD,CCLA,IAAAC,GAAoB,WACpBC,GAAe,WCDf,IAAIC,GAAaC,GAAQ,OAAO,UAAU,SAAS,KAAKA,CAAG,EACvDC,GAAkBC,GAAU,YAAY,OAAOA,CAAK,GAAK,EAAEA,aAAiB,UAC5EC,GAAWH,GAAQD,GAAUC,CAAG,IAAM,gBACtCI,GAAaJ,GAAQD,GAAUC,CAAG,IAAM,kBACxCK,GAAYL,GAAQD,GAAUC,CAAG,IAAM,iBACvCM,GAAcN,GAAQD,GAAUC,CAAG,IAAM,mBACzCO,GAAaP,GAAQD,GAAUC,CAAG,IAAM,kBACxCQ,GAAaR,GAAQD,GAAUC,CAAG,IAAM,kBACxCS,GAAW,MAAM,QACjBC,GAAO,OAAO,yBACdC,GAAyB,OAAO,UAAU,qBAC1CC,GAA2B,OAAO,sBAClCC,GAAmB,OAAO,UAAU,eACxC,SAASC,GAAoBd,EAAK,CAChC,IAAMe,EAAM,OAAO,KAAKf,CAAG,EACrBgB,EAAUJ,GAAyBZ,CAAG,EAC5C,QAASiB,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAC9BN,GAAuB,KAAKX,EAAKgB,EAAQC,CAAC,CAAC,GAC7CF,EAAI,KAAKC,EAAQC,CAAC,CAAC,EAGvB,OAAOF,CACT,CACA,SAASG,GAAYC,EAAQC,EAAK,CAChC,MAAO,CAACV,GAAKS,EAAQC,CAAG,GAAG,QAC7B,CACA,SAASC,GAAKC,EAAKC,EAAS,CAC1B,GAAI,OAAOD,GAAQ,UAAYA,IAAQ,KAAM,CAC3C,IAAIE,EACJ,GAAIf,GAASa,CAAG,EACdE,EAAM,CAAC,UACErB,GAAQmB,CAAG,EACpBE,EAAM,IAAI,KAAKF,EAAI,QAAUA,EAAI,QAAQ,EAAIA,CAAG,UACvClB,GAAUkB,CAAG,EACtBE,EAAM,IAAI,OAAOF,CAAG,UACXjB,GAASiB,CAAG,EACrBE,EAAM,CAAE,QAASF,EAAI,OAAQ,UACpBhB,GAAWgB,CAAG,GAAKf,GAAUe,CAAG,GAAKd,GAAUc,CAAG,EAC3DE,EAAM,OAAOF,CAAG,MACX,IAAIrB,GAAeqB,CAAG,EAC3B,OAAOA,EAAI,MAAM,EAEjBE,EAAM,OAAO,OAAO,OAAO,eAAeF,CAAG,CAAC,EAEhD,IAAMG,EAAoBF,EAAQ,eAAiBT,GAAsB,OAAO,KAChF,QAAWM,KAAOK,EAAkBH,CAAG,EACrCE,EAAIJ,CAAG,EAAIE,EAAIF,CAAG,EAEpB,OAAOI,CACT,CACA,OAAOF,CACT,CACA,IAAII,GAAa,CACf,eAAgB,GAChB,UAAW,EACb,EACA,SAASC,GAAKC,EAAMC,EAAIN,EAAUG,GAAY,CAC5C,IAAMI,EAAO,CAAC,EACRC,EAAU,CAAC,EACbC,EAAQ,GACNP,EAAoBF,EAAQ,eAAiBT,GAAsB,OAAO,KAC1EmB,EAAY,CAAC,CAACV,EAAQ,UAC5B,OAAO,SAASW,EAAOC,EAAO,CAC5B,IAAMC,EAAOH,EAAYZ,GAAKc,EAAOZ,CAAO,EAAIY,EAC1CE,EAAY,CAAC,EACfC,EAAa,GACXC,EAAQ,CACZ,KAAAH,EACA,MAAAD,EACA,KAAM,CAAC,EAAE,OAAOL,CAAI,EACpB,OAAQC,EAAQA,EAAQ,OAAS,CAAC,EAClC,QAAAA,EACA,IAAKD,EAAKA,EAAK,OAAS,CAAC,EACzB,OAAQA,EAAK,SAAW,EACxB,MAAOA,EAAK,OACZ,SAAU,OACV,OAAQ,GACR,QAAS,GACT,QAAS,GACT,QAAS,GACT,OAAQ,GACR,OAAQ,SAASU,EAAGC,EAAW,GAAO,CAC/BF,EAAM,SACTA,EAAM,OAAO,KAAKA,EAAM,GAAG,EAAIC,GAEjCD,EAAM,KAAOC,EACTC,IACFH,EAAa,GAEjB,EACA,OAAQ,SAASG,EAAU,CACzB,OAAOF,EAAM,OAAO,KAAKA,EAAM,GAAG,EAC9BE,IACFH,EAAa,GAEjB,EACA,OAAQ,SAASG,EAAU,CACrBhC,GAAS8B,EAAM,OAAO,IAAI,EAC5BA,EAAM,OAAO,KAAK,OAAOA,EAAM,IAAK,CAAC,EAErC,OAAOA,EAAM,OAAO,KAAKA,EAAM,GAAG,EAEhCE,IACFH,EAAa,GAEjB,EACA,KAAM,KACN,OAAQ,SAASI,EAAG,CAClBL,EAAU,OAASK,CACrB,EACA,MAAO,SAASA,EAAG,CACjBL,EAAU,MAAQK,CACpB,EACA,IAAK,SAASA,EAAG,CACfL,EAAU,IAAMK,CAClB,EACA,KAAM,SAASA,EAAG,CAChBL,EAAU,KAAOK,CACnB,EACA,KAAM,UAAW,CACfV,EAAQ,EACV,EACA,MAAO,UAAW,CAChBM,EAAa,EACf,CACF,EACA,GAAI,CAACN,EACH,OAAOO,EAET,SAASI,GAAe,CACtB,GAAI,OAAOJ,EAAM,MAAS,UAAYA,EAAM,OAAS,KAAM,EACrD,CAACA,EAAM,MAAQA,EAAM,QAAUA,EAAM,QACvCA,EAAM,KAAOd,EAAkBc,EAAM,IAAI,GAE3CA,EAAM,OAASA,EAAM,KAAK,SAAW,EACrC,QAAStB,EAAI,EAAGA,EAAIc,EAAQ,OAAQd,IAClC,GAAIc,EAAQd,CAAC,EAAE,QAAUkB,EAAO,CAC9BI,EAAM,SAAWR,EAAQd,CAAC,EAC1B,KACF,CAEJ,MACEsB,EAAM,OAAS,GACfA,EAAM,KAAO,KAEfA,EAAM,QAAU,CAACA,EAAM,OACvBA,EAAM,QAAU,CAACA,EAAM,MACzB,CACAI,EAAa,EACb,IAAMC,EAAMf,EAAG,KAAKU,EAAOA,EAAM,IAAI,EAOrC,GANIK,IAAQ,QAAUL,EAAM,QAC1BA,EAAM,OAAOK,CAAG,EAEdP,EAAU,QACZA,EAAU,OAAO,KAAKE,EAAOA,EAAM,IAAI,EAErC,CAACD,EACH,OAAOC,EAET,GAAI,OAAOA,EAAM,MAAS,UAAYA,EAAM,OAAS,MAAQ,CAACA,EAAM,SAAU,CAC5ER,EAAQ,KAAKQ,CAAK,EAClBI,EAAa,EACb,OAAW,CAACE,EAAOzB,CAAG,IAAK,OAAO,QAAQmB,EAAM,MAAQ,CAAC,CAAC,EAAG,CAC3DT,EAAK,KAAKV,CAAG,EACTiB,EAAU,KACZA,EAAU,IAAI,KAAKE,EAAOA,EAAM,KAAKnB,CAAG,EAAGA,CAAG,EAEhD,IAAM0B,EAAQZ,EAAOK,EAAM,KAAKnB,CAAG,CAAC,EAChCa,GAAapB,GAAiB,KAAK0B,EAAM,KAAMnB,CAAG,GAAK,CAACF,GAAYqB,EAAM,KAAMnB,CAAG,IACrFmB,EAAM,KAAKnB,CAAG,EAAI0B,EAAM,MAE1BA,EAAM,OAASP,EAAM,MAAM,OAAS,CAACM,IAAUN,EAAM,KAAK,OAAS,EAAI,GACvEO,EAAM,QAAU,CAACD,GAAU,EACvBR,EAAU,MACZA,EAAU,KAAK,KAAKE,EAAOO,CAAK,EAElChB,EAAK,IAAI,CACX,CACAC,EAAQ,IAAI,CACd,CACA,OAAIM,EAAU,OACZA,EAAU,MAAM,KAAKE,EAAOA,EAAM,IAAI,EAEjCA,CACT,EAAEX,CAAI,EAAE,IACV,CACA,IAAImB,GAAW,KAAM,CAEnBC,GACAC,GACA,YAAYjD,EAAKuB,EAAUG,GAAY,CACrC,KAAKsB,GAAShD,EACd,KAAKiD,GAAW1B,CAClB,CAIA,IAAI2B,EAAO,CACT,IAAId,EAAO,KAAKY,GAChB,QAAS/B,EAAI,EAAGmB,GAAQnB,EAAIiC,EAAM,OAAQjC,IAAK,CAC7C,IAAMG,EAAM8B,EAAMjC,CAAC,EACnB,GAAI,CAACJ,GAAiB,KAAKuB,EAAMhB,CAAG,GAAK,CAAC,KAAK6B,GAAS,gBAAkB,OAAO7B,GAAQ,SACvF,OAEFgB,EAAOA,EAAKhB,CAAG,CACjB,CACA,OAAOgB,CACT,CAIA,IAAIc,EAAO,CACT,IAAId,EAAO,KAAKY,GAChB,QAAS/B,EAAI,EAAGmB,GAAQnB,EAAIiC,EAAM,OAAQjC,IAAK,CAC7C,IAAMG,EAAM8B,EAAMjC,CAAC,EACnB,GAAI,CAACJ,GAAiB,KAAKuB,EAAMhB,CAAG,GAAK,CAAC,KAAK6B,GAAS,gBAAkB,OAAO7B,GAAQ,SACvF,MAAO,GAETgB,EAAOA,EAAKhB,CAAG,CACjB,CACA,MAAO,EACT,CAIA,IAAIU,EAAM5B,EAAO,CACf,IAAIkC,EAAO,KAAKY,GACZ/B,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIa,EAAK,OAAS,EAAGb,IAAK,CACpC,IAAMG,EAAMU,EAAKb,CAAC,EACbJ,GAAiB,KAAKuB,EAAMhB,CAAG,IAClCgB,EAAKhB,CAAG,EAAI,CAAC,GAEfgB,EAAOA,EAAKhB,CAAG,CACjB,CACA,OAAAgB,EAAKN,EAAKb,CAAC,CAAC,EAAIf,EACTA,CACT,CAIA,IAAI2B,EAAI,CACN,OAAOF,GAAK,KAAKqB,GAAQnB,EAAI,CAC3B,UAAW,GACX,eAAgB,CAAC,CAAC,KAAKoB,GAAS,cAClC,CAAC,CACH,CAIA,QAAQpB,EAAI,CACV,YAAKmB,GAASrB,GAAK,KAAKqB,GAAQnB,EAAI,KAAKoB,EAAQ,EAC1C,KAAKD,EACd,CAMA,OAAOnB,EAAIsB,EAAM,CACf,IAAMC,EAAO,UAAU,SAAW,EAC9BC,EAAMD,EAAO,KAAKJ,GAASG,EAC/B,YAAK,QAAQ,SAASX,EAAG,EACnB,CAAC,KAAK,QAAU,CAACY,KACnBC,EAAMxB,EAAG,KAAK,KAAMwB,EAAKb,CAAC,EAE9B,CAAC,EACMa,CACT,CAKA,OAAQ,CACN,IAAMA,EAAM,CAAC,EACb,YAAK,QAAQ,UAAW,CACtBA,EAAI,KAAK,KAAK,IAAI,CACpB,CAAC,EACMA,CACT,CAIA,OAAQ,CACN,IAAMA,EAAM,CAAC,EACb,YAAK,QAAQ,UAAW,CACtBA,EAAI,KAAK,KAAK,IAAI,CACpB,CAAC,EACMA,CACT,CAIA,OAAQ,CACN,IAAMtB,EAAU,CAAC,EACXuB,EAAQ,CAAC,EACT/B,EAAU,KAAK0B,GACrB,OAAIhD,GAAe,KAAK+C,EAAM,EACrB,KAAKA,GAAO,MAAM,EAEpB,SAASO,EAAMjC,EAAK,CACzB,QAAS,EAAI,EAAG,EAAIS,EAAQ,OAAQ,IAClC,GAAIA,EAAQ,CAAC,IAAMT,EACjB,OAAOgC,EAAM,CAAC,EAGlB,GAAI,OAAOhC,GAAQ,UAAYA,IAAQ,KAAM,CAC3C,IAAME,EAAMH,GAAKC,EAAKC,CAAO,EAC7BQ,EAAQ,KAAKT,CAAG,EAChBgC,EAAM,KAAK9B,CAAG,EACd,IAAMgC,EAAmBjC,EAAQ,eAAiBT,GAAsB,OAAO,KAC/E,QAAWM,KAAOoC,EAAiBlC,CAAG,EACpCE,EAAIJ,CAAG,EAAImC,EAAMjC,EAAIF,CAAG,CAAC,EAE3B,OAAAW,EAAQ,IAAI,EACZuB,EAAM,IAAI,EACH9B,CACT,CACA,OAAOF,CACT,EAAE,KAAK0B,EAAM,CACf,CACF,EACIS,GAAW,CAACzD,EAAKuB,IACZ,IAAIwB,GAAS/C,EAAKuB,CAAO,EAElCkC,GAAS,IAAM,CAACzD,EAAKkD,EAAO3B,IACnB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAI2B,CAAK,EAE7CO,GAAS,IAAM,CAACzD,EAAK8B,EAAM5B,EAAOqB,IACzB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAIO,EAAM5B,CAAK,EAEnDuD,GAAS,IAAM,CAACzD,EAAKkD,EAAO3B,IACnB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAI2B,CAAK,EAE7CO,GAAS,IAAM,CAACzD,EAAK6B,EAAIN,IAChB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAIM,CAAE,EAE1C4B,GAAS,QAAU,CAACzD,EAAK6B,EAAIN,IACpB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,QAAQM,CAAE,EAE9C4B,GAAS,OAAS,CAACzD,EAAK6B,EAAIsB,EAAM5B,IACzB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,OAAOM,EAAIsB,CAAI,EAEnDM,GAAS,MAAQ,CAACzD,EAAKuB,IACd,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,MAAM,EAE1CkC,GAAS,MAAQ,CAACzD,EAAKuB,IACd,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,MAAM,EAE1CkC,GAAS,MAAQ,CAACzD,EAAKuB,IACd,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,MAAM,EAE1C,IAAImC,GAAcD,GCjWlB,SAASE,GACPC,EACAC,EACAC,EACQ,CACR,IAAIC,EAAe,GAEnB,OAAIH,IACFG,GAAgBH,GAEdC,IACFE,GAAgB,KAAKF,CAAK,KAExBC,IACFC,GAAgB,KAAKD,CAAQ,IAExBC,EAAa,KAAK,CAC3B,CAEA,IAAOC,GAAQ,CACb,YAAAL,EACF,ECrBO,SAASM,GAAUC,EAAkC,CAC1D,OAAO,MAAM,QAAQA,CAAO,EAAIA,EAAU,CAACA,CAAO,CACpD,CCCA,SAASC,GACPC,EACAC,EACoB,CACpB,IAAMC,EAAe,CAEnB,GAAID,EAAM,GAAGA,CAAG,WAAa,SAC/B,EAEA,OAAID,EAAe,YACjB,OAAO,OAAOE,EAAc,CAC1B,WAAY,CAACF,EAAe,UAAU,CACxC,CAAC,EAGIE,CACT,CAEA,SAASC,GAA2BC,EAAqC,CACvE,MAAO,CACL,GAAI,UACJ,WAAY,CACV,CACE,OAAQA,CACV,CACF,CACF,CACF,CAGA,SAASC,GAAiBC,EAAqC,CAC7D,IAAMJ,EAAe,CAAC,EAEtB,OAAII,EAAS,UACP,OAAOA,EAAS,SAAY,SAC9BJ,EAAa,KAAKC,GAA2BG,EAAS,OAAO,CAAC,EAE9DJ,EAAa,KACXH,GAA2BO,EAAS,QAASA,EAAS,EAAE,CAC1D,GAGGJ,CACT,CAUO,SAASK,GAAiBD,EAAwC,CACvE,MAAO,CACL,GAAGA,EACH,QAASD,GAAiBC,CAAQ,EAClC,MAAOE,GAAUF,GAAU,OAAS,CAAC,CAAC,EACtC,SAAUE,GAAUF,GAAU,UAAY,CAAC,CAAC,EAC5C,QAASE,GAAUF,GAAU,SAAW,CAAC,CAAC,EAC1C,MAAOE,GAAUF,GAAU,OAAS,CAAC,CAAC,CACxC,CACF,CJvDA,IAAMG,GAAcC,GAAI,YAExB,SAASC,GAAeC,EAAQC,EAAa,CAC3C,OAAOC,GAAUF,EAAOC,CAAW,CAAC,EAAE,IAAKE,IAAa,CACtD,KAAMF,IAAgB,SAAW,OAAS,QAC1C,KAAM,GAAAG,QAAG,OAAOD,CAAO,EAAE,KAAK,CAChC,EAAE,CACJ,CAEA,SAASE,GAA0BC,EAAiB,CAClD,OAAOJ,GAAUI,CAAe,EAAE,IAAKC,IAG9B,CACL,KAAM,WACN,KAJU,GAAAH,QAAG,OAAOG,EAAe,IAAM,EAAE,EAAE,KAAK,GAIrC,GAAAH,QAAG,OAAOG,GAAkB,EAAE,EAAE,KAAK,CACpD,EACD,CACH,CAMA,SAASC,GAAcR,EAAQ,CAC7B,IAAIS,EAAe,CAAC,EAEpB,OAAIT,EAAO,UACTS,EAAeA,EAAa,OAAOV,GAAeC,EAAQ,SAAS,CAAC,GAElEA,EAAO,SACTS,EAAeA,EAAa,OAC1BJ,GAA0BL,EAAO,MAAM,CACzC,GAEEA,EAAO,SACTS,EAAeA,EAAa,OAAOV,GAAeC,EAAQ,QAAQ,CAAC,GAE9DS,CACT,CAQA,SAASC,GAAgBC,EAAOX,EAAQ,CACtC,OAAOW,IAAU,WAAaX,EAAO,OAAS,OAAS,cAAgBW,CACzE,CAMA,SAASC,GAASD,EAAO,CACvB,OAAQX,GAAW,CAEjB,IAAMS,EAAe,CACnB,KAAMT,EAAO,GACb,KAAMU,GAAgBC,EAAOX,CAAM,CACrC,EAEA,OAAIa,GAAc,aAAab,EAAO,EAAE,IAAMS,EAAa,OACzDA,EAAa,kBAAoB,KAE/BT,EAAO,SAAWA,EAAO,QAAUA,EAAO,UAC5CS,EAAa,QAAUD,GAAcR,CAAM,GAG3C,OAAO,KAAKA,CAAM,EAAE,KAAMc,GACxB,CAAC,UAAW,QAAS,UAAW,WAAY,OAAO,EAAE,SAASA,CAAI,CACpE,IAIAL,EAAa,aAAeM,GAAWf,CAAM,GAExCS,CACT,CACF,CAMA,SAASO,GAAsCC,EAAa,CAC1D,IAAMR,EAAe,CAAC,EAEtB,OAAIQ,EAAY,QAGdR,EAAa,MAAQQ,EAAY,MAAM,MAAM,KAAK,EAAE,KAAK;AAAA,CAAI,GAE3DA,EAAY,OACdR,EAAa,KAAOQ,EAAY,MAE9BA,EAAY,OAAO,IACrBR,EAAa,OAAS,GAAAL,QAAG,OAAOa,EAAY,OAAO,CAAC,EAAE,KAAK,GAGzDA,EAAY,OACdR,EAAa,KAAOQ,EAAY,MAG3BR,CACT,CAMA,SAASS,GAA4BD,EAAa,CAChD,IAAMR,EAAe,CAAC,EAElB,OAAOQ,GAAgB,SACzBR,EAAa,OAAS,GAAAL,QAAG,OAAOa,CAAW,EAAE,KAAK,EAElD,OAAO,OACLR,EACAO,GAAsCC,CAAW,CACnD,EAGF,IAAME,EAAStB,GACbY,EAAa,MACbA,EAAa,KACbA,EAAa,MACf,EAEA,OAAIU,IACFV,EAAa,MAAQU,GAGhBV,CACT,CAMA,SAASW,GAAiBpB,EAAQqB,EAAU,CAM1C,MAAO,CAACC,EAAiBL,IAAgB,CAGvC,IAAMM,GAAYN,GAAa,QAAUjB,EAAO,IAAI,MAAM,KAAK,EACzDwB,EAAwBN,GAA4BD,CAAW,EAErE,OAAOK,EAAgB,OACrBC,EAAS,IAAKE,IAAa,CACzB,GAAIJ,EAAS,KAAK,EAClB,KAAMrB,EAAO,GAGb,GAAIyB,EACJ,GAAGD,CACL,EAAE,CACJ,CACF,CACF,CAOA,SAASE,GAAmBC,EAASN,EAAU,CAC7C,OAAOM,EACJ,OAAQ3B,GAAW,OAAO,OAAOA,EAAQ,YAAY,CAAC,EACtD,OAAO,CAACsB,EAAiBM,IAAe,CACvC,IAAMC,EAAqB3B,GAAU0B,EAAW,UAAU,EAC1D,OAAON,EAAgB,OACrBO,EAAmB,OAAOT,GAAiBQ,EAAYP,CAAQ,EAAG,CAAC,CAAC,CACtE,CACF,EAAG,CAAC,CAAC,CACT,CAMA,SAASN,GAAWe,EAAoB,CACtC,IAAMC,EAAqBC,GAAiBF,CAAkB,EACxDrB,EAAe,CACnB,OAAQsB,EAAmB,QACxB,IAAInB,GAAS,SAAS,CAAC,EACvB,OAAOmB,EAAmB,MAAM,IAAInB,GAAS,SAAS,CAAC,CAAC,EACxD,OAAOmB,EAAmB,SAAS,IAAInB,GAAS,UAAU,CAAC,CAAC,EAC5D,OAAOmB,EAAmB,QAAQ,IAAInB,GAAS,SAAS,CAAC,CAAC,EAC1D,OAAOmB,EAAmB,MAAM,IAAInB,GAAS,OAAO,CAAC,CAAC,CAC3D,EACMqB,EAAW,IAAIC,GAEfC,EAAeT,GAAmBK,EAAmB,QAASE,CAAQ,EACzE,OAAOP,GAAmBK,EAAmB,MAAOE,CAAQ,CAAC,EAC7D,OAAOP,GAAmBK,EAAmB,SAAUE,CAAQ,CAAC,EAEnE,OAAIE,EAAa,OAAS,IACxB1B,EAAa,YAAc0B,GAGtB1B,CACT,CAgBA,SAAS2B,GAA6BC,EAASC,EAAsB,CAMnE,OAAOC,GAASF,CAAO,EAAE,IAAI,UAAuB,CAClD,GAAI,KAAK,KAAK,WAAWC,CAAoB,EAAG,CAC9C,IAAME,EAA2B,KAAK,IAAI,MACxCF,EAAqB,MACvB,EACI,KAAK,OAAO,KAAK,SAASE,CAAwB,EACpD,KAAK,OAAO,GAEZ,KAAK,OAAO,KAAKA,CAAwB,EAAI,KAAK,KAClD,KAAK,OAAO,EAEhB,CACF,CAAC,CACH,CAQO,SAASC,GAAMC,EAAc,CAClC,IAAMC,EAAsBD,EAAa,KAAK,EACxCE,EAAuB,KAEzBC,EAAa,CAAC,EAEZC,EAAa,IAAI,GAAAC,QAAQ,UAAU,CACvC,oBAAqBH,EACrB,iBAAkB,GAClB,cAAe,GACf,gBAAiB,GACjB,kBAAmB,CAACI,EAAWC,IAAc,GAAA7C,QAAG,OAAO6C,CAAS,EAChE,UAAW,CAAC,YAAa,WAAY,cAAc,CACrD,CAAC,EAED,GAAI,CACFJ,EAAaT,GACXU,EAAW,MAAMH,EAAqB,EAAI,EAC1CC,CACF,CACF,MAAiB,CACf,MAAM,IAAI,MAAM;AAAA,CAAwC,CAC1D,CACA,OAAO7B,GACL8B,GAAY,OAAS,CACnB,MAAO,kCACP,QAAS,KACX,CACF,CACF,CKjSA,IAAOK,GAAQ,CACb,QAAS,0CACT,MAAO,gDACP,KAAM,iCACN,IAAK,kCACL,YAAa,CACX,UAAW,CACT,KAAM,SACN,KAAM,CACJ,UACA,UACA,YACA,QACA,WACA,UACA,cACA,SACA,WACA,OACA,OACA,UACF,CACF,EACA,eAAgB,CACd,KAAM,SACN,KAAM,CAAC,WAAY,UAAU,CAC/B,EACA,SAAU,CACR,KAAM,QACN,MAAO,CACL,KAAM,QACR,CACF,EACA,eAAgB,CACd,KAAM,SACN,KAAM,CAAC,QAAS,WAAY,MAAM,CACpC,EACA,WAAY,CACV,KAAM,SACN,SAAU,CAAC,OAAQ,MAAM,EACzB,qBAAsB,GACtB,WAAY,CACV,KAAM,CAAE,KAAM,8BAA+B,EAC7C,KAAM,CAAE,KAAM,QAAS,CACzB,CACF,EACA,UAAW,CACT,KAAM,SACN,QAAS,qBACX,EACA,iBAAkB,CAChB,KAAM,SACN,qBAAsB,GACtB,SAAU,CAAC,QAAQ,EACnB,WAAY,CACV,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,OAAQ,MAAM,EACzB,qBAAsB,GACtB,WAAY,CACV,KAAM,CACJ,YACE,8EACF,KAAM,QACR,EACA,KAAM,CACJ,YACE,uLACF,KAAM,yBACR,EACA,MAAO,CACL,YACE,0GACF,KAAM,QACR,EACA,MAAO,CACL,YACE,wJACF,KAAM,QACR,EACA,MAAO,CACL,YACE,sDACF,KAAM,yBACR,EACA,OAAQ,CACN,YACE,qEACF,KAAM,SACR,EACA,kBAAmB,CACjB,YACE,ySACF,KAAM,SACR,EACA,YAAa,CACX,YACE,qJACF,KAAM,SACR,EACA,QAAS,CACP,KAAM,QACN,YACE,iIACF,MAAO,CAAE,KAAM,0BAA2B,CAC5C,EACA,KAAM,CACJ,YACE,yIACF,KAAM,wBACR,EACA,aAAc,CACZ,YAAa,yCACb,KAAM,gCACR,CACF,CACF,CACF,EACA,YAAa,CACX,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,KAAM,OAAQ,IAAI,EAC7B,qBAAsB,GACtB,WAAY,CACV,GAAI,CACF,KAAM,QACR,EACA,KAAM,CACJ,YACE,yDACF,KAAM,QACR,EACA,GAAI,CACF,YACE,uDACF,KAAM,QACR,EACA,MAAO,CACL,YACE,iHACF,KAAM,QACR,EACA,MAAO,CACL,YAAa,kCACb,KAAM,QACR,EACA,KAAM,CACJ,YAAa,yCACb,KAAM,QACR,EACA,OAAQ,CACN,YAAa,gDACb,KAAM,QACR,EACA,KAAM,CACJ,YAAa,sCACb,KAAM,wBACR,EACA,MAAO,CACL,YACE,6JACF,KAAM,QACR,EACA,MAAO,CACL,YACE,qDACF,KAAM,SACN,QAAS,EACT,QAAS,EACX,EACA,MAAO,CACL,YACE,sDACF,KAAM,yBACR,EACA,KAAM,CACJ,YACE,qHACF,KAAM,8BACR,CACF,CACF,CACF,CACF,CACF,CACF,CACF,EXlLA,IAAMC,GAAM,IAAI,GAAAC,QAGhB,SAASC,GAAsBC,EAAyBC,EAAoB,CAC1E,GAAI,CAACJ,GAAI,SAASG,EAASC,CAAO,EAChC,MAAM,IAAI,MACR,2DAA2DJ,GAAI,WAAW,CAAC;AAAA,CAC7E,CAEJ,CAEA,IAAOK,GAAQ,CACb,OACEC,EACAC,EACe,CACf,IAAIC,EAAeF,EAEnB,OAAIG,GAAQ,eAAeF,EAAU,WAAW,IAAM,QACpDC,EAAeE,GAAWJ,CAAiB,EAClCG,GAAQ,eAAeF,EAAU,WAAW,IAAM,QAE3DC,EAAeE,GAAWJ,CAAO,EACxB,OAAOA,GAAY,WAE5BE,EAAe,KAAK,MAAMF,CAAO,GAGnCJ,GAAsBS,GAASH,CAAY,EAGpCA,CACT,CACF,EY9BA,SAASI,GACPC,EACAC,EACAC,EACQ,CACR,OAAOF,EACH,GAAGA,CAAc,GAAGE,CAAS,GAAGD,CAAc,GAC9CA,CACN,CAEA,SAASE,GACPC,EACAC,EACAC,EACa,CAUb,IAAMC,EAAe,CACnB,GAAGH,EACH,GAAGC,EACH,KAAMD,EAAoB,KAC1B,GAAIC,EAAoB,GACxB,GAAIC,EAAS,KAAK,CACpB,EAEA,OAAID,EAAoB,SACtBE,EAAa,OAASR,GACpBK,EAAoB,OACpBC,EAAoB,OACpB;AAAA,CACF,IAEEE,EAAa,OAASA,EAAa,MAAQA,EAAa,UAC1DA,EAAa,MAAQC,GAAI,YACvBD,EAAa,MACbA,EAAa,KACbA,EAAa,MACf,GAGKA,CACT,CAEA,SAASE,GACPC,EACAC,EACAC,EACAN,EACe,CACf,OAAOI,EAAa,OAClB,CAACG,EAAqBC,KACpBH,EAAkB,QAAQ,CAACI,EAAYC,IAAW,CAE9CD,IAAeD,EAAY,IAC3BF,EAAuBG,CAAU,EAEjCF,EAAOA,EAAK,OACVD,EAAuBG,CAAU,EAAE,IAAKV,GACtCF,GACEW,EACAT,EACAC,CACF,CACF,CACF,EAEAO,EAAOG,IAAW,EAAIH,EAAK,OAAOC,CAAW,EAAID,CAErD,CAAC,EACMA,GAET,CAAC,CACH,CACF,CAEA,SAASI,GACPC,EACAP,EACAC,EACAN,EACe,CACf,IAAMa,EAAW,gBAAgBD,CAAQ,EAEzC,OAAIC,EAAS,aAAeR,EAAkB,OAAS,IACrDQ,EAAS,YAAcV,GACrBU,EAAS,YACTR,EACAC,EACAN,CACF,GAGFa,EAAS,OAASA,EAAS,OAAO,IAAKC,GACrCA,EAAO,aACH,CACE,GAAGA,EACH,aAAcH,GACZG,EAAO,aACPT,EACAC,EACAN,CACF,CACF,EACAc,CACN,EAEOD,CACT,CAEA,SAASE,GACPH,EACAI,EACe,CACf,IAAMH,EAAW,gBAAgBD,CAAQ,EAEzC,OAAIC,EAAS,cACXA,EAAS,YAAcA,EAAS,YAAY,OACzCL,GACC,CAACQ,EAAY,KACVC,GACCA,IAAuBT,EAAY,MACnCS,IAAuBT,EAAY,EACvC,CACJ,GAGFK,EAAS,OAASA,EAAS,OACxB,OAAQC,GAAW,CAACE,EAAY,SAASF,EAAO,IAAI,CAAC,EACrD,IAAKA,GACJA,EAAO,aACH,CACE,GAAGA,EACH,aAAcC,GACZD,EAAO,aACPE,CACF,CACF,EACAF,CACN,EACKD,CACT,CAsBA,IAAOK,GAAQ,CACbN,EACAO,EAAkC,CAAC,OAAQ,WAAY,QAAQ,IAC7C,CAClB,IAAMC,EAAS,IAAIC,GAAkBT,CAAQ,EAEvCU,EAAoBF,EACvB,kBAAkBD,CAAkB,EACpC,IAAI,CAAC,CAAE,KAAAI,CAAK,IAAMA,CAAI,EAEnBC,EAAyCF,EAAkB,OAC/D,CAACf,EAAME,KACLF,EAAKE,CAAU,EAAIW,EAAO,sBAAsBX,CAAU,EACnDF,GAET,CAAC,CACH,EACMkB,EAAuBL,EAAO,uBAAuB,EAErDP,EAAWF,GACfC,EACAU,EACAE,EACA,IAAIE,GAAQD,CAAoB,CAClC,EAEA,OAAOV,GAAsBF,EAAUS,CAAiB,CAC1D,EC1MA,IAAMK,GAAgB,UAChBC,GAAmB,SACnBC,GAAiB,OAEjBC,GAA8B,CAClC,QACA,OACA,QACA,SACA,OACF,EAEMC,GAAmC,CAAC,OAAQ,QAAS,OAAO,EAElE,SAASC,GAAiBC,EAAiBC,EAAyB,CAClE,OAAOD,EAAQ,KAAKC,CAAO,EAAI,IAAIA,CAAO,IAAMA,CAClD,CAEA,SAASC,GAA2BC,EAAyB,CAC3D,OACE,OAAO,OAAOA,EAAQ,OAAO,GAC7B,OAAO,OAAOA,EAAQ,mBAAmB,GACzC,OAAO,OAAOA,EAAQ,OAAO,GAC7B,OAAO,OAAOA,EAAQ,QAAQ,GAC9B,OAAO,OAAOA,EAAQ,OAAO,CAEjC,CAEA,SAASC,GAAKC,EAAiBC,EAAkB,GAAY,CAC3D,OAAOD,EAAM,IAAKE,GAAc,GAAGD,CAAO,KAAKC,CAAS,EAAE,EAAE,KAAK;AAAA,CAAI,CACvE,CAEA,SAASC,GAAkBC,EAAcC,EAAwB,CAC/D,OAAID,IAAS,OAEJ,GAAGA,CAAI,IAAIC,CAAM,GAEtBD,IAAS,SACJC,EAASD,EAAO,GAElB,GAAGA,CAAI,KAAKC,CAAM,GAC3B,CAEA,SAASC,GAAwBR,EAAwB,CACvD,OAAO,OAAO,QAAQA,CAAM,EACzB,OAAO,CAAC,CAACM,CAAI,IAAMZ,GAA4B,SAASY,CAAI,CAAC,EAC7D,OAAO,CAAC,CAACA,CAAI,IAAMA,IAAS,QAAUN,EAAO,iBAAiB,EAC9D,IAAI,CAAC,CAACM,EAAMC,CAAM,IAAMF,GAAkBC,EAAMC,CAAM,CAAC,EACvD,KAAK,GAAG,CACb,CAEA,SAASE,GAAQC,EAAiC,CAChD,OAAOA,EACJ,IACEC,GACC,GAAGA,EAAQ,OAAS,WAAa,GAAK,GAAGA,EAAQ,IAAI,IAAI,GAAGA,EAAQ,IAAI,EAC5E,EACC,IAAKA,GAAYf,GAAiBJ,GAAkBmB,CAAO,CAAC,EAC5D,KAAK;AAAA,KAAQ,CAClB,CAEA,SAASC,GAAMZ,EAAgBG,EAAkB,GAAY,CAC3D,IAAIU,EAAeV,EAAUP,GAAiBL,GAAeS,EAAO,IAAI,EACxE,OAAIA,EAAO,OACTa,EAAe,GAAGZ,GAAKD,EAAO,KAAMG,CAAO,CAAC;AAAA,EAAKU,CAAY,IAE3Dd,GAA2BC,CAAM,IACnCa,GAAgB,KAAKL,GAAwBR,CAAM,CAAC,KAElDA,EAAO,UACTa,GAAgB,KAAKJ,GAAQT,EAAO,OAAO,CAAC,IAE1CA,EAAO,eACTa,GAAgB;AAAA,EAEhBA,GAAgBC,GAAYd,EAAO,aAAc,KAAM,GAAGG,CAAO,MAAM,EACvEU,GAAgB,GAAGV,CAAO,KAGrBU,CACT,CAEA,SAASE,GAAOC,EAAmBb,EAAkB,GAAY,CAC/D,OAAOa,EACJ,IAAKhB,GAAWY,GAAMZ,EAAQG,CAAO,CAAC,EACtC,KAAK;AAAA,CAAK,EACV,OAAOa,EAAQ,OAAS,EAAI;AAAA;AAAA,EAAU,EAAE,CAC7C,CAEA,SAASC,GAAgCC,EAAmC,CAC1E,OAAO,OAAO,QAAQA,CAAW,EAAE,KAAK,CAAC,CAACZ,CAAI,IAC5CX,GAAiC,SAASW,CAAI,CAChD,CACF,CAEA,SAASa,GAA6BD,EAAkC,CACtE,OACE,OAAO,QAAQA,CAAW,EACvB,OAAO,CAAC,CAACZ,CAAI,IAAMX,GAAiC,SAASW,CAAI,CAAC,EAGlE,IAAI,CAAC,CAACA,EAAMC,CAAM,IAAMF,GAAkBC,EAAMC,CAAM,CAAC,EACvD,KAAK,GAAG,CAEf,CAEA,SAASa,GAAWF,EAA0Bf,EAAkB,GAAY,CAC1E,IAAIU,EAAe,GAAGV,CAAO,GAAGP,GAAiBL,GAAe2B,EAAY,IAAI,CAAC,OAAOtB,GACtFL,GACA2B,EAAY,EACd,CAAC,GACD,OAAIA,EAAY,OACdL,EAAe,GAAGZ,GAAKiB,EAAY,KAAMf,CAAO,CAAC;AAAA,EAAKU,CAAY,IAEhEI,GAAgCC,CAAW,IAC7CL,GAAgB,KAAKM,GAA6BD,CAAW,CAAC,KAE5DA,EAAY,QACdL,GAAgB,KAAKjB,GAAiBH,GAAgByB,EAAY,KAAK,CAAC,IAEnEL,CACT,CAEA,SAASQ,GACPC,EACAnB,EAAkB,GACV,CACR,OAAOmB,EACJ,IAAKJ,GAAgB,GAAGE,GAAWF,EAAaf,CAAO,CAAC;AAAA,CAAK,EAC7D,KAAK,EAAE,CACZ,CAEe,SAARW,GACLS,EACAC,EAAmC,CAAC,EACpCrB,EAAkB,GACV,CACR,OACEY,GAAOQ,EAAc,OAAQpB,CAAO,EACpCkB,GAAYE,EAAc,aAAe,CAAC,EAAGpB,CAAO,CAExD,CCjJA,IAAAsB,GAAe,WCCf,IAAMC,GAA6C,CACjD,CAAE,KAAM,WAAY,MAAO,aAAc,EACzC,CAAE,KAAM,WAAY,MAAO,IAAK,EAChC,CAAE,KAAM,WAAY,MAAO,KAAM,CACnC,EAEMC,GAA2D,CAC/D,IAAK,CACH,CAAE,KAAM,UAAW,MAAO,MAAO,EACjC,CAAE,KAAM,WAAY,MAAO,KAAM,EACjC,CAAE,KAAM,WAAY,MAAO,MAAO,EAClC,CAAE,KAAM,UAAW,MAAO,OAAQ,EAClC,CAAE,KAAM,UAAW,MAAO,KAAM,EAChC,CAAE,KAAM,UAAW,MAAO,KAAM,CAClC,EACA,IAAK,CAAC,CAAE,KAAM,IAAK,MAAO,KAAM,CAAC,EACjC,MAAO,CAAC,CAAE,KAAM,OAAQ,MAAO,IAAK,CAAC,EACrC,MAAO,CAAC,CAAE,KAAM,UAAW,MAAO,KAAM,CAAC,CAC3C,EAEMC,GAA+D,CACnE,aAAc,CAAC,CAAE,KAAM,UAAW,MAAO,IAAK,CAAC,EAC/C,aAAc,CAAC,CAAE,KAAM,UAAW,MAAO,IAAK,CAAC,EAC/C,aAAc,CAAC,CAAE,KAAM,UAAW,MAAO,IAAK,CAAC,CACjD,EAEMC,GAAoC,CACxC,CAAE,KAAM,QAAS,MAAO,WAAY,EACpC,CAAE,KAAM,QAAS,MAAO,QAAS,EACjC,CAAE,KAAM,YAAa,MAAO,aAAc,EAC1C,CAAE,KAAM,WAAY,MAAO,WAAY,EACvC,CAAE,KAAM,WAAY,MAAO,EAAG,EAC9B,CAAE,KAAM,WAAY,MAAO,KAAM,CACnC,EAEMC,GAAoC,CACxC,CAAE,KAAM,WAAY,MAAO,WAAY,EACvC,CAAE,KAAM,WAAY,MAAO,EAAG,CAChC,EAEA,SAASC,GAAkBC,EAAoC,CAC7D,MAAO,GAAGA,EAAW,IAAI,IAAIA,EAAW,KAAK,EAC/C,CAEO,SAASC,GACdC,EACAC,EACAC,EACQ,CACR,OAAOV,GAAyB,OAAOC,GAAiBO,CAAO,GAAK,CAAC,CAAC,EACnE,OAAON,GAAqBO,CAAU,GAAK,CAAC,CAAC,EAC7C,OAAOC,GAAuB,CAAC,CAAC,EAChC,IAAIL,EAAiB,EACrB,KAAK,GAAG,CACb,CAEO,SAASM,GACdC,EACQ,CACR,OAAOT,GAAgB,OAAOS,GAAsB,CAAC,CAAC,EACnD,IAAIP,EAAiB,EACrB,KAAK,GAAG,CACb,CAEO,SAASQ,GACdC,EACQ,CACR,OAAOV,GAAgB,OAAOU,GAAsB,CAAC,CAAC,EACnD,IAAIT,EAAiB,EACrB,KAAK,GAAG,CACb,CC3EA,IAAAU,GAAe,WAWf,SAASC,GACPC,EACAC,EACQ,CACR,IAAMC,GAAcD,GAAmB,CAAC,GAAG,KACxCE,GAAeA,EAAW,OAAS,OACtC,GAAG,MAEH,OACED,GACA,CAACF,EAAO,OACR,CACE,UACA,OACA,OACA,WACA,WACA,YACA,OACF,EAAE,SAASA,EAAO,IAAI,EAEfE,EAEFF,EAAO,OAAS,OACzB,CAEO,SAASI,GAAaC,EAAyB,CACpD,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,SAAU,KAAK,EACvB,QAAQ,KAAM,KAAK,EACnB,OAAO,KAAK,CACjB,CAEO,SAASC,GAAkBD,EAAyB,CACzD,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,SAAU,QAAQ,EAC1B,QAAQ,KAAM,KAAK,EACnB,OAAO,QAAQ,CACpB,CAIO,SAASE,GAAWC,EAA6B,CACtD,IAAMC,EAAaD,GAAc,WAEjC,OAAOC,IAAe,YAAcA,IAAe,YACrD,CAEO,SAASC,GACdC,EACAC,EACS,CACT,OACEA,EAAY,OAASA,EAAY,KAChCD,EAAmB,gBAAgBC,EAAY,IAAI,GAAG,cACrD,KACFA,EAAY,OAAS,UAEzB,CAWO,SAASC,GAAYC,EAAyB,CACnD,OAAOA,EAAM,IAAIV,EAAY,EAAE,KAAK,EAAE,CACxC,CAEO,SAASW,GAAUf,EAAgBgB,EAAyB,CACjE,GAAIhB,EAAO,KAAM,CACf,IAAMiB,EAAY,QAAQjB,EAAO,IAAI,GACjCkB,EAAe;AAAA,EAAKF,CAAO,MAAMC,CAAS,yCAAyCJ,GAAYb,EAAO,IAAI,CAAC,6DAE/G,OAAAkB,GAAgB;AAAA,EAAKF,CAAO,MAAMhB,EAAO,IAAI,SAASiB,CAAS,iDAExDC,CACT,CACA,MAAO,EACT,CAGO,SAASC,GACdnB,EACAoB,EACAJ,EACkB,CAClB,IAAME,EAAe,gBAAgBlB,CAAM,EAI3C,OAAAkB,EAAa,eAAiBlB,EAAO,MAAQ,WAAWA,EAAO,KAAK,IAAM,GAC1EkB,EAAa,mBAAqBlB,EAAO,MACrC,eAAeA,EAAO,KAAK,IAC3B,GAEJkB,EAAa,MAAQnB,GAAcC,EAAQoB,EAAS,YAAY,EAEhEF,EAAa,MAAQlB,EAAO,MACxB,SAASA,EAAO,IAAI,IAAIA,EAAO,KAAK,GACpC,SAASA,EAAO,IAAI,GACxBkB,EAAa,MAAQ,GAAAG,QAAG,OAAOrB,EAAO,OAASA,EAAO,IAAI,EAC1DkB,EAAa,SAAWH,GAAUf,EAAQgB,CAAO,EAE/C,CAAChB,EAAO,gBACRA,EAAO,OAAS,aACfA,EAAO,cAAc,QAAU,CAAC,GAAG,OAAS,IAI7CkB,EAAa,aAAa,OAASlB,EAAO,aAAa,OAAO,IAC3DsB,IAAiB,CAChB,GAAGA,EACH,eAAgBA,EAAY,OAAS,SACvC,EACF,GAGKJ,CACT,CAEO,SAASK,GAAiBlB,EAAyB,CACxD,OAAOA,IAAY,WAAa,GAAK,GAAGA,CAAO,IACjD,CAEO,SAASmB,GACdJ,EACAK,EACAb,EACA,CACA,IAAIc,EAAa,6BACbC,EAAa,gBACXlB,EAAamB,GAAeR,EAAU,WAAW,EACvD,OAAIb,GAAWE,CAAU,GACvBiB,EAAa,6BACbC,EAAa,kBACJF,EAAO,gBAAgBb,EAAY,IAAI,GAAG,QAAU,MAC7Dc,EAAa,6BACbC,EAAa,iBAER,CAAE,WAAAD,EAAY,WAAAC,CAAW,CAClC,CF9HA,SAASE,GAAQC,EAA0BC,EAAyB,CAClE,IAAMC,EAAmBF,EAAO,OAAS,gBAAkB,GAE3D,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,uCAAuCA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,wCAAwCE,CAAgB,IAAIF,EAAO,QAAQ,EACtN,CAEA,SAASG,GAAoBC,EAAyBH,EAAyB,CAC7E,OAAOG,EACJ,IAAKC,GACJ,GAAAC,QAAG,OAAO,GAAGC,GAAiBF,EAAQ,IAAI,CAAC,GAAGA,EAAQ,IAAI,EAAE,CAC9D,EACC,IAAI,CAACG,EAAeC,IAAW,CAC9B,IAAIC,EAAe,wCAAwCF,CAAa,aACxE,OAAIC,IAAW,IACbC,EAAe,QAAQA,CAAY,IAE9B;AAAA,EAAKT,CAAO,WAAWS,CAAY,EAC5C,CAAC,EACA,KAAK,EAAE,CACZ,CAKA,SAASC,GACPP,EACAH,EACQ,CACR,OAAOG,EACJ,IAAKC,GACJ,GAAAC,QAAG,OAAO,GAAGC,GAAiBF,EAAQ,IAAI,CAAC,GAAGA,EAAQ,IAAI,EAAE,CAC9D,EACC,IAAI,CAACG,EAAeC,IAAW,CAC9B,IAAIC,EAAe,wBAAwBF,CAAa,aACxD,OAAIC,IAAW,IACbC,EAAe,QAAQA,CAAY,IAE9B;AAAA,EAAKT,CAAO,WAAWS,CAAY,EAC5C,CAAC,EACA,KAAK,EAAE,CACZ,CAEA,SAASE,GAAcZ,EAA0BC,EAAyB,CACxE,IAAMC,EAAmBF,EAAO,OAAS,+BAAiC,GAEpEa,GAAgBb,EAAO,SAAS,QAAU,GAAK,EAAI,EAAI,EACvDc,EAAWX,GAAoBH,GAAQ,SAAW,CAAC,EAAGC,CAAO,EAE7Dc,EAASf,EAAO,OAAS,MAAMA,EAAO,KAAK,OAASA,EAAO,MAC3DgB,EAAY;AAAA,EAClBf,CAAO;AAAA,EACPA,CAAO,yCAAyCY,CAAY,KAAKE,CAAM,aAAaD,CAAQ;AAAA,EAC5Fb,CAAO,eAEP,MAAO,GAAGA,CAAO,MAAMD,EAAO,IAAI,sBAAsBA,EAAO,KAAK,aAAagB,CAAS;AAAA,EAC1Ff,CAAO,MAAMD,EAAO,cAAc,GAAGA,EAAO,kBAAkB,GAAGE,CAAgB,IAAIF,EAAO,QAAQ,EACtG,CAEA,SAASiB,GACPjB,EACAC,EACAiB,EACAC,EACAC,EACQ,CAER,IAAMC,EAAYrB,EAAO,eACrB,MACAA,EAAO,OACL,MACA,MACAsB,EAAStB,EAAO,eAAiB,SAAW,UAC5Cc,EAAWH,GAAsBX,GAAQ,SAAW,CAAC,EAAGC,CAAO,EAC/Dc,EAASf,EAAO,OAAS,MAAMA,EAAO,KAAK,OAASA,EAAO,MAC3DgB,EAAY,GAAGf,CAAO;AAAA,EAC5BA,CAAO,iBAAiBc,CAAM,aAAaD,CAAQ;AAAA,EACnDb,CAAO,eAUP,MAAO,GAR6BkB,EACjC,4BAA4BnB,EAAO,IAAI,EACvC,IACEuB,GACC,GAAGtB,CAAO,cAAcsB,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE;AAAA,CAChF,EACC,KAAK,EAAE,CAE2B,GAAGtB,CAAO,uBAAuBD,EAAO,IAAI;AAAA,EACjFC,CAAO,cAAcD,EAAO,KAAK;AAAA,EACjCgB,CAAS;AAAA,EACTf,CAAO,eAAeqB,CAAM,aAAaD,CAAS,GAAGrB,EAAO,cAAc,GAAGA,EAAO,kBAAkB;AAAA,EACtGC,CAAO,QAAQD,EAAO,IAAI;AAAA,EAC1BwB,GAAOxB,GAAQ,cAAc,QAAU,CAAC,EAAG,GAAGC,CAAO,OAAQiB,EAAUC,EAAQC,CAAoB,CAAC;AAAA,EACpGnB,CAAO,MAAMD,EAAO,QAAQ,EAC9B,CAEA,SAASyB,GACPzB,EACAC,EACAiB,EACAC,EACAC,EACQ,CACR,OAAIpB,EAAO,aACFiB,GAAiBjB,EAAQC,EAASiB,EAAUC,EAAQC,CAAoB,EAE1ER,GAAcZ,EAAQC,CAAO,CACtC,CAEA,SAASyB,GAAQ1B,EAA0BC,EAAyB,CAClE,IAAMC,EAAmBF,EAAO,OAAS,8BAAgC,GAEzE,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,0BAA0BA,EAAO,KAAK,cAAcA,EAAO,cAAc,GAAGA,EAAO,kBAAkB,GAAGE,CAAgB,IAAIF,EAAO,QAAQ,EAC/K,CAEA,SAAS2B,GAAY3B,EAA0BC,EAAyB,CACtE,IAAMC,EAAmBF,EAAO,OAAS,8BAAgC,GAEzE,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,0BAA0BA,EAAO,KAAK,eAAeA,EAAO,cAAc,GAAGA,EAAO,kBAAkB,GAAGE,CAAgB,IAAIF,EAAO,QAAQ,EAChL,CAEA,SAAS4B,GAAcxB,EAAyByB,EAA0B,CACxE,OAAOzB,EACJ,IAAKC,GAAY,CAChB,IAAIK,EAAe,GAAAJ,QAAG,OACpB,GAAGC,GAAiBF,EAAQ,IAAI,CAAC,GAAGA,EAAQ,IAAI,EAClD,EACA,OAAIwB,IACFnB,EAAe,MAAMA,CAAY,QAE5BA,CACT,CAAC,EACA,KAAK,KAAK,CACf,CAEA,SAASoB,GAAO9B,EAA0BC,EAAyB,CACjE,IAAMC,EAAmBF,EAAO,OAAS,gBAAkB,GAKrDgB,EAJWY,GACf5B,GAAQ,SAAW,CAAC,EACpBA,GAAQ,QAAU,EACpB,EAEM+B,EAAW,GAAG9B,CAAO,MAAMD,EAAO,IAAI,uFAAuFA,EAAO,KAAK,IAAIA,EAAO,cAAc,GAAGE,CAAgB,IACrL8B,EAAkB,GAAG/B,CAAO,MAAMD,EAAO,IAAI,SAASA,EAAO,IAAI,mCAAmCA,EAAO,KAAK,YAAYA,EAAO,KAAK,YAAYgB,CAAS,KAEnK,MAAO,GAAGe,CAAQ;AAAA,EAAKC,CAAe,GAAGhC,EAAO,QAAQ,EAC1D,CAEA,SAASiC,GACPjC,EACAC,EACAiB,EACQ,CACR,IAAMhB,EAAmBF,EAAO,OAAS,gBAAkB,GACrDkC,EAAaC,GAAejB,EAAU,WAAW,EACjDkB,EAAgBC,GAAWH,CAAU,EAAI,cAAgB,aAE/D,MAAO,GAAGjC,CAAO,MAAMD,EAAO,IAAI,8DAA8DA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,IAAIE,CAAgB,GAAGkC,CAAa,IAAIpC,EAAO,QAAQ,EACzN,CAEA,SAASsC,GAAStC,EAA0BC,EAAyB,CACnE,IAAMC,EAAmBF,EAAO,OAAS,gBAAkB,GACrDuC,EAAQC,GAAUxC,EAAQC,CAAO,EAEvC,MAAO,GAAGA,CAAO,MAAMD,EAAO,IAAI,2EAA2EA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,IAAIE,CAAgB,IAAIqC,CAAK,EAC5M,CAEA,SAASE,GAAUzC,EAA0BC,EAAyB,CACpE,IAAMe,EAAY;AAAA,EAClBf,CAAO;AAAA,EACPA,CAAO,gDAAgDD,EAAO,KAAK;AAAA,EACnEC,CAAO,gDAAgDD,EAAO,KAAK,KAAKA,EAAO,KAAK;AAAA,EACpFC,CAAO,iBAEP,MAAO,GAAGA,CAAO,MAAMD,EAAO,IAAI,cAAcgB,CAAS;AAAA,EACzDf,CAAO,gBAAgBD,EAAO,KAAK,KAAKA,EAAO,QAAQ,EACzD,CAEA,SAAS0C,GAAM1C,EAA0BC,EAAyB,CAChE,IAAMC,EAAmBF,EAAO,OAAS,8BAAgC,GAEzE,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,uCAAuCA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,sDAAsDE,CAAgB,IAAIF,EAAO,QAAQ,EACpO,CAEA,IAAM2C,GAAsB,IAAI,IAQ9B,CACA,CAAC,UAAW5C,EAAO,EACnB,CAAC,UAAW0B,EAAO,EACnB,CAAC,UAAWC,EAAO,EACnB,CAAC,cAAeC,EAAW,EAC3B,CAAC,SAAUG,EAAM,EACjB,CAAC,OAAQG,EAAQ,EACjB,CAAC,WAAYA,EAAQ,EACrB,CAAC,OAAQA,EAAQ,EACjB,CAAC,WAAYK,EAAQ,EACrB,CAAC,YAAaG,EAAS,EACvB,CAAC,QAASC,EAAK,CAEjB,CAAC,EAED,SAASE,GACP5C,EACAC,EACAiB,EACAC,EACAC,EACQ,CACR,IAAMyB,EAASC,GAAe9C,EAAQkB,EAAUjB,CAAO,EACjD8C,EAAwB5B,EAAO,0BACnCnB,EAAO,KACPoB,CACF,EACA2B,EAAsB,QAASxB,GAAgB,CAC7CH,EAAqB,IAAIG,EAAY,EAAE,CACzC,CAAC,EACD,IAAMyB,EAAeC,GACnBF,EACA9C,EACAiB,EACAC,CACF,EAEA,OAEGwB,GAAoB,IAAI3C,EAAO,IAAI,GAAKyB,IACvCoB,EACA5C,EACAiB,EACAC,EACAC,CACF,EACA4B,EACA;AAAA,CAEJ,CAEA,SAASxB,GACP0B,EACAjD,EACAiB,EACAC,EACAC,EACQ,CACR,OAAO8B,EACJ,IAAKlD,GAAW4C,GAAM5C,EAAQC,EAASiB,EAAUC,EAAQC,CAAoB,CAAC,EAC9E,KAAK,EAAE,CACZ,CAGA,SAAS+B,GACP5B,EACAtB,EACAiB,EACAC,EACQ,CAER,IAAMJ,EAAS,GAAGqC,GAAkB7B,EAAY,OAAS,GAAG,CAAC,GAIvD8B,EAAkB9B,EAAY,MAChC,WAAWA,EAAY,KAAK,IAC5B,GACE+B,EAAsB/B,EAAY,MACpC,eAAeA,EAAY,KAAK,IAChC,GACEF,EAAYE,EAAY,MAAQ,aAAaA,EAAY,KAAK,GAAK,GACnEgC,EAAShC,EAAY,MAEvB,aAAaA,EAAY,KAAO,IAAMA,EAAY,KAAO,IAAM,GAAG,GAAGA,EAAY,KAAK,GAEtF,aAAaA,EAAY,KAAO,IAAMA,EAAY,KAAO,EAAE,GAGzDiC,EAAQrC,EAAO,gBAAgBI,EAAY,IAAI,GAAG,aACpD,mBAAmBA,EAAY,IAAI,IACnC,GACEkC,EAAQtC,EAAO,gBAAgBI,EAAY,EAAE,GAAG,aAClD,mBAAmBA,EAAY,EAAE,IACjC,GACEmC,EAAkB,MAAMnC,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,GAElF,GAAIoC,GAAgBxC,EAAQI,CAAW,EAAG,CAGxC,GAAM,CAAE,WAAAqC,EAAY,WAAAC,CAAW,EAAIC,GACjC5C,EACAC,EACAI,CACF,EAGIwC,EAAe,GACnB,GAAIxC,EAAY,KAAM,CACpB,IAAMyC,EAAY,QAAQN,CAAe,GACnCO,EAAc;AAAA,EAAKhE,CAAO,MAAM+D,CAAS,iBAAiBzC,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,0DAC9GgB,EAAQ;AAAA,EAAKtC,CAAO,MAAM+D,CAAS,aAAaE,GAAY3C,EAAY,IAAI,CAAC,yFACnFwC,EAAeE,EAAc1B,CAC/B,CAIA,IAAM4B,EAAkB;AAAA,EAAKlE,CAAO,MAAMsB,EAAY,IAAI,iBAAiBA,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,aAAaR,CAAM,2BAA2BwC,CAAM,IAAIK,CAAU,GAAGJ,CAAK,GAAGH,CAAe,GAAGC,CAAmB,GAAGjC,CAAS,IACvP+C,EAAgB;AAAA,EAAKnE,CAAO,cAAcsB,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,SAASA,EAAY,EAAE,aAAagC,CAAM,IAAIE,CAAK,GAAGI,CAAU,GAAGR,CAAe,GAAGhC,CAAS,IAClM,OAAO8C,EAAkBC,EAAgBL,CAC3C,CAIA,GAAIxC,EAAY,KAAM,CACpB,IAAMyC,EAAY,QAAQN,CAAe,GACnCW,EAAgB,KAAKL,CAAS,GAC9BM,EAAY;AAAA,EAAKrE,CAAO,MAAMoE,CAAa,uEAC3CF,EAAkB;AAAA,EAAKlE,CAAO,MAAMsB,EAAY,IAAI,SAAS8C,CAAa,oBAAoBb,CAAK,GAAGH,CAAe,GAAGhC,CAAS,IACjI+C,EAAgB;AAAA,EAAKnE,CAAO,MAAMoE,CAAa,SAAS9C,EAAY,EAAE,aAAaR,CAAM,IAAI0C,CAAK,GAAGJ,CAAe,GAAGC,CAAmB,GAAGjC,CAAS,IACtJ4C,EAAc;AAAA,EAAKhE,CAAO,MAAMoE,CAAa,SAASL,CAAS,0DAC/DzB,EAAQ;AAAA,EAAKtC,CAAO,MAAM+D,CAAS,aAAaE,GAAY3C,EAAY,IAAI,CAAC,yFAEnF,OAAO+C,EAAYH,EAAkBC,EAAgBH,EAAc1B,CACrE,CAEA,MAAO;AAAA,EAAKtC,CAAO,MAAMsB,EAAY,IAAI,SAASA,EAAY,EAAE,aAAaR,CAAM,YAAYwC,CAAM,IAAIC,CAAK,GAAGC,CAAK,GAAGJ,CAAe,GAAGC,CAAmB,GAAGjC,CAAS,GAC5K,CAEA,SAAS4B,GACPsB,EACAtE,EACAiB,EACAC,EACQ,CACR,OAAOoD,EACJ,IAAKhD,GAAgB4B,GAAW5B,EAAatB,EAASiB,EAAUC,CAAM,CAAC,EACvE,KAAK,EAAE,CACZ,CAGe,SAARqD,GACLC,EACAvD,EAA2B,CAAC,EAC5BjB,EAAkB,GACV,CACR,IAAMyE,EAAmBC,GACvBxC,GAAejB,EAAU,QAAQ,EACjCiB,GAAejB,EAAU,WAAW,EACpCA,GAAU,eAAiB,CAAC,CAC9B,EACM0D,EAAkBC,GAAoB3D,EAAS,cAAgB,CAAC,CAAC,EACjE4D,EAAkBC,GAAoB7D,EAAS,cAAgB,CAAC,CAAC,EACjE8D,EAAS,IAAIC,GAAkBR,CAAa,EAC5CS,EAAmC,IAAI,IACvCC,EAAU3D,GAAOiD,EAAc,OAAQxE,EAASiB,EAAU8D,EAAQE,CAAoB,EA4BtFE,EAAwBnC,GAC5B+B,EAAO,qBAAqB,OACzBzD,GAAgB,CAAC2D,EAAqB,IAAI3D,EAAY,EAAE,CAC3D,EACAtB,EACAiB,EACA8D,CACF,EAEA,MAAO;AAAA,IACLN,CAAgB;AAAA,UACVE,CAAe;AAAA,UACfE,CAAe;AAAA;AAAA,EAEvBK,CAAO,GAAGC,CAAqB;AAAA;AAAA,CAGjC,CGjbA,IAAIC,GAAG,YAAYC,GAAE,WAAWC,GAAG,YAAYC,GAAG,WAAeC,GAAG,WAAWC,GAAG,SAASC,EAAEC,EAAEC,EAAE,CAAC,GAAGP,GAAE,UAAU,MAAM,OAAOA,GAAE,UAAU,MAAM,KAAKK,EAAEC,EAAEC,CAAC,GAAGD,GAAG,MAAMA,EAAE,KAAKA,EAAE,IAAIC,GAAG,MAAMA,EAAEF,EAAE,UAAUE,EAAEF,EAAE,QAAQ,IAAIG,EAAE,IAAIR,GAAEO,EAAED,CAAC,EAAE,OAAOE,EAAE,IAAIH,EAAE,SAASC,EAAEC,CAAC,CAAC,EAAEC,CAAC,EAAEC,GAAG,SAASJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,GAAGR,GAAE,UAAU,KAAK,OAAOA,GAAE,UAAU,KAAK,KAAKK,EAAEC,EAAEC,EAAEC,CAAC,EAAE,KAAKD,GAAG,MAAMA,EAAE,KAAKA,EAAE,IAAIC,GAAG,MAAMA,EAAEH,EAAE,UAAUG,EAAEH,EAAE,QAAQE,EAAEC,EAAE,EAAED,EAAEF,EAAEE,CAAC,EAAED,EAAE,OAAOD,CAAC,EAAEK,GAAG,SAASL,EAAEC,EAAEC,EAAEC,EAAE,CAAC,GAAGR,GAAE,UAAU,WAAW,OAAOA,GAAE,UAAU,WAAW,KAAKK,EAAEC,EAAEC,EAAEC,CAAC,EAAE,KAAKD,GAAG,MAAMA,EAAE,KAAKA,EAAE,IAAIC,GAAG,MAAMA,EAAEH,EAAE,UAAUG,EAAEH,EAAE,QAAQE,EAAEC,GAAGH,EAAEC,GAAG,EAAED,EAAEE,GAAG,CAAC,EAAMI,GAAG,CAAC,oBAAoB,kCAAkC,qBAAqB,wBAAwB,8BAA8B,gBAAgB,EAAEC,GAAE,SAASP,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAE,IAAI,MAAMF,GAAGK,GAAGN,CAAC,CAAC,EAAE,GAAGG,EAAE,KAAKH,EAAE,MAAM,mBAAmB,MAAM,kBAAkBG,EAAEI,EAAC,EAAE,CAACL,EAAE,MAAMC,EAAE,OAAOA,CAAC,EAAEK,GAAG,SAASR,EAAEC,EAAEC,EAAE,CAAC,QAAQC,EAAE,EAAEM,EAAE,EAAEN,EAAED,EAAE,EAAEC,EAAEM,GAAGT,EAAEC,GAAG,IAAIE,GAAG,GAAG,OAAOM,CAAC,EAAEC,GAAG,SAASV,EAAEC,EAAE,CAAC,OAAOD,EAAEC,CAAC,EAAED,EAAEC,EAAE,CAAC,GAAG,EAAED,EAAEC,EAAE,CAAC,GAAG,GAAGD,EAAEC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAEU,GAAG,SAASX,EAAEC,EAAE,CAAC,IAAIC,EAAEF,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,GAAG,GAAGE,GAAG,SAASF,EAAE,CAAC,GAAG,IAAI,CAAC,IAAIG,EAAEH,EAAE,CAAC,EAAES,EAAEN,GAAG,EAAE,EAAES,EAAET,GAAG,EAAE,EAAEU,EAAEV,EAAE,EAAEW,EAAEX,GAAG,EAAEA,EAAE,GAAGI,GAAE,CAAC,EAAE,IAAIQ,EAAE,EAAEN,EAAEO,EAAEH,GAAG,EAAE,EAAEA,EAAEI,EAAET,GAAGR,EAAEe,EAAEC,CAAC,EAAED,GAAGC,EAAE,IAAIE,EAAEJ,EAAE,GAAGA,EAAEL,EAAEU,EAAEX,GAAGR,EAAEe,EAAEG,CAAC,GAAGJ,GAAG,GAAG,KAAKM,EAAED,EAAE,GAAG,CAACV,EAAE,CAAC,IAAIY,EAAE,GAAG,IAAIrB,EAAE,CAAC,GAAG,GAAGoB,EAAEC,GAAGA,GAAG,IAAIrB,EAAE,CAAC,EAAE,EAAE,CAACoB,EAAE,YAAYb,GAAE,CAAC,EAAE,IAAIe,EAAE,IAAI3B,IAAGM,GAAG,EAAEkB,GAAGC,EAAEnB,EAAE,EAAEmB,GAAG,EAAE,EAAE,OAAOE,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEP,EAAEG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAED,EAAE,EAAEhB,GAAGA,GAAG,EAAEA,EAAEqB,EAAE,SAAS,EAAE,EAAE,EAAEF,EAAE,EAAE,IAAItB,GAAGwB,EAAE,OAAO,EAAE,CAAC,EAAE,EAAEH,EAAE,EAAEP,EAAE,EAAE,KAAK,IAAI,OAAOQ,CAAC,CAAC,CAAC,UAAUlB,GAAG,EAAEF,EAAE,CAAC,GAAG,KAAK,SAAS,OAAOU,GAAGV,EAAE,CAAC,EAAE,EAAEO,GAAE,CAAC,CAAC,EAAEgB,GAAG,SAASvB,EAAE,CAAC,QAAQC,EAAE,EAAE,GAAGA,GAAGD,EAAE,EAAEC,EAAE,CAAC,OAAOA,EAAE,CAAC,EAAEuB,GAAG,SAASxB,EAAEC,EAAEC,EAAE,CAAC,IAAIC,GAAGF,GAAG,GAAG,EAAEQ,GAAGT,EAAEC,CAAC,EAAE,IAAI,EAAEQ,EAAEP,GAAGK,GAAE,CAAC,EAAE,QAAQK,EAAE,GAAGH,EAAEI,EAAED,EAAEE,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAEL,EAAEM,EAAE,IAAIxB,GAAG,KAAKkB,GAAG,EAAE,EAAEO,EAAE,IAAItB,GAAGqB,EAAE,EAAE,GAAG,EAAEE,EAAE,IAAIxB,GAAGsB,EAAE,EAAE,GAAG,EAAEG,EAAE,IAAIzB,GAAGsB,EAAE,IAAIN,CAAC,EAAEU,EAAE,KAAKV,GAAG,GAAGa,EAAE,IAAI9B,GAAEuB,EAAEI,EAAEV,CAAC,EAAEc,EAAG,IAAI/B,GAAEuB,EAAEI,EAAEV,CAAC,EAAEE,EAAE,KAAKD,EAAE,GAAG,CAAC,IAAIc,EAAEJ,GAAGV,EAAE,CAAC,EAAEe,EAAEzB,GAAG,EAAE0B,GAAI,GAAGF,EAAE,GAAG,EAAEG,GAAG9B,EAAE4B,CAAC,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,MAAMzB,EAAE,GAAG0B,EAAGE,GAAG,GAAGJ,GAAG,EAAEK,GAAEH,EAAGhB,EAAE,EAAEoB,GAAEH,EAAEC,EAAE,GAAGE,GAAED,IAAG7B,GAAGwB,EAAEG,EAAEG,KAAI9B,GAAGwB,EAAE,EAAEG,EAAEC,IAAID,GAAGE,KAAIb,EAAE,EAAEL,CAAC,EAAE,EAAEgB,EAAEA,GAAG,IAAIjB,GAAGiB,EAAEL,EAAE,EAAER,CAAC,EAAEH,GAAGD,GAAGiB,EAAE,CAACA,EAAE,EAAE,CAAC,IAAII,GAAG/B,GAAG,EAAEY,GAAGf,EAAEkC,EAAE,EAAElC,EAAEkC,GAAG,CAAC,GAAG,KAAK/B,EAAE,GAAG,EAAEA,GAAG,EAAEW,GAAGC,CAAC,OAAOA,GAAG,EAAE,EAAED,EAAE,KAAKD,IAAIN,GAAE,CAAC,EAAE,QAAQ4B,EAAE,EAAEC,GAAGxB,GAAG,IAAIA,GAAG,GAAG,EAAEyB,GAAGzB,EAAE,EAAE0B,GAAG,EAAEA,IAAIxB,EAAE,EAAEwB,GAAG,CAAC,IAAIC,GAAEpB,EAAEmB,EAAE,EAAE,GAAGC,GAAE,EAAE,CAACnB,EAAEkB,EAAE,EAAE,CAACC,GAAE,QAAQ,CAAC,IAAIvB,EAAE,EAAEA,EAAEuB,GAAE,EAAEvB,EAAE,CAACS,EAAEU,CAAC,EAAEG,GAAG,GAAGH,EAAEA,EAAEC,EAAEC,SAASF,GAAGlB,EAAE,CAAC,CAAC,IAAIkB,GAAG5B,GAAE,CAAC,EAAES,EAAE,EAAEA,EAAEJ,EAAE,EAAEI,EAAE,CAAC,IAAIwB,EAAEpB,EAAEK,EAAET,CAAC,CAAC,IAAIyB,GAAEf,EAAGV,CAAC,EAAEP,EAAEc,GAAGiB,CAAC,EAAEnB,EAAEL,CAAC,GAAGwB,GAAGC,IAAG7B,CAAC,CAAC,MAAM,CAACT,EAAE,GAAG,EAAE,CAAC,EAAEM,EAAE,EAAEgB,EAAE,EAAEC,EAAG,EAAEL,CAAC,CAAC,CAAC,EAAEqB,GAAG,SAAS1C,EAAEC,EAAE,CAAC,IAAIC,EAAE,EAAEC,EAAE,GAAGM,EAAE,IAAId,GAAE,GAAG,EAAEiB,EAAEZ,EAAEC,CAAC,EAAEY,EAAEJ,EAAE,SAAS,EAAE,GAAG,EAAEK,EAAEL,EAAE,SAAS,IAAI,GAAG,EAAEM,EAAE,IAAInB,GAAGa,EAAE,OAAO,GAAG,EAAE,GAAGG,EAAE,IAAI,CAAC,IAAII,EAAEQ,GAAGxB,EAAEC,EAAE,EAAE,CAAC,EAAEgB,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAEf,GAAGW,EAAE,IAAIO,EAAEF,GAAG,EAAEG,EAAEpB,EAAEC,CAAC,EAAEmB,GAAGb,GAAE,CAAC,EAAE,QAAQc,EAAE,EAAEC,EAAE,EAAEG,EAAEP,EAAE,EAAEQ,EAAGD,EAAEE,GAAG,EAAE1B,GAAG,GAAG,EAAEsB,GAAGH,CAAC,EAAEO,GAAGF,EAAE,EAAEE,EAAER,IAAI,CAAC,IAAIS,EAAED,GAAG,EAAE,GAAGN,IAAIrB,EAAE4B,CAAC,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,KAAKD,EAAE,IAAI,GAAGF,GAAG,EAAEZ,EAAE,EAAEV,CAAC,EAAEe,EAAE,EAAEG,CAAC,EAAEM,GAAGD,EAAGC,EAAER,EAAE,MAAMS,EAAED,GAAG,EAAEL,IAAItB,EAAE4B,CAAC,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,KAAKD,EAAE,IAAI,GAAGD,GAAI,EAAEb,EAAE,EAAEV,CAAC,EAAEe,EAAE,EAAEI,CAAC,EAAEG,EAAEP,EAAE,EAAEG,CAAC,EAAEA,EAAEH,EAAE,EAAEG,CAAC,EAAEK,EAAGR,EAAE,EAAEI,CAAC,EAAEA,EAAEJ,EAAE,EAAEI,CAAC,CAAC,CAAC,EAAEnB,EAAE,KAAKI,GAAE,CAAC,CAAC,KAAK,CAAC,IAAIJ,EAAES,EAAE,IAAIV,EAAEC,EAAED,GAAG,EAAE,CAAC,IAAI2B,EAAG7B,EAAE,EAAEC,CAAC,EAAEY,EAAEX,CAAC,EAAE2B,GAAI,EAAEhB,EAAEX,EAAE,CAAC,EAAE2B,EAAG,EAAE,CAAC,EAAE5B,CAAC,CAAC,IAAI6B,EAAE,EAAE,IAAI5B,EAAE,EAAEA,EAAEC,EAAE,EAAED,EAAE,CAAC,IAAI6B,EAAElB,EAAEX,CAAC,EAAE6B,EAAE,IAAIxB,GAAE,CAAC,EAAEuB,GAAGC,GAAG,GAAGA,EAAE,CAAC,CAAC,IAAIC,GAAET,GAAGO,CAAC,EAAE,EAAEG,GAAE,GAAGD,GAAEE,GAAGD,GAAEH,EAAE,IAAII,GAAGA,GAAG,GAAG3B,GAAE,CAAC,EAAEM,EAAEV,GAAG,EAAEoB,GAAGW,EAAE,EAAE,EAAEhC,EAAE,EAAEA,EAAEC,EAAE,EAAED,EAAE,CAAC,IAAI6B,EAAElB,EAAEX,CAAC,EAAE,EAAEY,EAAED,EAAEX,CAAC,EAAE6B,GAAGC,GAAE,EAAED,CAAC,CAAC,CAAC,IAAII,EAAE,IAAIxC,GAAEsC,IAAG,CAAC,EAAEG,EAAED,EAAE,SAAS,EAAEF,EAAC,EAAEI,GAAGF,EAAE,SAASF,EAAC,EAAE,IAAIlB,EAAEiB,EAAC,EAAE,EAAE9B,EAAE8B,GAAE9B,EAAE,EAAE,EAAEA,EAAE,CAAC,IAAIoC,GAAGvB,EAAEb,CAAC,EAAEE,GAAGiC,GAAGnC,EAAEoC,GAAGvB,EAAEb,EAAE,CAAC,EAAEoC,GAAGxB,EAAEZ,CAAC,GAAG,GAAG8B,GAAE9B,EAAE,CAAC,CAAC,IAAIa,EAAE,CAAC,GAAGkB,IAAG1B,GAAE,CAAC,EAAEL,EAAE,EAAEA,EAAEC,EAAE,EAAED,EAAE,CAAC,IAAIqC,GAAE1B,EAAEX,CAAC,EAAE,GAAGqC,GAAE,CAAC,IAAIC,EAAEzB,EAAEwB,EAAC,EAAEnC,GAAGgC,EAAElC,EAAEsC,EAAEzB,EAAEwB,EAAC,EAAEC,GAAG,GAAGR,GAAEO,GAAE,CAAC,CAAC,CAAC,MAAM,CAACtC,EAAE,CAAC,EAAEoC,GAAG,EAAEL,GAAE,EAAEI,CAAC,CAAC,CAAC,EAAEO,GAAGnB,GAAG,IAAI7B,GAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEiD,GAAGpB,GAAG,IAAI7B,GAAE,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEkD,GAAGrB,GAAG,IAAI7B,GAAE,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEmD,GAAG,SAAS9C,EAAEC,EAAE,CAAC,QAAQC,EAAEF,EAAE,OAAOG,EAAE,IAAIL,GAAGI,CAAC,EAAEO,EAAE,EAAEA,EAAEP,EAAE,EAAEO,EAAEN,EAAEM,CAAC,EAAER,EAAEA,GAAG,GAAGD,EAAES,CAAC,EAAE,OAAON,CAAC,EAAE4C,GAAG,IAAIpD,GAAE,IAAIG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,SAAS,UAAU,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAEkD,GAAGF,GAAGC,GAAG,CAAC,EAAEE,GAAG,IAAItD,GAAE,IAAIG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,SAAS,UAAU,UAAU,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAEoD,GAAGJ,GAAGG,GAAG,CAAC,EAAEE,GAAG,SAASnD,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEH,EAAE,OAAOS,EAAER,EAAE,OAAOW,EAAEZ,EAAEG,EAAE,CAAC,EAAEU,GAAG,GAAGX,EAAE,GAAG,EAAEY,EAAE,CAACZ,EAAE,EAAEU,GAAGL,GAAE,CAAC,EAAE,QAAQQ,EAAE,EAAEC,EAAEd,EAAE,EAAEe,GAAGd,GAAG,GAAG,EAAEoB,GAAGX,CAAC,EAAEI,EAAEE,EAAE,GAAGD,EAAEH,GAAGI,EAAET,GAAG,CAAC,IAAIU,EAAEF,GAAG,EAAEG,GAAGpB,EAAEmB,CAAC,EAAEnB,EAAEmB,EAAE,CAAC,GAAG,EAAEnB,EAAEmB,EAAE,CAAC,GAAG,MAAMF,EAAE,GAAGF,GAAGA,GAAGC,EAAEI,GAAGP,EAAEZ,EAAE,EAAEiB,CAAC,EAAEhB,EAAE,EAAEa,CAAC,EAAEE,GAAGD,EAAEd,EAAE,EAAEa,CAAC,CAAC,EAAEE,GAAGH,GAAGI,EAAE,GAAGT,IAAIF,GAAE,CAAC,CAAC,EAAE6C,GAAG,SAASpD,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAE,EAAEM,EAAER,EAAE,OAAOW,EAAEH,EAAE,GAAG,EAAEI,EAAED,GAAG,EAAEE,EAAEF,EAAEC,EAAEsC,GAAGnD,EAAE,SAASG,EAAEA,GAAGH,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,CAAC,EAAEC,EAAE,SAAS,EAAEW,CAAC,EAAEV,CAAC,EAAEiD,GAAGnD,EAAE,SAASG,EAAEA,GAAGH,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,CAAC,EAAEC,EAAE,SAASW,EAAEC,CAAC,EAAEX,CAAC,EAAEiD,GAAGnD,EAAE,SAASG,EAAEA,GAAGH,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,CAAC,EAAEC,EAAE,SAASY,EAAEC,CAAC,EAAEZ,CAAC,EAAEiD,GAAGnD,EAAE,SAASG,CAAC,EAAEF,EAAE,SAASa,CAAC,EAAEZ,CAAC,CAAC,EAAEmD,GAAG,SAASrD,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEM,EAAER,EAAE,EAAEW,EAAEZ,EAAES,CAAC,EAAEI,EAAED,GAAG,EAAE,EAAEX,EAAE,EAAEW,EAAE,EAAE,IAAIE,EAAEF,GAAG,EAAEZ,EAAES,EAAE,CAAC,GAAG,EAAET,EAAES,EAAE,CAAC,GAAG,GAAGM,GAAGN,GAAG,GAAGK,EAAE,GAAGD,GAAG,EAAE,OAAOJ,GAAGT,EAAE,OAAO,QAAQC,EAAE,EAAEQ,EAAE,EAAEP,GAAGE,GAAGF,EAAEF,EAAES,CAAC,EAAER,EAAE,EAAEA,EAAE,GAAGa,CAAC,EAAEZ,GAAGE,GAAG,IAAIT,GAAEmB,CAAC,EAAEd,EAAES,CAAC,CAAC,GAAG,GAAG,EAAEM,EAAEf,EAAE,QAAQ,CAAC,GAAGa,GAAG,EAAE,OAAOZ,EAAE,EAAEc,EAAEb,GAAGA,EAAE,IAAIF,EAAE,SAASS,EAAEM,CAAC,EAAEd,EAAE,CAAC,EAAEA,EAAE,GAAGa,EAAEZ,GAAGH,GAAGC,EAAES,EAAEM,CAAC,EAAE,GAAGF,GAAG,EAAE,CAAC,IAAIG,EAAEhB,EAAES,CAAC,EAAEQ,EAAED,EAAE,EAAEE,EAAEF,GAAG,EAAE,EAAEG,EAAEH,GAAG,EAAEI,EAAE,EAAEC,EAAE,EAAEJ,EAAE,EAAEC,EAAE,EAAEC,GAAGnB,EAAE,EAAES,CAAC,GAAG,GAAGS,EAAE,GAAGlB,EAAE,EAAES,CAAC,GAAG,IAAIU,EAAEH,GAAG,GAAGK,EAAEH,EAAEA,EAAE,GAAGC,IAAInB,EAAE,EAAES,CAAC,EAAE,KAAK,EAAEW,EAAEpB,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,GAAGS,GAAG,GAAGC,GAAGnB,EAAE,EAAES,CAAC,GAAG,GAAGT,EAAE,EAAES,CAAC,EAAE,IAAI,GAAGW,EAAEpB,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,IAAIU,GAAGnB,EAAE,EAAES,CAAC,GAAG,GAAGT,EAAE,EAAES,CAAC,EAAE,KAAK,GAAGW,EAAEpB,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,KAAK,EAAEA,EAAE,IAAIa,EAAEpB,EAAEA,EAAE,SAASD,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,IAAIN,GAAEM,EAAE,CAAC,EAAEwB,EAAEH,EAAE,OAAOH,EAAE,GAAGF,GAAG,EAAEK,EAAE,IAAItB,EAAE,SAASS,EAAEA,GAAGU,CAAC,EAAEM,CAAC,UAAUR,GAAG,EAAEb,GAAGkB,EAAEtB,EAAES,GAAG,EAAEgB,CAAC,MAAM,CAAC,IAAIC,EAAGzB,EAAE,EAAE,GAAGgB,GAAG,EAAE,CAAC,IAAIU,EAAEe,GAAG1C,EAAES,CAAC,EAAEW,GAAGX,GAAGA,EAAEkB,EAAE,CAAC,GAAG1B,EAAE,EAAEyB,EAAGC,EAAE,CAAC,CAAC,MAAMD,GAAInB,GAAE,CAAC,GAAGc,EAAE+B,GAAGD,IAAInD,EAAE,SAASS,EAAEA,GAAGW,CAAC,EAAEE,EAAE,SAASG,CAAC,EAAEC,CAAE,CAAC,CAAC,IAAIE,EAAE5B,EAAES,GAAG,EAAE,GAAGmB,EAAE,CAACA,GAAG,IAAIA,GAAG5B,EAAES,GAAG,EAAET,EAAES,GAAG,GAAG,GAAG,MAAMmB,EAAE,MAAMA,EAAEA,EAAE,KAAK,EAAE5B,EAAES,GAAG,GAAG,IAAIoB,EAAG7B,EAAES,GAAG,EAAEoB,EAAG,GAAGtB,GAAE,CAAC,EAAE,QAAQuB,EAAE,CAACc,GAAGC,GAAGF,EAAE,EAAEZ,EAAE,EAAEA,EAAE,GAAG,EAAEA,EAAE,CAAC,IAAIC,GAAEH,IAAKE,GAAG,GAAG,EAAE,EAAE,GAAGC,IAAG,EAAE,CAAC,IAAIC,GAAE,IAAItC,GAAE,CAAC,EAAE,EAAEK,EAAES,GAAG,CAAC,CAAC,EAAEqB,EAAEC,CAAC,EAAE,CAAC,EAAEE,GAAE,SAAS,EAAE,CAAC,EAAE,EAAEA,GAAE,SAAS,EAAE,CAAC,EAAE,EAAE,IAAIrC,GAAGqC,GAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAMD,IAAG,GAAG7B,EAAEqB,GAAGxB,EAAES,EAAE,GAAGsB,EAAE,EAAE,EAAEtB,EAAEN,EAAE,CAAC,EAAE2B,EAAEC,CAAC,EAAE5B,EAAE,CAAC,GAAG6B,IAAG,IAAI/B,EAAE,GAAGM,GAAE,CAAC,EAAEuB,EAAEC,CAAC,EAAE9B,EAAE,EAAE8B,CAAC,EAAE,CAAC,IAAIG,GAAGjC,EAAE,EAAE6B,EAAEK,EAAED,GAAG,CAAC,EAAEE,EAAEF,GAAG,CAAC,EAAEG,GAAGH,GAAG,CAAC,EAAEI,GAAGtC,EAAEe,EAAE,CAAC,EAAEuB,IAAI/B,GAAE,CAAC,EAAE,IAAIgC,IAAGxB,GAAG,GAAG,EAAEQ,GAAGe,EAAE,EAAED,GAAG,EAAEG,EAAED,IAAG,EAAEE,GAAE,EAAEa,GAAItD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGF,GAAG,GAAG,EAAEG,GAAGD,IAAGH,EAAE,IAAI,EAAE,IAAImB,IAAIvD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGH,EAAE,GAAG,EAAEI,GAAGD,IAAGJ,EAAE,IAAI,EAAE,IAAIqB,IAAIxD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGJ,EAAE,GAAG,EAAE,IAAI,EAAEP,EAAE,EAAEA,GAAG,CAAC,IAAI6B,GAAGpB,GAAG,EAAEiB,CAAE,EAAEI,GAAGrB,GAAG,EAAEiB,CAAE,EAAEK,GAAGxB,EAAE,EAAEqB,EAAE,EAAEI,GAAGzB,EAAE,EAAEqB,EAAE,EAAEK,GAAGzB,EAAE,EAAEmB,EAAE,EAAEO,GAAG1B,EAAE,EAAEmB,EAAE,EAAEf,GAAGD,IAAGsB,KAAK,EAAE,IAAIE,GAAG,GAAGF,GAAGG,GAAGD,KAAK/D,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,EAAExC,EAAEwC,EAAE,CAAC,GAAG,GAAGxC,EAAEwC,EAAE,CAAC,GAAG,OAAOD,GAAE,GAAGwB,GAAG,GAAGvB,GAAGD,IAAGU,GAAGU,EAAE,IAAI,EAAE,IAAIM,GAAGf,GAAGS,EAAE,IAAI3D,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,EAAExC,EAAEwC,EAAE,CAAC,GAAG,MAAMD,GAAE,IAAI,GAAGU,GAAGU,EAAE,GAAG,GAAGnB,GAAGD,IAAGQ,GAAGU,EAAE,IAAI,EAAE,IAAIS,GAAGlB,GAAGS,EAAE,IAAIzD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,EAAExC,EAAEwC,EAAE,CAAC,GAAG,MAAMD,GAAE,IAAI,GAAGQ,GAAGU,EAAE,GAAG,GAAG,GAAGjB,GAAGD,IAAGmB,KAAK,EAAEJ,EAAGjB,GAAG,EAAEiB,CAAE,IAAItD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGmB,IAAI,GAAGlB,GAAGD,IAAGqB,KAAK,EAAEJ,GAAGrB,EAAE,EAAEqB,EAAE,IAAIxD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGqB,IAAI,GAAGpB,GAAGD,IAAGuB,KAAK,EAAEP,GAAGnB,EAAE,EAAEmB,EAAE,IAAIvD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGuB,IAAI,GAAGE,GAAG,EAAE/D,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAE+D,IAAI,MAAM,CAAC,IAAIG,GAAGH,IAAIE,IAAI,GAAGC,IAAIH,GAAGG,IAAI,EAAElE,EAAE,EAAE,CAAC,EAAE,EAAEA,EAAE,EAAEkE,EAAE,EAAEA,GAAG,IAAIlE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,GAAGA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAE+D,IAAIA,GAAG/D,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ8B,EAAE,EAAEA,EAAEmC,GAAG,EAAEnC,EAAET,EAAEmB,GAAEV,CAAC,EAAET,EAAEG,EAAEM,CAAC,EAAEU,IAAGyB,GAAGzC,GAAGyC,GAAG,IAAIE,GAAG3B,GAAEuB,GAAG,GAAGI,GAAG,EAAE,CAAC,IAAIC,GAAG,CAACD,GAAGE,GAAGrE,EAAE,EAAEmE,GAAGC,GAAGJ,KAAKI,GAAGJ,IAAI,QAAQlC,EAAE,EAAEA,EAAEsC,GAAG,EAAEtC,EAAET,EAAEmB,GAAEV,CAAC,EAAE9B,EAAE,EAAEqE,GAAGvC,CAAC,EAAEU,IAAG4B,GAAGJ,IAAII,GAAGD,GAAG,CAAC,CAAC,QAAQrC,EAAE,EAAEA,EAAEkC,GAAG,EAAElC,EAAET,EAAEmB,GAAEV,CAAC,EAAET,EAAE8C,GAAGrC,CAAC,EAAEU,IAAGwB,EAAE,CAAC,GAAGxB,IAAGhB,EAAE,KAAKA,EAAEH,EAAE,QAAQA,EAAEmB,IAAG,EAAEnB,EAAEG,GAAG,OAAOgB,GAAEnB,EAAE,OAAOpB,EAAED,EAAE,GAAGwC,GAAEnB,EAAEvB,GAAGuB,EAAE,EAAEmB,EAAC,CAAC,SAASvC,GAAG,GAAGD,EAAE,GAAGkB,EAAEM,EAAE,QAAQM,EAAE,EAAEA,EAAEZ,EAAE,EAAEY,EAAET,EAAES,CAAC,EAAET,EAAEG,EAAEM,CAAC,OAAON,IAAIH,EAAEvB,GAAGuB,EAAEG,CAAC,GAAG,OAAOxB,EAAE,EAAEc,EAAEO,CAAC,CAACf,GAAE,CAAC,CAAC,CAAC,EAAEgE,GAAG,SAASvE,EAAEC,EAAE,CAAC,GAAGD,EAAE,QAAQ,EAAE,OAAOA,EAAE,CAAC,EAAE,QAAQE,EAAE,IAAIP,GAAEM,CAAC,EAAEE,EAAE,EAAEM,EAAE,EAAEN,EAAEH,EAAE,OAAO,EAAEG,EAAE,CAAC,IAAIS,EAAEZ,EAAEG,CAAC,EAAED,EAAE,IAAIU,EAAEH,CAAC,EAAEA,GAAGG,EAAE,MAAM,CAAC,OAAOV,CAAC,EAAE,SAASsE,GAAGxE,EAAEC,EAAE,CAAC,QAAQC,EAAE,CAAC,EAAEC,EAAE,CAAC,CAACF,EAAEQ,EAAE,EAAEG,EAAE,EAAEZ,EAAE,QAAQ,CAAC,IAAIa,EAAEF,GAAGX,EAAEG,GAAGF,CAAC,EAAE,GAAG,OAAOY,GAAG,SAAS,CAAC,IAAIV,GAAGF,EAAE,KAAKY,EAAE,EAAE,QAAQA,EAAE,IAAIX,EAAE,KAAKD,EAAEY,EAAE,CAAC,EAAED,GAAGC,EAAE,KAAKX,EAAE,KAAKD,CAAC,EAAEY,EAAE,EAAE,GAAG,CAACA,EAAE,GAAG,CAAC,IAAIC,EAAEuC,GAAGrD,EAAEa,EAAEZ,CAAC,EAAEa,GAAGP,GAAE,CAAC,EAAEN,EAAEY,EAAE,EAAEA,EAAE,GAAGX,EAAE,KAAKY,CAAC,EAAEF,GAAGE,EAAE,OAAOT,GAAGQ,EAAE,EAAE,EAAEC,EAAE,MAAM,EAAED,EAAE,EAAE,IAAIC,EAAED,EAAE,EAAE,OAAOC,EAAE,MAAM,EAAE,CAACL,EAAEI,EAAE,EAAEA,EAAE,EAAE,CAAC,MAAMJ,EAAEI,EAAEb,EAAEA,EAAE,SAASS,CAAC,CAAC,CAAC,OAAO8D,GAAGrE,EAAEU,CAAC,CAAC,CAAC,IAAI6D,IAAI,IAAI,CAAC,IAAIzE,EAAE,OAAO,SAAS,IAAI,SAAS,eAAe,IAAI,OAAO,OAAO,SAASC,EAAE,CAAC,EAAE,CAAC,IAAIC,EAAEC,EAAEF,EAAEQ,EAAEG,EAAEC,EAAE,IAAI,QAAQ,CAAC6D,EAAEC,IAAI,CAAClE,EAAEiE,EAAE9D,EAAE+D,CAAC,CAAC,EAAE7D,EAAE,GAAGC,EAAE,OAAO,OAAO,CAAC,EAAEZ,CAAC,EAAEa,EAAE,iBAAiBC,EAAE,CAACyD,EAAEC,IAAI,CAAC,MAAMA,CAAC,EAAEzD,EAAE,GAAG,SAASC,EAAEuD,EAAE,CAAC,OAAOxD,EAAEwD,CAAC,CAAC,IAAItD,EAAEC,EAAEC,EAAE,QAAQ,IAAI,KAAK,OAAO,EAAEG,EAAE,QAAQ,MAAM,KAAK,OAAO,EAAE,OAAO,OAAOtB,EAAEY,CAAC,EAAEA,EAAE,KAAK,IAAIW,EAAGvB,EAAE,WAAWwB,EAAEC,EAAE,GAAGC,EAAG,SAASC,EAAE4C,EAAEC,EAAE,CAACD,GAAGR,GAAGS,CAAC,CAAC,CAAC,IAAI5C,EAAEC,GAAEC,GAAEC,GAAGC,EAAEC,EAAEC,GAAGC,GAAG,SAASC,IAAG,CAAC,IAAImC,EAAE/C,EAAE,OAAOxB,EAAE,MAAM4B,EAAE,IAAI,UAAU2C,CAAC,EAAEvE,EAAE,OAAO8B,GAAE,IAAI,WAAWyC,CAAC,EAAEvE,EAAE,OAAO6B,GAAE,IAAI,WAAW0C,CAAC,EAAEvE,EAAE,QAAQ+B,GAAG,IAAI,YAAYwC,CAAC,EAAEvE,EAAE,OAAOgC,EAAE,IAAI,WAAWuC,CAAC,EAAEvE,EAAE,QAAQiC,EAAE,IAAI,YAAYsC,CAAC,EAAEvE,EAAE,QAAQkC,GAAG,IAAI,aAAaqC,CAAC,EAAEvE,EAAE,QAAQmC,GAAG,IAAI,aAAaoC,CAAC,CAAC,CAAC,IAAIlC,EAAE,CAAC,EAAEC,GAAE,CAAC,EAAEa,EAAG,CAAC,EAAEC,GAAG,GAAG,SAASC,IAAI,CAACoB,GAAGpC,CAAC,CAAC,CAAC,SAASiB,IAAI,CAACF,GAAG,GAAG,CAACpD,EAAE,UAAU,CAAC0E,EAAE,aAAaA,EAAE,KAAK,EAAEA,EAAE,kBAAkB,GAAGC,GAAG,KAAK,EAAEF,GAAGnC,EAAC,CAAC,CAAC,SAASiB,IAAI,CAACkB,GAAGtB,CAAE,CAAC,CAAC,SAASK,GAAGe,EAAE,CAACjC,GAAE,QAAQiC,CAAC,CAAC,CAAC,IAAId,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGW,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASV,GAAGU,EAAE,CAACd,IAAI,CAAC,SAASK,GAAGS,EAAE,CAAC,GAAGd,KAAKA,IAAI,IAAIC,KAAK,OAAO,cAAcA,EAAE,EAAEA,GAAG,MAAMC,IAAI,CAAC,IAAIa,EAAEb,GAAGA,GAAG,KAAKa,EAAE,CAAC,CAAC,CAAC,SAAST,GAAGQ,EAAE,CAACA,EAAE,WAAWA,EAAE,IAAIjD,EAAEiD,CAAC,EAAE9C,EAAE,GAAG8C,GAAG,2CAA2C,IAAIC,EAAE,IAAI,YAAY,aAAaD,CAAC,EAAE,MAAM9D,EAAE+D,CAAC,EAAEA,CAAC,CAAC,IAAIR,GAAG,wCAAwCC,GAAGM,GAAGA,EAAE,WAAWP,EAAE,EAAEE,GAAGK,GAAGA,EAAE,WAAW,SAAS,EAAE,SAASJ,IAAI,CAAC,IAAII,EAAE,mBAAmB,OAAON,GAAGM,CAAC,EAAEA,EAAEvD,EAAEuD,CAAC,CAAC,CAAC,IAAIK,GAAG,SAASC,GAAGN,EAAE,CAAC,GAAGA,GAAGK,IAAIrD,EAAG,OAAO,IAAI,WAAWA,CAAE,EAAE,GAAGL,EAAE,OAAOA,EAAEqD,CAAC,EAAE,KAAK,iDAAiD,CAAC,SAASO,GAAGP,EAAE,CAAC,OAAOhD,EAAG,QAAQ,QAAQ,EAAE,KAAK,IAAIsD,GAAGN,CAAC,CAAC,EAAEtD,EAAEsD,CAAC,EAAE,KAAKC,GAAG,IAAI,WAAWA,CAAC,EAAE,IAAIK,GAAGN,CAAC,CAAC,CAAC,CAAC,SAASQ,GAAGR,EAAEC,EAAEQ,EAAE,CAAC,OAAOF,GAAGP,CAAC,EAAE,KAAKU,GAAG,YAAY,YAAYA,EAAET,CAAC,CAAC,EAAE,KAAKQ,EAAEC,GAAG,CAAC3D,EAAE,0CAA0C2D,CAAC,EAAE,EAAElB,GAAGkB,CAAC,CAAC,CAAC,CAAC,CAAC,SAASC,GAAGX,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,MAAM,CAACV,GAAG,OAAO,YAAY,sBAAsB,YAAY,CAACN,GAAGO,CAAC,GAAG,CAACN,GAAGM,CAAC,GAAG,OAAO,OAAO,WAAW,MAAMA,EAAE,CAAC,YAAY,aAAa,CAAC,EAAE,KAAKW,GAAG,CAAC,IAAIC,EAAE,YAAY,qBAAqBD,EAAEH,CAAC,EAAE,OAAOI,EAAE,KAAKH,EAAE,SAASI,EAAE,CAAC,OAAO/D,EAAE,kCAAkC+D,CAAC,EAAE,EAAE/D,EAAE,2CAA2C,EAAEyD,GAAGP,EAAEQ,EAAEC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEF,GAAGP,EAAEQ,EAAEC,CAAC,CAAC,CAAC,SAASK,IAAI,CAAC,MAAM,CAAC,EAAEC,EAAE,CAAC,CAAC,SAASC,IAAI,CAAC,SAASjB,EAAEU,EAAEE,EAAE,CAAC,OAAOM,GAAER,EAAE,QAAQzD,EAAEiE,GAAE,EAAErD,GAAE,EAAEoB,GAAGiC,GAAE,CAAC,EAAE3B,GAAG,kBAAkB,EAAE2B,EAAC,CAAC5B,GAAG,kBAAkB,EAAE,SAASW,EAAES,EAAE,CAACV,EAAEU,EAAE,QAAQ,CAAC,CAAC,IAAID,EAAEM,GAAG,EAAE,OAAOV,KAAKT,GAAG,EAAEe,GAAG3D,EAAGqD,GAAGI,EAAER,CAAC,EAAE,MAAM/D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAIiF,GAAEC,GAAEC,GAAG,CAAC,OAAO,CAACrB,EAAEC,IAAI,CAAC,IAAIQ,EAAEa,GAAGtB,CAAC,EAAEU,EAAEY,GAAGrB,CAAC,EAAEE,EAAE,WAAW,IAAIoB,GAAE,QAAQd,CAAC,CAAC,EAAEN,EAAE,UAAUoB,GAAE,KAAK,IAAId,CAAC,EAAEC,CAAC,CAAC,CAAC,EAAE,MAAMc,EAAE,CAAC,KAAK,aAAa,YAAYvB,EAAE,CAAC,KAAK,QAAQ,gCAAgCA,CAAC,IAAI,KAAK,OAAOA,CAAC,CAAC,CAAC,IAAIC,GAAGF,GAAG,CAAC,KAAKA,EAAE,OAAO,GAAGA,EAAE,MAAM,EAAEvE,CAAC,CAAC,EAAE,MAAMgG,EAAE,CAAC,YAAYxB,EAAE,CAAC,KAAK,OAAOA,EAAE,KAAK,IAAIA,EAAE,EAAE,CAAC,SAASA,EAAE,CAACvC,EAAE,KAAK,IAAI,GAAG,CAAC,EAAEuC,CAAC,CAAC,UAAU,CAAC,OAAOvC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,eAAeuC,EAAE,CAACvC,EAAE,KAAK,IAAI,GAAG,CAAC,EAAEuC,CAAC,CAAC,gBAAgB,CAAC,OAAOvC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,WAAWuC,EAAE,CAACA,EAAEA,EAAE,EAAE,EAAE5C,EAAE,KAAK,IAAI,EAAE,EAAE4C,CAAC,CAAC,YAAY,CAAC,OAAO5C,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,aAAa4C,EAAE,CAACA,EAAEA,EAAE,EAAE,EAAE5C,EAAE,KAAK,IAAI,EAAE,EAAE4C,CAAC,CAAC,cAAc,CAAC,OAAO5C,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK4C,EAAEQ,EAAE,CAAC,KAAK,iBAAiB,CAAC,EAAE,KAAK,SAASR,CAAC,EAAE,KAAK,eAAeQ,CAAC,CAAC,CAAC,iBAAiBR,EAAE,CAACvC,EAAE,KAAK,IAAI,IAAI,CAAC,EAAEuC,CAAC,CAAC,kBAAkB,CAAC,OAAOvC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAIgE,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC5B,EAAEC,EAAEQ,IAAI,CAAC,IAAIC,EAAE,IAAIe,GAAGzB,CAAC,EAAE,MAAMU,EAAE,KAAKT,EAAEQ,CAAC,EAAEiB,GAAG1B,EAAE2B,KAAKD,EAAE,EAAEH,GAAE,CAAC,MAAMvB,GAAGA,EAAE,OAAO,CAAC,IAAI,IAAI,UAAUA,GAAG,CAAC,IAAIC,EAAE,gEAAgE,OAAOA,EAAE,KAAKD,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAACA,EAAEC,IAAI,CAAC,QAAQQ,EAAE,EAAEC,EAAEV,EAAE,OAAO,EAAEU,GAAG,EAAEA,IAAI,CAAC,IAAIE,EAAEZ,EAAEU,CAAC,EAAEE,IAAI,IAAIZ,EAAE,OAAOU,EAAE,CAAC,EAAEE,IAAI,MAAMZ,EAAE,OAAOU,EAAE,CAAC,EAAED,KAAKA,IAAIT,EAAE,OAAOU,EAAE,CAAC,EAAED,IAAI,CAAC,GAAGR,EAAE,KAAKQ,EAAEA,IAAIT,EAAE,QAAQ,IAAI,EAAE,OAAOA,CAAC,EAAE,UAAUA,GAAG,CAAC,IAAIC,EAAEsB,GAAE,MAAMvB,CAAC,EAAES,EAAET,EAAE,OAAO,EAAE,IAAI,IAAI,OAAOA,EAAEuB,GAAE,eAAevB,EAAE,MAAM,GAAG,EAAE,OAAOU,GAAG,CAAC,CAACA,CAAC,EAAE,CAACT,CAAC,EAAE,KAAK,GAAG,EAAE,CAACD,GAAG,CAACC,IAAID,EAAE,KAAKA,GAAGS,IAAIT,GAAG,MAAMC,EAAE,IAAI,IAAID,CAAC,EAAE,QAAQA,GAAG,CAAC,IAAIC,EAAEsB,GAAE,UAAUvB,CAAC,EAAES,EAAER,EAAE,CAAC,EAAES,EAAET,EAAE,CAAC,EAAE,MAAM,CAACQ,GAAG,CAACC,EAAE,KAAKA,IAAIA,EAAEA,EAAE,OAAO,EAAEA,EAAE,OAAO,CAAC,GAAGD,EAAEC,EAAE,EAAE,SAASV,GAAG,CAAC,GAAGA,IAAI,IAAI,MAAM,IAAIA,EAAEuB,GAAE,UAAUvB,CAAC,EAAEA,EAAEA,EAAE,QAAQ,MAAM,EAAE,EAAE,IAAIC,EAAED,EAAE,YAAY,GAAG,EAAE,OAAOC,IAAI,GAAGD,EAAEA,EAAE,OAAOC,EAAE,CAAC,CAAC,EAAE,KAAK,IAAID,IAAIuB,GAAE,UAAUvB,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAACA,EAAEC,IAAIsB,GAAE,UAAUvB,EAAE,IAAIC,CAAC,CAAC,EAAE4B,GAAG,IAAI,CAAC,GAAG,OAAO,QAAQ,UAAU,OAAO,OAAO,iBAAiB,WAAW,OAAO7B,GAAG,OAAO,gBAAgBA,CAAC,EAAER,GAAG,kBAAkB,CAAC,EAAEsC,GAAG9B,IAAI8B,GAAGD,GAAG,GAAG7B,CAAC,EAAE+B,GAAG,CAAC,QAAQ,IAAI/B,IAAI,CAAC,QAAQC,EAAE,GAAGQ,EAAE,GAAGC,EAAEV,EAAE,OAAO,EAAEU,GAAG,IAAI,CAACD,EAAEC,IAAI,CAAC,IAAIE,EAAEF,GAAG,EAAEV,EAAEU,CAAC,EAAEP,EAAE,IAAI,EAAE,GAAG,OAAOS,GAAG,SAAS,MAAM,IAAI,UAAU,2CAA2C,EAAE,GAAG,CAACA,EAAE,MAAM,GAAGX,EAAEW,EAAE,IAAIX,EAAEQ,EAAEc,GAAE,MAAMX,CAAC,CAAC,CAAC,OAAOX,EAAEsB,GAAE,eAAetB,EAAE,MAAM,GAAG,EAAE,OAAOY,GAAG,CAAC,CAACA,CAAC,EAAE,CAACJ,CAAC,EAAE,KAAK,GAAG,GAAGA,EAAE,IAAI,IAAIR,GAAG,GAAG,EAAE,SAAS,CAACD,EAAEC,IAAI,CAACD,EAAE+B,GAAG,QAAQ/B,CAAC,EAAE,OAAO,CAAC,EAAEC,EAAE8B,GAAG,QAAQ9B,CAAC,EAAE,OAAO,CAAC,EAAE,SAASQ,EAAEuB,EAAE,CAAC,QAAQC,GAAE,EAAEA,GAAED,EAAE,QAAQA,EAAEC,EAAC,IAAI,GAAGA,KAAI,CAAC,QAAQC,GAAEF,EAAE,OAAO,EAAEE,IAAG,GAAGF,EAAEE,EAAC,IAAI,GAAGA,KAAI,CAAC,OAAOD,GAAEC,GAAE,CAAC,EAAEF,EAAE,MAAMC,GAAEC,GAAED,GAAE,CAAC,CAAC,CAAC,QAAQvB,EAAED,EAAET,EAAE,MAAM,GAAG,CAAC,EAAEY,EAAEH,EAAER,EAAE,MAAM,GAAG,CAAC,EAAEY,EAAE,KAAK,IAAIH,EAAE,OAAOE,EAAE,MAAM,EAAEE,EAAED,EAAEsB,EAAE,EAAEA,EAAEtB,EAAEsB,IAAI,GAAGzB,EAAEyB,CAAC,IAAIvB,EAAEuB,CAAC,EAAE,CAACrB,EAAEqB,EAAE,KAAK,CAAC,QAAQC,EAAE,CAAC,EAAED,EAAErB,EAAEqB,EAAEzB,EAAE,OAAOyB,IAAIC,EAAE,KAAK,IAAI,EAAE,OAAOA,EAAEA,EAAE,OAAOxB,EAAE,MAAME,CAAC,CAAC,EAAEsB,EAAE,KAAK,GAAG,CAAC,CAAC,EAAEC,GAAG,OAAO,YAAY,IAAI,IAAI,YAAY,OAAOC,GAAG,CAACtC,EAAEC,EAAE,EAAEQ,EAAE,MAAM,CAAC,QAAQC,EAAET,EAAEQ,EAAEG,EAAEX,EAAED,EAAEY,CAAC,GAAG,EAAEA,GAAGF,IAAI,EAAEE,EAAE,GAAGA,EAAEX,EAAE,IAAID,EAAE,QAAQqC,GAAG,OAAOA,GAAG,OAAOrC,EAAE,SAASC,EAAEW,CAAC,CAAC,EAAE,QAAQC,EAAE,GAAGZ,EAAEW,GAAG,CAAC,IAAIE,EAAEd,EAAEC,GAAG,EAAE,GAAG,EAAEa,EAAE,KAAK,CAACD,GAAG,OAAO,aAAaC,CAAC,EAAE,QAAQ,CAAC,IAAIqB,EAAEnC,EAAEC,GAAG,EAAE,GAAG,IAAIa,EAAE,MAAM,IAAI,CAACD,GAAG,OAAO,cAAcC,EAAE,KAAK,EAAEqB,CAAC,EAAE,QAAQ,CAAC,IAAIC,EAAEpC,EAAEC,GAAG,EAAE,GAAG,IAAIa,EAAE,MAAM,IAAIA,GAAGA,EAAE,KAAK,GAAGqB,GAAG,EAAEC,EAAEtB,GAAGA,EAAE,IAAI,GAAGqB,GAAG,GAAGC,GAAG,EAAEpC,EAAEC,GAAG,EAAE,GAAGa,EAAE,MAAMD,GAAG,OAAO,aAAaC,CAAC,MAAM,CAAC,IAAIkB,EAAElB,EAAE,MAAMD,GAAG,OAAO,aAAa,MAAMmB,GAAG,GAAG,MAAMA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAOnB,CAAC,EAAE0B,GAAG,CAAC,EAAEC,GAAGxC,GAAG,CAAC,QAAQC,EAAE,EAAEQ,EAAE,EAAEA,EAAET,EAAE,OAAO,EAAES,EAAE,CAAC,IAAIC,EAAEV,EAAE,WAAWS,CAAC,EAAEC,GAAG,IAAIT,IAAIS,GAAG,KAAKT,GAAG,EAAES,GAAG,OAAOA,GAAG,OAAOT,GAAG,EAAE,EAAEQ,GAAGR,GAAG,CAAC,CAAC,OAAOA,CAAC,EAAEwC,GAAG,CAACzC,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,GAAG,EAAEA,EAAE,GAAG,MAAO,GAAE,QAAQE,EAAEH,EAAEI,EAAEJ,EAAEC,EAAE,EAAEI,EAAE,EAAEA,EAAEd,EAAE,OAAO,EAAEc,EAAE,CAAC,IAAIqB,EAAEnC,EAAE,WAAWc,CAAC,EAAE,GAAGqB,GAAG,OAAOA,GAAG,MAAM,CAAC,IAAIC,EAAEpC,EAAE,WAAW,EAAEc,CAAC,EAAEqB,EAAE,QAAQA,EAAE,OAAO,IAAIC,EAAE,IAAI,CAAC,GAAGD,GAAG,IAAI,CAAC,GAAG1B,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE0B,CAAC,SAASA,GAAG,KAAK,CAAC,GAAG1B,EAAE,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,EAAElC,EAAEQ,GAAG,EAAE,IAAI0B,EAAE,EAAE,SAASA,GAAG,MAAM,CAAC,GAAG1B,EAAE,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,EAAE,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,EAAE,EAAE,KAAK,CAAC,GAAG1B,EAAE,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,GAAG,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,EAAE,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,EAAE,EAAE,CAAC,CAAC,OAAOlC,EAAEQ,CAAC,EAAE,EAAEA,EAAEG,CAAC,EAAE,SAAS8B,GAAG1C,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAED,EAAE,EAAEA,EAAE+B,GAAGxC,CAAC,EAAE,EAAEY,EAAE,IAAI,MAAMF,CAAC,EAAEG,EAAE4B,GAAGzC,EAAEY,EAAE,EAAEA,EAAE,MAAM,EAAE,OAAOX,IAAIW,EAAE,OAAOC,GAAGD,CAAC,CAAC,IAAI+B,GAAG,IAAI,CAAC,GAAG,CAACJ,GAAG,OAAO,CAAC,IAAIvC,EAAE,KAAK,GAAG,CAACA,EAAE,OAAO,KAAKuC,GAAGG,GAAG1C,EAAE,EAAE,CAAC,CAAC,OAAOuC,GAAG,MAAM,CAAC,EAAEnC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE,SAASJ,EAAEC,EAAE,CAACG,GAAG,KAAKJ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,IAAIC,CAAC,EAAEE,EAAE,eAAeH,EAAEI,GAAG,UAAU,CAAC,EAAE,WAAW,CAAC,KAAKJ,EAAE,CAAC,IAAIC,EAAEG,GAAG,KAAKJ,EAAE,KAAK,IAAI,EAAE,GAAG,CAACC,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAEH,EAAE,IAAIC,EAAED,EAAE,SAAS,EAAE,EAAE,MAAMA,EAAE,CAACA,EAAE,IAAI,IAAI,MAAMA,EAAE,GAAG,CAAC,EAAE,MAAMA,EAAE,CAACA,EAAE,IAAI,IAAI,MAAMA,EAAE,GAAG,CAAC,EAAE,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACZ,EAAE,KAAK,CAACA,EAAE,IAAI,IAAI,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,QAAQU,EAAE,EAAEC,EAAE,EAAEA,EAAEJ,EAAEI,IAAI,CAAC,IAAIqB,EAAE,GAAG,CAACA,EAAEnC,EAAE,IAAI,IAAI,SAASA,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,CAAC,GAAGgC,IAAI,QAAQtB,IAAI,EAAE,MAAM,IAAIV,EAAE,WAAW,CAAC,EAAE,GAAGgC,GAAG,KAAK,MAAMtB,IAAIZ,EAAEQ,EAAEK,CAAC,EAAEqB,CAAC,CAAC,OAAOtB,IAAIb,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGa,CAAC,EAAE,MAAMb,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACZ,EAAE,KAAK,CAACA,EAAE,IAAI,IAAI,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQU,EAAE,EAAEA,EAAEH,EAAEG,IAAIb,EAAE,IAAI,IAAI,SAASA,EAAE,IAAIC,EAAEQ,EAAEI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAIV,EAAE,WAAW,EAAE,CAAC,CAAC,OAAOO,IAAIV,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGa,CAAC,CAAC,EAAE,gBAAgB,CAAC,SAASb,EAAE,CAAC,OAAO2C,GAAG,CAAC,EAAE,SAAS3C,EAAEC,EAAE,CAACA,IAAI,MAAMA,IAAI,IAAIrD,EAAE0F,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,GAAGC,GAAG,GAAGD,EAAE,OAAO,KAAKC,CAAC,CAAC,EAAE,MAAMD,EAAE,CAACA,EAAE,QAAQA,EAAE,OAAO,OAAO,IAAIpD,EAAE0F,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,EAAE,aAAaA,EAAE,CAAC,MAAM,CAAC,QAAQ,MAAM,QAAQ,EAAE,QAAQ,IAAI,QAAQ,MAAM,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,aAAaA,EAAEC,EAAEQ,EAAE,CAAC,MAAO,EAAC,EAAE,iBAAiBT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,SAASA,EAAEC,EAAE,CAACA,IAAI,MAAMA,IAAI,IAAIlD,EAAEuF,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,GAAGC,GAAG,GAAGD,EAAE,OAAO,KAAKC,CAAC,CAAC,EAAE,MAAMD,EAAE,CAACA,EAAE,QAAQA,EAAE,OAAO,OAAO,IAAIjD,EAAEuF,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE4C,GAAG,CAAC5C,EAAEC,IAAI,CAAC3C,GAAE,KAAK,EAAE0C,EAAEA,EAAEC,CAAC,CAAC,EAAE4C,GAAG,CAAC7C,EAAEC,IAAI,KAAK,KAAKD,EAAEC,CAAC,EAAEA,EAAE6C,GAAG9C,GAAG,CAACA,EAAE6C,GAAG7C,EAAE,KAAK,EAAE,IAAIC,EAAE8C,GAAG,MAAM/C,CAAC,EAAE,OAAOC,GAAG2C,GAAG3C,EAAED,CAAC,EAAEC,CAAC,EAAE+C,EAAE,CAAC,UAAU,KAAK,MAAMhD,EAAE,CAAC,OAAOgD,EAAE,WAAW,KAAK,IAAI,MAAM,CAAC,CAAC,EAAE,WAAWhD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAGP,EAAE,SAASM,CAAC,GAAGN,EAAE,OAAOM,CAAC,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE6C,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,QAAQ,OAAOA,EAAE,SAAS,OAAO,MAAMA,EAAE,SAAS,MAAM,OAAOA,EAAE,SAAS,OAAO,OAAOA,EAAE,SAAS,OAAO,MAAMA,EAAE,SAAS,MAAM,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,OAAO,EAAE,OAAO,CAAC,OAAOA,EAAE,WAAW,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,OAAO,EAAE,OAAO,CAAC,OAAOA,EAAE,WAAW,OAAO,KAAKA,EAAE,WAAW,KAAK,MAAMA,EAAE,WAAW,MAAM,SAASA,EAAE,WAAW,SAAS,KAAKA,EAAE,WAAW,KAAK,MAAMA,EAAE,WAAW,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,QAAQ,SAASA,EAAE,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,OAAO,EAAE,OAAO7C,EAAE,iBAAiB,CAAC,EAAE,IAAIS,EAAET,EAAE,WAAWH,EAAEC,EAAEQ,EAAEC,CAAC,EAAE,OAAOP,EAAE,MAAMS,EAAE,IAAI,GAAGA,EAAE,SAASoC,EAAE,UAAU,IAAI,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,IAAI,OAAOpC,EAAE,SAAS,CAAC,GAAGT,EAAE,OAAOS,EAAE,IAAI,GAAGA,EAAE,SAASoC,EAAE,UAAU,KAAK,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,KAAK,OAAOpC,EAAE,UAAU,EAAEA,EAAE,SAAS,MAAMT,EAAE,OAAOS,EAAE,IAAI,GAAGA,EAAE,SAASoC,EAAE,UAAU,KAAK,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,KAAK,QAAQ7C,EAAE,SAASS,EAAE,IAAI,IAAIA,EAAE,SAASoC,EAAE,UAAU,OAAO,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,OAAO,QAAQpC,EAAE,UAAU,KAAK,IAAI,EAAEZ,IAAIA,EAAE,SAASC,CAAC,EAAEW,EAAEZ,EAAE,UAAUY,EAAE,WAAWA,CAAC,EAAE,wBAAwBZ,EAAE,CAAC,OAAOA,EAAE,SAASA,EAAE,SAAS,SAASA,EAAE,SAAS,SAAS,EAAEA,EAAE,SAAS,EAAE,IAAI,WAAWA,EAAE,QAAQ,EAAE,IAAI,WAAW,CAAC,CAAC,EAAE,kBAAkBA,EAAEC,EAAE,CAAC,IAAIQ,EAAET,EAAE,SAASA,EAAE,SAAS,OAAO,EAAE,GAAG,EAAES,GAAGR,GAAG,CAAC,IAAIS,EAAE,QAAUT,EAAE,KAAK,IAAIA,EAAEQ,GAAGA,EAAEC,EAAE,EAAE,SAAS,CAAC,EAAED,GAAG,IAAIR,EAAE,KAAK,IAAIA,EAAE,GAAG,GAAG,IAAIW,EAAEZ,EAAE,SAASA,EAAE,SAAS,IAAI,WAAWC,CAAC,EAAED,EAAE,UAAU,GAAGA,EAAE,SAAS,IAAIY,EAAE,SAAS,EAAEZ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkBA,EAAEC,EAAE,CAAC,GAAGD,EAAE,WAAWC,EAAE,GAAGA,GAAG,EAAED,EAAE,SAAS,KAAKA,EAAE,UAAU,MAAM,CAAC,IAAIS,EAAET,EAAE,SAASA,EAAE,SAAS,IAAI,WAAWC,CAAC,EAAEQ,GAAGT,EAAE,SAAS,IAAIS,EAAE,SAAS,EAAE,KAAK,IAAIR,EAAED,EAAE,SAAS,CAAC,CAAC,EAAEA,EAAE,UAAUC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQD,EAAE,CAAC,IAAIC,EAAE,CAAC,EAAE,OAAOA,EAAE,IAAIE,EAAE,SAASH,EAAE,IAAI,EAAEA,EAAE,GAAG,EAAEC,EAAE,IAAID,EAAE,GAAGC,EAAE,KAAKD,EAAE,KAAKC,EAAE,MAAM,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,KAAKD,EAAE,KAAKG,EAAE,MAAMH,EAAE,IAAI,EAAEC,EAAE,KAAK,KAAKE,EAAE,OAAOH,EAAE,IAAI,EAAEC,EAAE,KAAKD,EAAE,UAAUG,EAAE,OAAOH,EAAE,IAAI,EAAEC,EAAE,KAAKD,EAAE,KAAK,OAAOC,EAAE,KAAK,EAAEA,EAAE,MAAM,IAAI,KAAKD,EAAE,SAAS,EAAEC,EAAE,MAAM,IAAI,KAAKD,EAAE,SAAS,EAAEC,EAAE,MAAM,IAAI,KAAKD,EAAE,SAAS,EAAEC,EAAE,QAAQ,KAAKA,EAAE,OAAO,KAAK,KAAKA,EAAE,KAAKA,EAAE,OAAO,EAAEA,CAAC,EAAE,QAAQD,EAAEC,EAAE,CAACA,EAAE,OAAO,SAASD,EAAE,KAAKC,EAAE,MAAMA,EAAE,YAAY,SAASD,EAAE,UAAUC,EAAE,WAAWA,EAAE,OAAO,QAAQ+C,EAAE,kBAAkBhD,EAAEC,EAAE,IAAI,CAAC,EAAE,OAAOD,EAAEC,EAAE,CAAC,MAAM+C,EAAE,iBAAiB,EAAE,MAAMhD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,OAAOsC,EAAE,WAAWhD,EAAEC,EAAEQ,EAAEC,CAAC,CAAC,EAAE,OAAOV,EAAEC,EAAEQ,EAAE,CAAC,GAAGN,EAAE,MAAMH,EAAE,IAAI,EAAE,CAAC,IAAIU,EAAE,GAAG,CAACA,EAAEP,EAAE,WAAWF,EAAEQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAGC,EAAE,QAAQE,KAAKF,EAAE,SAAS,MAAM,IAAIP,EAAE,WAAW,EAAE,CAAC,CAAC,OAAOH,EAAE,OAAO,SAASA,EAAE,IAAI,EAAEA,EAAE,OAAO,UAAU,KAAK,IAAI,EAAEA,EAAE,KAAKS,EAAER,EAAE,SAASQ,CAAC,EAAET,EAAEC,EAAE,UAAUD,EAAE,OAAO,SAAS,EAAE,OAAOA,EAAEC,EAAE,CAAC,OAAOD,EAAE,SAASC,CAAC,EAAED,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,MAAMA,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAEC,CAAC,EAAE,QAAQS,KAAKD,EAAE,SAAS,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,SAASC,CAAC,EAAED,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,QAAQA,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAI,IAAI,EAAE,QAAQQ,KAAK,OAAO,KAAKT,EAAE,QAAQ,EAAEC,EAAE,KAAKQ,CAAC,EAAE,OAAOR,CAAC,EAAE,QAAQD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEsC,EAAE,WAAWhD,EAAEC,EAAE,MAAM,CAAC,EAAE,OAAOS,EAAE,KAAKD,EAAEC,CAAC,EAAE,SAASV,EAAE,CAAC,GAAG,CAACG,EAAE,OAAOH,EAAE,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEb,EAAE,KAAK,SAAS,GAAGY,GAAGZ,EAAE,KAAK,UAAU,MAAO,GAAE,IAAIc,EAAE,KAAK,IAAId,EAAE,KAAK,UAAUY,EAAEF,CAAC,EAAE,GAAGI,EAAE,GAAGD,EAAE,SAASZ,EAAE,IAAIY,EAAE,SAASD,EAAEA,EAAEE,CAAC,EAAEL,CAAC,MAAO,SAAQ0B,EAAE,EAAEA,EAAErB,EAAEqB,IAAIlC,EAAEQ,EAAE0B,CAAC,EAAEtB,EAAED,EAAEuB,CAAC,EAAE,OAAOrB,CAAC,EAAE,MAAMd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAE,CAAC,GAAGZ,EAAE,SAAS5C,EAAE,SAASwD,EAAE,IAAI,CAACH,EAAE,MAAO,GAAE,IAAII,EAAEd,EAAE,KAAK,GAAGc,EAAE,UAAU,KAAK,IAAI,EAAEb,EAAE,WAAW,CAACa,EAAE,UAAUA,EAAE,SAAS,UAAU,CAAC,GAAGD,EAAE,OAAOC,EAAE,SAASb,EAAE,SAASQ,EAAEA,EAAEC,CAAC,EAAEI,EAAE,UAAUJ,EAAEA,EAAE,GAAGI,EAAE,YAAY,GAAGF,IAAI,EAAE,OAAOE,EAAE,SAASb,EAAE,MAAMQ,EAAEA,EAAEC,CAAC,EAAEI,EAAE,UAAUJ,EAAEA,EAAE,GAAGE,EAAEF,GAAGI,EAAE,UAAU,OAAOA,EAAE,SAAS,IAAIb,EAAE,SAASQ,EAAEA,EAAEC,CAAC,EAAEE,CAAC,EAAEF,CAAC,CAAC,GAAGsC,EAAE,kBAAkBlC,EAAEF,EAAEF,CAAC,EAAEI,EAAE,SAAS,UAAUb,EAAE,SAASa,EAAE,SAAS,IAAIb,EAAE,SAASQ,EAAEA,EAAEC,CAAC,EAAEE,CAAC,MAAO,SAAQuB,EAAE,EAAEA,EAAEzB,EAAEyB,IAAIrB,EAAE,SAASF,EAAEuB,CAAC,EAAElC,EAAEQ,EAAE0B,CAAC,EAAE,OAAOrB,EAAE,UAAU,KAAK,IAAIA,EAAE,UAAUF,EAAEF,CAAC,EAAEA,CAAC,EAAE,OAAOV,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAET,EAAE,GAAGQ,IAAI,EAAEC,GAAGV,EAAE,SAASS,IAAI,GAAGN,EAAE,OAAOH,EAAE,KAAK,IAAI,IAAIU,GAAGV,EAAE,KAAK,WAAWU,EAAE,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,OAAOO,CAAC,EAAE,SAASV,EAAEC,EAAEQ,EAAE,CAACuC,EAAE,kBAAkBhD,EAAE,KAAKC,EAAEQ,CAAC,EAAET,EAAE,KAAK,UAAU,KAAK,IAAIA,EAAE,KAAK,UAAUC,EAAEQ,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACT,EAAE,OAAOH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIU,EAAEC,EAAEqB,EAAEnC,EAAE,KAAK,SAAS,GAAG,EAAEY,EAAE,IAAIuB,GAAGA,EAAE,SAAS9E,EAAE,OAAOyD,EAAE,GAAGD,EAAEsB,EAAE,eAAe,CAAC,GAAGrB,EAAE,GAAGD,EAAEiC,GAAG7C,CAAC,EAAE,CAACY,EAAE,MAAM,IAAIV,EAAE,WAAW,EAAE,EAAEgC,KAAK1B,EAAE,GAAGA,EAAER,EAAEkC,EAAE,UAAUA,EAAE,SAASA,EAAEA,EAAE,SAAS1B,EAAEA,EAAER,CAAC,EAAEkC,EAAE,MAAM,UAAU,MAAM,KAAKA,EAAE1B,EAAEA,EAAER,CAAC,GAAG5C,EAAE,IAAI8E,EAAEtB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAIA,EAAE,UAAUC,CAAC,CAAC,EAAE,MAAMd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,OAAOoC,EAAE,WAAW,MAAMhD,EAAEC,EAAE,EAAES,EAAED,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAEwC,GAAG,CAACjD,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,IAAIE,EAAEF,EAAE,GAAG,MAAMV,CAAC,GAAGtD,EAAEsD,CAAC,EAAE,KAAKa,GAAG,CAACZ,EAAE,IAAI,WAAWY,CAAC,CAAC,EAAED,GAAGrB,GAAGqB,CAAC,CAAC,EAAEC,GAAG,CAAC,GAAGJ,EAAEA,EAAE,MAAO,MAAK,sBAAsBT,CAAC,WAAW,CAAC,EAAEY,GAAGtB,GAAGsB,CAAC,CAAC,EAAEsC,GAAG,CAAClD,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,IAAI,CAACV,EAAE,eAAeH,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,CAAC,CAAC,EAAEsC,GAAG,CAAC,EAAEC,GAAG,CAACpD,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,KAAK,EAAE,IAAIE,EAAE,GAAG,OAAOuC,GAAG,QAAQtC,GAAG,CAACD,GAAGC,EAAE,UAAUZ,CAAC,IAAIY,EAAE,OAAOb,EAAEC,EAAEQ,EAAEC,CAAC,EAAEE,EAAE,GAAG,CAAC,EAAEA,CAAC,EAAEyC,GAAG,CAACrD,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAEC,EAAEqB,EAAEC,EAAEJ,IAAI,CAAC,IAAIC,GAAEhC,EAAE8B,GAAG,QAAQR,GAAE,MAAMvB,EAAEC,CAAC,CAAC,EAAED,EAAEkC,GAAE,MAAMD,EAAC,GAAG,SAASqB,GAAEC,EAAE,CAAC,SAASC,GAAEC,GAAG,CAACzB,IAAI,EAAEG,GAAGe,GAAGlD,EAAEC,EAAEwD,GAAG/C,EAAEE,EAAEwB,CAAC,EAAEvB,IAAI,EAAEtB,GAAG2C,EAAC,CAAC,CAACkB,GAAGG,EAAEtB,GAAEuB,GAAE,IAAI,CAAC1C,IAAI,EAAEvB,GAAG2C,EAAC,CAAC,CAAC,GAAGsB,GAAED,CAAC,CAAC,CAACjE,GAAG4C,EAAC,EAAE,OAAOzB,GAAG,SAASwC,GAAGxC,EAAE6C,GAAExC,CAAC,EAAEwC,GAAE7C,CAAC,CAAC,EAAEiD,GAAG1D,GAAG,CAAC,IAAIC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,KAAK,IAAI,EAAE,KAAK,KAAK,IAAI,EAAEQ,EAAER,EAAED,CAAC,EAAE,GAAG,OAAOS,EAAE,IAAI,MAAM,IAAI,MAAM,2BAA2BT,CAAC,EAAE,EAAE,OAAOS,CAAC,EAAEkD,GAAG,CAAC3D,EAAEC,IAAI,CAAC,IAAIQ,EAAE,EAAE,OAAOT,IAAIS,GAAG,KAAKR,IAAIQ,GAAG,KAAKA,CAAC,EAAEN,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,KAAK,YAAY,IAAI,YAAY,GAAG,kBAAkB,GAAG,WAAW,KAAK,CAAC,KAAK,aAAa,YAAYH,EAAE,CAAC,KAAK,MAAMA,CAAC,CAAC,EAAE,YAAY,KAAK,eAAe,EAAE,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,OAAOA,EAAE,CAAC,KAAK,KAAKA,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,KAAK,CAAC,IAAI,MAAMA,EAAE,CAAC,KAAK,OAAO,MAAMA,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,QAAQ,CAAC,IAAI,SAASA,EAAE,CAAC,KAAK,OAAO,SAASA,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,YAAYA,EAAEC,EAAEQ,EAAEC,EAAE,CAACV,IAAIA,EAAE,MAAM,KAAK,OAAOA,EAAE,KAAK,MAAMA,EAAE,MAAM,KAAK,GAAGG,EAAE,YAAY,KAAK,KAAKF,EAAE,KAAK,KAAKQ,EAAE,KAAK,KAAKC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,KAAK,YAAY,KAAK,QAAQ,CAAC,IAAI,KAAKV,EAAE,CAACA,EAAE,KAAK,MAAM,KAAK,SAAS,KAAK,MAAM,CAAC,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,KAAK,aAAa,KAAK,SAAS,CAAC,IAAI,MAAMA,EAAE,CAACA,EAAE,KAAK,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,OAAOG,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,EAAE,WAAWH,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAGD,EAAE+B,GAAG,QAAQ/B,CAAC,EAAE,CAACA,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,IAAIS,EAAE,CAAC,aAAa,GAAG,cAAc,CAAC,EAAE,GAAGR,EAAE,OAAO,OAAOQ,EAAER,CAAC,EAAEA,EAAE,cAAc,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,QAAQO,EAAEV,EAAE,MAAM,GAAG,EAAE,OAAOkC,IAAG,CAAC,CAACA,EAAC,EAAEtB,EAAET,EAAE,KAAKU,EAAE,IAAIC,EAAE,EAAEA,EAAEJ,EAAE,OAAOI,IAAI,CAAC,IAAIqB,EAAErB,IAAIJ,EAAE,OAAO,EAAE,GAAGyB,GAAGlC,EAAE,OAAO,MAAM,GAAGW,EAAET,EAAE,WAAWS,EAAEF,EAAEI,CAAC,CAAC,EAAED,EAAEU,GAAE,MAAMV,EAAEH,EAAEI,CAAC,CAAC,EAAEX,EAAE,aAAaS,CAAC,IAAI,CAACuB,GAAGA,GAAGlC,EAAE,gBAAgBW,EAAEA,EAAE,QAAQ,MAAM,CAACuB,GAAGlC,EAAE,OAAO,QAAQmC,EAAE,EAAEjC,EAAE,OAAOS,EAAE,IAAI,GAAG,CAAC,IAAIoB,EAAE7B,EAAE,SAASU,CAAC,EAAEA,EAAEkB,GAAG,QAAQR,GAAE,QAAQV,CAAC,EAAEmB,CAAC,EAAE,IAAIC,GAAE9B,EAAE,WAAWU,EAAE,CAAC,cAAcZ,EAAE,cAAc,CAAC,CAAC,EAAE,GAAGW,EAAEqB,GAAE,KAAKG,IAAI,GAAG,MAAM,IAAIjC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAKU,EAAE,KAAKD,CAAC,CAAC,EAAE,QAAQZ,EAAE,CAAC,QAAQC,IAAI,CAAC,GAAGE,EAAE,OAAOH,CAAC,EAAE,CAAC,IAAIS,EAAET,EAAE,MAAM,WAAW,OAAOC,EAAEQ,EAAEA,EAAE,OAAO,CAAC,IAAI,IAAI,GAAGA,CAAC,IAAIR,CAAC,GAAGQ,EAAER,EAAEQ,CAAC,CAACR,EAAEA,EAAE,GAAGD,EAAE,IAAI,IAAIC,CAAC,GAAGD,EAAE,KAAKA,EAAEA,EAAE,MAAM,CAAC,EAAE,SAASA,EAAEC,EAAE,CAAC,QAAQQ,EAAE,EAAEC,EAAE,EAAEA,EAAET,EAAE,OAAOS,IAAID,GAAGA,GAAG,GAAGA,EAAER,EAAE,WAAWS,CAAC,EAAE,EAAE,OAAOV,EAAES,IAAI,GAAGN,EAAE,UAAU,MAAM,EAAE,YAAYH,EAAE,CAAC,IAAIC,EAAEE,EAAE,SAASH,EAAE,OAAO,GAAGA,EAAE,IAAI,EAAEA,EAAE,UAAUG,EAAE,UAAUF,CAAC,EAAEE,EAAE,UAAUF,CAAC,EAAED,CAAC,EAAE,eAAeA,EAAE,CAAC,IAAIC,EAAEE,EAAE,SAASH,EAAE,OAAO,GAAGA,EAAE,IAAI,EAAE,GAAGG,EAAE,UAAUF,CAAC,IAAID,EAAEG,EAAE,UAAUF,CAAC,EAAED,EAAE,cAAe,SAAQS,EAAEN,EAAE,UAAUF,CAAC,EAAEQ,GAAG,CAAC,GAAGA,EAAE,YAAYT,EAAE,CAACS,EAAE,UAAUT,EAAE,UAAU,KAAK,CAACS,EAAEA,EAAE,SAAS,CAAC,EAAE,WAAWT,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,UAAUH,CAAC,EAAE,GAAGS,EAAE,MAAM,IAAIN,EAAE,WAAWM,CAAC,EAAE,QAAQC,EAAEP,EAAE,SAASH,EAAE,GAAGC,CAAC,EAAEW,EAAET,EAAE,UAAUO,CAAC,EAAEE,EAAEA,EAAEA,EAAE,UAAU,CAAC,IAAIC,EAAED,EAAE,KAAK,GAAGA,EAAE,OAAO,KAAKZ,EAAE,IAAIa,IAAIZ,EAAE,OAAOW,CAAC,CAAC,OAAOT,EAAE,OAAOH,EAAEC,CAAC,CAAC,EAAE,WAAWD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,IAAIT,EAAE,OAAOH,EAAEC,EAAEQ,EAAEC,CAAC,EAAE,OAAOP,EAAE,YAAYS,CAAC,EAAEA,CAAC,EAAE,YAAYZ,EAAE,CAACG,EAAE,eAAeH,CAAC,CAAC,EAAE,OAAOA,EAAE,CAAC,OAAOA,IAAIA,EAAE,MAAM,EAAE,aAAaA,EAAE,CAAC,MAAM,CAAC,CAACA,EAAE,OAAO,EAAE,OAAOA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,MAAMA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,OAAOA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,SAAS,IAAI,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,OAAOA,EAAE,CAAC,OAAOA,EAAE,SAAS,IAAI,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,wBAAwBA,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAI,IAAI,IAAI,EAAED,EAAE,CAAC,EAAE,OAAOA,EAAE,MAAMC,GAAG,KAAKA,CAAC,EAAE,gBAAgBD,EAAEC,EAAE,CAAC,OAAOE,EAAE,kBAAkB,EAAEF,EAAE,SAAS,GAAG,GAAG,EAAED,EAAE,KAAK,MAAMC,EAAE,SAAS,GAAG,GAAG,EAAED,EAAE,KAAK,MAAMC,EAAE,SAAS,GAAG,GAAG,EAAED,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,UAAUA,EAAE,CAAC,GAAG,CAACG,EAAE,MAAMH,EAAE,IAAI,EAAE,MAAO,IAAG,IAAIC,EAAEE,EAAE,gBAAgBH,EAAE,GAAG,EAAE,OAAOC,IAAID,EAAE,SAAS,OAAO,EAAE,EAAE,EAAE,UAAUA,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAEC,CAAC,EAAE,MAAO,GAAE,MAAM,CAAC,CAAC,OAAOE,EAAE,gBAAgBH,EAAE,IAAI,CAAC,EAAE,UAAUA,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,GAAG,CAACA,EAAEP,EAAE,WAAWH,EAAEC,CAAC,CAAC,OAAOY,EAAE,CAAC,OAAOA,EAAE,KAAK,CAAC,IAAID,EAAET,EAAE,gBAAgBH,EAAE,IAAI,EAAE,GAAGY,EAAE,OAAOA,EAAE,GAAGH,EAAE,CAAC,GAAG,CAACN,EAAE,MAAMO,EAAE,IAAI,EAAE,MAAO,IAAG,GAAGP,EAAE,OAAOO,CAAC,GAAGP,EAAE,QAAQO,CAAC,IAAIP,EAAE,IAAI,EAAE,MAAO,GAAE,SAASA,EAAE,MAAMO,EAAE,IAAI,EAAE,MAAO,IAAG,MAAO,EAAC,EAAE,QAAQV,EAAEC,EAAE,CAAC,OAAOD,EAAEG,EAAE,OAAOH,EAAE,IAAI,EAAE,GAAGG,EAAE,MAAMH,EAAE,IAAI,IAAIG,EAAE,wBAAwBF,CAAC,IAAI,KAAKA,EAAE,KAAK,GAAGE,EAAE,gBAAgBH,EAAEG,EAAE,wBAAwBF,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,KAAK,QAAQ,CAAC,QAAQD,EAAE,EAAEA,GAAGG,EAAE,aAAaH,IAAI,GAAG,CAACG,EAAE,QAAQH,CAAC,EAAE,OAAOA,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiBH,EAAE,CAAC,IAAIC,EAAEE,EAAE,UAAUH,CAAC,EAAE,GAAG,CAACC,EAAE,MAAM,IAAIE,EAAE,WAAW,CAAC,EAAE,OAAOF,CAAC,EAAE,UAAUD,GAAGG,EAAE,QAAQH,CAAC,EAAE,aAAaA,EAAEC,EAAE,GAAG,CAAC,OAAOD,EAAE,OAAO,OAAO,IAAIG,EAAE,SAASH,CAAC,EAAEC,GAAG,KAAKA,EAAEE,EAAE,OAAO,GAAGH,EAAE,GAAGC,EAAEE,EAAE,QAAQF,CAAC,EAAED,EAAEA,CAAC,EAAE,YAAYA,EAAE,CAACG,EAAE,QAAQH,CAAC,EAAE,IAAI,EAAE,UAAUA,EAAEC,EAAE,GAAG,CAAC,IAAIQ,EAAEN,EAAE,aAAaH,EAAEC,CAAC,EAAE,OAAOQ,EAAE,YAAY,MAAMA,CAAC,EAAEA,CAAC,EAAE,kBAAkB,CAAC,KAAKT,EAAE,CAAC,IAAIC,EAAEE,EAAE,UAAUH,EAAE,KAAK,IAAI,EAAEA,EAAE,WAAWC,EAAE,WAAWD,EAAE,WAAW,OAAOA,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAMH,GAAGA,GAAG,EAAE,MAAMA,GAAGA,EAAE,IAAI,QAAQ,CAACA,EAAEC,IAAID,GAAG,EAAEC,EAAE,eAAeD,EAAEC,EAAE,CAACE,EAAE,QAAQH,CAAC,EAAE,CAAC,WAAWC,CAAC,CAAC,EAAE,UAAUD,GAAGG,EAAE,QAAQH,CAAC,EAAE,UAAUA,EAAE,CAAC,QAAQC,EAAE,CAAC,EAAEQ,EAAE,CAACT,CAAC,EAAES,EAAE,QAAQ,CAAC,IAAIC,EAAED,EAAE,IAAI,EAAER,EAAE,KAAKS,CAAC,EAAED,EAAE,KAAK,GAAGC,EAAE,MAAM,CAAC,CAAC,OAAOT,CAAC,EAAE,OAAOD,EAAEC,EAAE,CAAC,OAAOD,GAAG,aAAaC,EAAED,EAAEA,EAAE,IAAIG,EAAE,iBAAiBA,EAAE,eAAe,GAAGpD,EAAE,YAAYoD,EAAE,cAAc,yEAAyE,EAAE,IAAIM,EAAEN,EAAE,UAAUA,EAAE,KAAK,KAAK,EAAEO,EAAE,EAAE,SAASE,EAAEE,EAAE,CAAC,OAAOX,EAAE,iBAAiBF,EAAEa,CAAC,CAAC,CAAC,SAASD,EAAEC,EAAE,CAAC,GAAGA,EAAE,OAAOD,EAAE,QAAQ,QAAQA,EAAE,QAAQ,GAAGD,EAAEE,CAAC,GAAG,EAAEJ,GAAGD,EAAE,QAAQG,EAAE,IAAI,CAAC,CAACH,EAAE,QAAQK,GAAG,CAAC,GAAG,CAACA,EAAE,KAAK,OAAO,OAAOD,EAAE,IAAI,EAAEC,EAAE,KAAK,OAAOA,EAAEd,EAAEa,CAAC,CAAC,CAAC,CAAC,EAAE,MAAMb,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAED,IAAI,IAAIG,EAAE,CAACH,EAAEI,EAAE,GAAGH,GAAGP,EAAE,KAAK,MAAM,IAAIA,EAAE,WAAW,EAAE,EAAE,GAAG,CAACO,GAAG,CAACE,EAAE,CAAC,IAAIE,EAAEX,EAAE,WAAWM,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,GAAGA,EAAEK,EAAE,KAAKD,EAAEC,EAAE,KAAKX,EAAE,aAAaU,CAAC,EAAE,MAAM,IAAIV,EAAE,WAAW,EAAE,EAAE,GAAG,CAACA,EAAE,MAAMU,EAAE,IAAI,EAAE,MAAM,IAAIV,EAAE,WAAW,EAAE,CAAC,CAAC,IAAIgC,EAAE,CAAC,KAAKnC,EAAE,KAAKC,EAAE,WAAWQ,EAAE,OAAO,CAAC,CAAC,EAAE2B,EAAEpC,EAAE,MAAMmC,CAAC,EAAE,OAAOC,EAAE,MAAMD,EAAEA,EAAE,KAAKC,EAAE1B,EAAEP,EAAE,KAAKiC,EAAEvB,IAAIA,EAAE,QAAQsB,EAAEtB,EAAE,OAAOA,EAAE,MAAM,OAAO,KAAKsB,CAAC,GAAGC,CAAC,EAAE,QAAQpC,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,CAACG,EAAE,aAAaF,EAAE,IAAI,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAER,EAAE,KAAKS,EAAED,EAAE,QAAQG,EAAET,EAAE,UAAUO,CAAC,EAAE,OAAO,KAAKP,EAAE,SAAS,EAAE,QAAQW,GAAG,CAAC,QAAQqB,EAAEhC,EAAE,UAAUW,CAAC,EAAEqB,GAAG,CAAC,IAAIC,EAAED,EAAE,UAAUvB,EAAE,SAASuB,EAAE,KAAK,GAAGhC,EAAE,YAAYgC,CAAC,EAAEA,EAAEC,CAAC,CAAC,CAAC,EAAE3B,EAAE,QAAQ,KAAK,IAAII,EAAEJ,EAAE,MAAM,OAAO,QAAQC,CAAC,EAAED,EAAE,MAAM,OAAO,OAAOI,EAAE,CAAC,CAAC,EAAE,OAAOb,EAAEC,EAAE,CAAC,OAAOD,EAAE,SAAS,OAAOA,EAAEC,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEP,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEY,EAAEF,EAAE,KAAKG,EAAEU,GAAE,SAASvB,CAAC,EAAE,GAAG,CAACa,GAAGA,IAAI,KAAKA,IAAI,KAAK,MAAM,IAAIV,EAAE,WAAW,EAAE,EAAE,IAAIW,EAAEX,EAAE,UAAUS,EAAEC,CAAC,EAAE,GAAGC,EAAE,MAAM,IAAIX,EAAE,WAAWW,CAAC,EAAE,GAAG,CAACF,EAAE,SAAS,MAAM,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAE,OAAOS,EAAE,SAAS,MAAMA,EAAEC,EAAEZ,EAAEQ,CAAC,CAAC,EAAE,OAAOT,EAAE,CAAC,IAAIC,EAAE,CAAC,MAAM,KAAK,OAAO,KAAK,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,MAAME,EAAE,UAAU,MAAMA,EAAE,UAAU,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,GAAG,EAAEM,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,OAAOS,GAAG,SAAS,QAAQ,OAAO,OAAOR,EAAEQ,EAAE,SAAS,OAAOA,EAAE,MAAM,KAAK,IAAI,CAAC,EAAER,CAAC,EAAE,OAAOD,EAAEC,EAAE,IAAI,CAAC,OAAOA,GAAG,KAAKA,GAAG,MAAME,EAAE,MAAMH,EAAEC,EAAE,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAE,IAAI,CAAC,OAAOA,GAAG,KAAKA,GAAG,MAAME,EAAE,MAAMH,EAAEC,EAAE,CAAC,CAAC,EAAE,UAAUD,EAAEC,EAAE,CAAC,QAAQQ,EAAET,EAAE,MAAM,GAAG,EAAEU,EAAE,GAAGE,EAAE,EAAEA,EAAEH,EAAE,OAAO,EAAEG,EAAE,GAAGH,EAAEG,CAAC,EAAE,CAACF,GAAG,IAAID,EAAEG,CAAC,EAAE,GAAG,CAACT,EAAE,MAAMO,EAAET,CAAC,CAAC,OAAOY,EAAE,CAAC,GAAGA,EAAE,OAAO,GAAG,MAAMA,CAAC,CAAC,CAAC,EAAE,MAAMb,EAAEC,EAAEQ,EAAE,CAAC,OAAO,OAAOA,EAAE,MAAMA,EAAER,EAAEA,EAAE,KAAKA,GAAG,KAAKE,EAAE,MAAMH,EAAEC,EAAEQ,CAAC,CAAC,EAAE,QAAQT,EAAEC,EAAE,CAAC,GAAG,CAAC8B,GAAG,QAAQ/B,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAEN,EAAE,WAAWF,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAED,EAAE,KAAK,GAAG,CAACC,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,IAAIS,EAAEW,GAAE,SAAStB,CAAC,EAAEY,EAAEV,EAAE,UAAUO,EAAEE,CAAC,EAAE,GAAGC,EAAE,MAAM,IAAIV,EAAE,WAAWU,CAAC,EAAE,GAAG,CAACH,EAAE,SAAS,QAAQ,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,OAAOO,EAAE,SAAS,QAAQA,EAAEE,EAAEZ,CAAC,CAAC,EAAE,OAAOA,EAAEC,EAAE,CAAC,IAAIQ,EAAEc,GAAE,QAAQvB,CAAC,EAAEU,EAAEa,GAAE,QAAQtB,CAAC,EAAEW,EAAEW,GAAE,SAASvB,CAAC,EAAEa,EAAEU,GAAE,SAAStB,CAAC,EAAEa,EAAEqB,EAAEC,EAAE,GAAGtB,EAAEX,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEmC,EAAErB,EAAE,KAAKA,EAAEX,EAAE,WAAWF,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEmC,EAAEtB,EAAE,KAAK,CAACqB,GAAG,CAACC,EAAE,MAAM,IAAIjC,EAAE,WAAW,EAAE,EAAE,GAAGgC,EAAE,QAAQC,EAAE,MAAM,MAAM,IAAIjC,EAAE,WAAW,EAAE,EAAE,IAAI6B,EAAE7B,EAAE,WAAWgC,EAAEvB,CAAC,EAAEqB,GAAEF,GAAG,SAAS/B,EAAEU,CAAC,EAAE,GAAGuB,GAAE,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI9B,EAAE,WAAW,EAAE,EAAE,GAAG8B,GAAEF,GAAG,SAAS9B,EAAEQ,CAAC,EAAEwB,GAAE,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI9B,EAAE,WAAW,EAAE,EAAE,IAAI+B,GAAE,GAAG,CAACA,GAAE/B,EAAE,WAAWiC,EAAEvB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAGmB,IAAIE,GAAE,CAAC,IAAIoB,GAAEnD,EAAE,MAAM6B,EAAE,IAAI,EAAEuB,EAAEpD,EAAE,UAAUgC,EAAEvB,EAAE0C,EAAC,EAAE,GAAGC,EAAE,MAAM,IAAIpD,EAAE,WAAWoD,CAAC,EAAE,GAAGA,EAAErB,GAAE/B,EAAE,UAAUiC,EAAEvB,EAAEyC,EAAC,EAAEnD,EAAE,UAAUiC,EAAEvB,CAAC,EAAE0C,EAAE,MAAM,IAAIpD,EAAE,WAAWoD,CAAC,EAAE,GAAG,CAACpB,EAAE,SAAS,OAAO,MAAM,IAAIhC,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,aAAa6B,CAAC,GAAGE,IAAG/B,EAAE,aAAa+B,EAAC,EAAE,MAAM,IAAI/B,EAAE,WAAW,EAAE,EAAE,GAAGiC,IAAID,IAAIoB,EAAEpD,EAAE,gBAAgBgC,EAAE,GAAG,EAAEoB,GAAG,MAAM,IAAIpD,EAAE,WAAWoD,CAAC,EAAEpD,EAAE,eAAe6B,CAAC,EAAE,GAAG,CAACG,EAAE,SAAS,OAAOH,EAAEI,EAAEvB,CAAC,EAAEmB,EAAE,OAAOI,CAAC,OAAOoB,GAAE,CAAC,MAAMA,EAAC,QAAC,CAAQrD,EAAE,YAAY6B,CAAC,CAAC,CAAC,CAAC,EAAE,MAAMhC,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAER,EAAE,KAAKS,EAAEa,GAAE,SAASvB,CAAC,EAAEY,EAAET,EAAE,WAAWM,EAAEC,CAAC,EAAEG,EAAEV,EAAE,UAAUM,EAAEC,EAAE,EAAE,EAAE,GAAGG,EAAE,MAAM,IAAIV,EAAE,WAAWU,CAAC,EAAE,GAAG,CAACJ,EAAE,SAAS,MAAM,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,aAAaS,CAAC,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAEM,EAAE,SAAS,MAAMA,EAAEC,CAAC,EAAEP,EAAE,YAAYS,CAAC,CAAC,EAAE,QAAQZ,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAER,EAAE,KAAK,GAAG,CAACQ,EAAE,SAAS,QAAQ,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOM,EAAE,SAAS,QAAQA,CAAC,CAAC,EAAE,OAAOT,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAER,EAAE,KAAK,GAAG,CAACQ,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,IAAIO,EAAEa,GAAE,SAASvB,CAAC,EAAEY,EAAET,EAAE,WAAWM,EAAEC,CAAC,EAAEG,EAAEV,EAAE,UAAUM,EAAEC,EAAE,EAAE,EAAE,GAAGG,EAAE,MAAM,IAAIV,EAAE,WAAWU,CAAC,EAAE,GAAG,CAACJ,EAAE,SAAS,OAAO,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,aAAaS,CAAC,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAEM,EAAE,SAAS,OAAOA,EAAEC,CAAC,EAAEP,EAAE,YAAYS,CAAC,CAAC,EAAE,SAASZ,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,CAAC,EAAES,EAAER,EAAE,KAAK,GAAG,CAACQ,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAG,CAACM,EAAE,SAAS,SAAS,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOM,EAAE,SAAS,SAASA,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACC,CAAC,CAAC,EAAES,EAAED,EAAE,KAAK,GAAG,CAACC,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,GAAG,CAACO,EAAE,SAAS,QAAQ,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,OAAOO,EAAE,SAAS,QAAQA,CAAC,CAAC,EAAE,MAAMV,EAAE,CAAC,OAAOG,EAAE,KAAKH,EAAE,EAAE,CAAC,EAAE,MAAMA,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,GAAG,OAAOV,GAAG,SAAS,CAAC,IAAIY,EAAET,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACS,CAAC,CAAC,EAAEC,EAAEE,EAAE,IAAI,MAAMF,EAAEV,EAAE,GAAG,CAACU,EAAE,SAAS,QAAQ,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAEO,EAAE,SAAS,QAAQA,EAAE,CAAC,KAAKT,EAAE,KAAKS,EAAE,KAAK,MAAM,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAOV,EAAEC,EAAE,CAACE,EAAE,MAAMH,EAAEC,EAAE,EAAE,CAAC,EAAE,OAAOD,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,iBAAiBH,CAAC,EAAEG,EAAE,MAAMM,EAAE,KAAKR,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,GAAG,OAAOZ,GAAG,SAAS,CAAC,IAAIa,EAAEV,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACU,CAAC,CAAC,EAAEE,EAAEC,EAAE,IAAI,MAAMD,EAAEZ,EAAE,GAAG,CAACY,EAAE,SAAS,QAAQ,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAES,EAAE,SAAS,QAAQA,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAOZ,EAAEC,EAAEQ,EAAE,CAACN,EAAE,MAAMH,EAAEC,EAAEQ,EAAE,EAAE,CAAC,EAAE,OAAOT,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEP,EAAE,iBAAiBH,CAAC,EAAEG,EAAE,MAAMO,EAAE,KAAKT,EAAEQ,CAAC,CAAC,EAAE,SAAST,EAAEC,EAAE,CAAC,GAAGA,EAAE,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAE,GAAG,OAAOT,GAAG,SAAS,CAAC,IAAIU,EAAEP,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAEC,EAAE,IAAI,MAAMD,EAAET,EAAE,GAAG,CAACS,EAAE,SAAS,QAAQ,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,MAAMM,EAAE,IAAI,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAG,CAACA,EAAE,OAAOM,EAAE,IAAI,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,IAAIS,EAAET,EAAE,gBAAgBM,EAAE,GAAG,EAAE,GAAGG,EAAE,MAAM,IAAIT,EAAE,WAAWS,CAAC,EAAEH,EAAE,SAAS,QAAQA,EAAE,CAAC,KAAKR,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,UAAUD,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,iBAAiBH,CAAC,EAAE,GAAG,EAAES,EAAE,MAAM,SAAS,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAEA,EAAE,SAASM,EAAE,KAAKR,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEP,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEY,EAAEF,EAAE,KAAKE,EAAE,SAAS,QAAQA,EAAE,CAAC,UAAU,KAAK,IAAIX,EAAEQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAEQ,EAAE,IAAI,CAAC,GAAGT,IAAI,GAAG,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAEF,EAAE,OAAOA,GAAG,SAASyD,GAAGzD,CAAC,EAAEA,EAAEA,EAAE,GAAGQ,EAAEA,EAAE,KAAK,MAAMA,EAAE,EAAE,IAAIC,EAAE,GAAG,OAAOV,GAAG,SAASU,EAAEV,MAAM,CAACA,EAAEuB,GAAE,UAAUvB,CAAC,EAAE,GAAG,CAAC,IAAIY,EAAET,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAEC,EAAE,OAAO,CAAC,EAAES,EAAEE,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,IAAIC,EAAE,GAAG,GAAGZ,EAAE,GAAG,GAAGS,GAAG,GAAGT,EAAE,IAAI,MAAM,IAAIE,EAAE,WAAW,EAAE,OAAOO,EAAEP,EAAE,MAAMH,EAAES,EAAE,CAAC,EAAEI,EAAE,GAAG,GAAG,CAACH,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,SAASO,EAAE,IAAI,IAAIT,GAAG,MAAMA,EAAE,OAAO,CAACE,EAAE,MAAMO,EAAE,IAAI,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,GAAG,CAACU,EAAE,CAAC,IAAIC,EAAEX,EAAE,QAAQO,EAAET,CAAC,EAAE,GAAGa,EAAE,MAAM,IAAIX,EAAE,WAAWW,CAAC,CAAC,CAACb,EAAE,KAAK,CAACY,GAAGV,EAAE,SAASO,EAAE,CAAC,EAAET,GAAG,QAAQ,IAAIkC,EAAEhC,EAAE,aAAa,CAAC,KAAKO,EAAE,KAAKP,EAAE,QAAQO,CAAC,EAAE,MAAMT,EAAE,SAAS,GAAG,SAAS,EAAE,WAAWS,EAAE,WAAW,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAOyB,EAAE,WAAW,MAAMA,EAAE,WAAW,KAAKA,CAAC,EAAEA,CAAC,EAAE,MAAMnC,EAAE,CAAC,GAAGG,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAEH,EAAE,WAAWA,EAAE,SAAS,MAAM,GAAG,CAACA,EAAE,WAAW,OAAOA,EAAE,WAAW,MAAMA,CAAC,CAAC,OAAOC,EAAE,CAAC,MAAMA,CAAC,QAAC,CAAQE,EAAE,YAAYH,EAAE,EAAE,CAAC,CAACA,EAAE,GAAG,IAAI,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,KAAK,IAAI,EAAE,OAAOA,EAAEC,EAAEQ,EAAE,CAAC,GAAGN,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,CAACH,EAAE,UAAU,CAACA,EAAE,WAAW,OAAO,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAGM,GAAG,GAAGA,GAAG,GAAGA,GAAG,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,SAASA,EAAE,WAAW,OAAOA,EAAEC,EAAEQ,CAAC,EAAET,EAAE,SAAS,CAAC,EAAEA,EAAE,QAAQ,EAAE,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAGF,EAAE,GAAGE,EAAE,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,IAAIH,EAAE,MAAM,WAAW,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAGA,EAAE,MAAMH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACH,EAAE,WAAW,KAAK,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIU,EAAE,OAAOD,EAAE,IAAI,GAAG,CAACC,EAAED,EAAEZ,EAAE,iBAAiB,CAACA,EAAE,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIW,EAAEd,EAAE,WAAW,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,EAAE,OAAOC,IAAIb,EAAE,UAAUc,GAAGA,CAAC,EAAE,MAAMd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAE,CAAC,GAAGH,EAAE,GAAGE,EAAE,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,EAAEH,EAAE,MAAM,SAAS,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAGA,EAAE,MAAMH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACH,EAAE,WAAW,MAAM,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAEH,EAAE,UAAUA,EAAE,MAAM,MAAMG,EAAE,OAAOH,EAAE,EAAE,CAAC,EAAE,IAAIc,EAAE,OAAOF,EAAE,IAAI,GAAG,CAACE,EAAEF,EAAEZ,EAAE,iBAAiB,CAACA,EAAE,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIgC,EAAEnC,EAAE,WAAW,MAAMA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,CAAC,EAAE,OAAOC,IAAId,EAAE,UAAUmC,GAAGA,CAAC,EAAE,SAASnC,EAAEC,EAAEQ,EAAE,CAAC,GAAGN,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAGF,EAAE,GAAGQ,GAAG,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAG,EAAEH,EAAE,MAAM,SAAS,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,CAACA,EAAE,OAAOH,EAAE,KAAK,IAAI,GAAG,CAACG,EAAE,MAAMH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACH,EAAE,WAAW,SAAS,MAAM,IAAIG,EAAE,WAAW,GAAG,EAAEH,EAAE,WAAW,SAASA,EAAEC,EAAEQ,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAGF,EAAE,GAAG,EAAEE,EAAE,KAAKZ,EAAE,MAAM,WAAW,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,IAAIH,EAAE,MAAM,WAAW,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,CAACH,EAAE,WAAW,KAAK,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACF,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,WAAW,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,CAAC,EAAE,MAAMZ,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,OAAOZ,EAAE,WAAW,MAAMA,EAAE,WAAW,MAAMA,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,EAAE,CAAC,EAAE,MAAMZ,EAAEC,EAAEQ,EAAE,CAAC,GAAG,CAACT,EAAE,WAAW,MAAM,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,WAAW,MAAMA,EAAEC,EAAEQ,CAAC,CAAC,EAAE,SAAST,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,MAAMA,EAAE,OAAO,EAAEA,EAAE,SAASA,EAAE,UAAU,SAASA,EAAE,WAAW,QAAQA,EAAE,WAAW,SAAS,MAAM,IAAI,MAAM,0BAA0BA,EAAE,QAAQ,GAAG,EAAE,IAAIQ,EAAEC,EAAEP,EAAE,KAAKH,EAAEC,EAAE,KAAK,EAAEW,EAAET,EAAE,KAAKH,CAAC,EAAEa,EAAED,EAAE,KAAKE,EAAE,IAAI,WAAWD,CAAC,EAAE,OAAOV,EAAE,KAAKO,EAAEI,EAAE,EAAED,EAAE,CAAC,EAAEZ,EAAE,WAAW,OAAOQ,EAAE6B,GAAGxB,CAAC,EAAEb,EAAE,WAAW,WAAWQ,EAAEK,GAAGX,EAAE,MAAMO,CAAC,EAAED,CAAC,EAAE,UAAUT,EAAEC,EAAEQ,EAAE,CAAC,EAAE,CAACA,EAAE,MAAMA,EAAE,OAAO,IAAI,IAAIC,EAAEP,EAAE,KAAKH,EAAES,EAAE,MAAMA,EAAE,IAAI,EAAE,GAAG,OAAOR,GAAG,SAAS,CAAC,IAAIW,EAAE,IAAI,WAAW4B,GAAGvC,CAAC,EAAE,CAAC,EAAEY,EAAE4B,GAAGxC,EAAEW,EAAE,EAAEA,EAAE,MAAM,EAAET,EAAE,MAAMO,EAAEE,EAAE,EAAEC,EAAE,OAAOJ,EAAE,MAAM,CAAC,SAAS,YAAY,OAAOR,CAAC,EAAEE,EAAE,MAAMO,EAAET,EAAE,EAAEA,EAAE,WAAW,OAAOQ,EAAE,MAAM,MAAO,OAAM,IAAI,MAAM,uBAAuB,EAAEN,EAAE,MAAMO,CAAC,CAAC,EAAE,IAAI,IAAIP,EAAE,YAAY,MAAMH,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,GAAGC,EAAE,OAAO,KAAK,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,GAAG,CAACA,EAAE,MAAMF,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAEN,EAAE,gBAAgBF,EAAE,KAAK,GAAG,EAAE,GAAGQ,EAAE,MAAM,IAAIN,EAAE,WAAWM,CAAC,EAAEN,EAAE,YAAYF,EAAE,IAAI,EAAE,0BAA0B,CAACE,EAAE,MAAM,MAAM,EAAEA,EAAE,MAAM,OAAO,EAAEA,EAAE,MAAM,gBAAgB,CAAC,EAAE,sBAAsB,CAACA,EAAE,MAAM,MAAM,EAAEA,EAAE,eAAeA,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,MAAM,CAACO,EAAEE,EAAEC,EAAEC,EAAEqB,IAAIrB,EAAE,OAAO,IAAI,CAAC,CAAC,EAAEX,EAAE,MAAM,YAAYA,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEC,GAAG,SAASD,EAAE,QAAQ,EAAE,CAAC,EAAEC,GAAG,eAAe,EAAEA,GAAG,SAASD,EAAE,QAAQ,EAAE,CAAC,EAAEC,GAAG,gBAAgB,EAAED,EAAE,MAAM,WAAWA,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,EAAE,MAAM,YAAYA,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAIH,EAAE,IAAI,WAAW,IAAI,EAAEC,EAAE,EAAEQ,EAAE,KAAKR,IAAI,IAAIA,EAAE6B,GAAG9B,CAAC,EAAE,YAAYA,EAAE,EAAEC,CAAC,GAAGE,EAAE,aAAa,OAAO,SAASM,CAAC,EAAEN,EAAE,aAAa,OAAO,UAAUM,CAAC,EAAEN,EAAE,MAAM,UAAU,EAAEA,EAAE,MAAM,cAAc,CAAC,EAAE,0BAA0B,CAACA,EAAE,MAAM,OAAO,EAAE,IAAIH,EAAEG,EAAE,MAAM,YAAY,EAAEA,EAAE,MAAM,eAAe,EAAEA,EAAE,MAAM,CAAC,OAAO,CAAC,IAAIF,EAAEE,EAAE,WAAWH,EAAE,KAAK,MAAM,EAAE,EAAE,OAAOC,EAAE,SAAS,CAAC,OAAOQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,CAACF,EAAEG,EAAEV,EAAE,iBAAiBS,CAAC,EAAEE,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,MAAM,EAAE,SAAS,CAAC,SAAS,IAAID,EAAE,IAAI,CAAC,EAAE,OAAOC,EAAE,OAAOA,EAAEA,CAAC,CAAC,EAAEb,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,sBAAsBD,EAAEC,EAAEQ,EAAE,CAACT,EAAEG,EAAE,aAAa,OAAO,QAAQH,CAAC,EAAEG,EAAE,QAAQ,WAAW,YAAY,EAAEF,EAAEE,EAAE,aAAa,OAAO,SAAS,KAAKF,CAAC,EAAEE,EAAE,QAAQ,WAAW,aAAa,EAAEM,EAAEN,EAAE,aAAa,OAAO,SAAS,KAAKM,CAAC,EAAEN,EAAE,QAAQ,YAAY,aAAa,EAAE,IAAIO,EAAEP,EAAE,KAAK,aAAa,CAAC,EAAES,EAAET,EAAE,KAAK,cAAc,CAAC,EAAEU,EAAEV,EAAE,KAAK,cAAc,CAAC,CAAC,EAAE,YAAY,CAACA,EAAE,UAAU,IAAI,MAAM,IAAI,EAAEA,EAAE,MAAM6C,EAAE,CAAC,EAAE,GAAG,EAAE7C,EAAE,yBAAyB,EAAEA,EAAE,qBAAqB,EAAEA,EAAE,yBAAyB,EAAEA,EAAE,YAAY,CAAC,MAAM6C,CAAC,CAAC,EAAE,KAAKhD,EAAEC,EAAEQ,EAAE,CAACN,EAAE,YAAY,GAAGA,EAAE,sBAAsBH,EAAEC,EAAEQ,CAAC,CAAC,EAAE,MAAM,CAACN,EAAE,YAAY,GAAG,QAAQH,EAAE,EAAEA,EAAEG,EAAE,QAAQ,OAAOH,IAAI,CAAC,IAAIC,EAAEE,EAAE,QAAQH,CAAC,EAAEC,GAAGE,EAAE,MAAMF,CAAC,CAAC,CAAC,EAAE,WAAWD,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,YAAYH,EAAEC,CAAC,EAAE,OAAOQ,EAAE,OAAOA,EAAE,OAAO,IAAI,EAAE,YAAYT,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACC,CAAC,CAAC,EAAED,EAAES,EAAE,IAAI,MAAM,CAAC,CAAC,IAAIC,EAAE,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,EAAE,KAAK,KAAK,KAAK,KAAK,OAAO,KAAK,aAAa,GAAG,WAAW,KAAK,aAAa,IAAI,EAAE,GAAG,CAAC,IAAID,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEU,EAAE,aAAa,GAAGA,EAAE,WAAWD,EAAE,KAAKC,EAAE,aAAaD,EAAE,KAAKC,EAAE,KAAKa,GAAE,SAASvB,CAAC,EAAES,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACC,CAAC,CAAC,EAAES,EAAE,OAAO,GAAGA,EAAE,KAAKD,EAAE,KAAKC,EAAE,OAAOD,EAAE,KAAKC,EAAE,KAAKD,EAAE,KAAK,KAAKC,EAAE,OAAOD,EAAE,OAAO,GAAG,OAAOG,EAAE,CAACF,EAAE,MAAME,EAAE,KAAK,CAAC,OAAOF,CAAC,EAAE,WAAWV,EAAEC,EAAEQ,EAAEC,EAAE,CAACV,EAAE,OAAOA,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAE,QAAQY,EAAEX,EAAE,MAAM,GAAG,EAAE,QAAQ,EAAEW,EAAE,QAAQ,CAAC,IAAIC,EAAED,EAAE,IAAI,EAAE,GAAGC,EAAE,CAAC,IAAIC,EAAES,GAAE,MAAMvB,EAAEa,CAAC,EAAE,GAAG,CAACV,EAAE,MAAMW,CAAC,CAAC,MAAM,CAAC,CAACd,EAAEc,CAAC,CAAC,CAAC,OAAOA,CAAC,EAAE,WAAWd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEU,GAAE,MAAM,OAAOvB,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAEC,CAAC,EAAEa,EAAE6C,GAAGjD,EAAEE,CAAC,EAAE,OAAOT,EAAE,OAAOU,EAAEC,CAAC,CAAC,EAAE,eAAed,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAE,CAAC,IAAIC,EAAEb,EAAED,IAAIA,EAAE,OAAOA,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAEc,EAAEb,EAAEsB,GAAE,MAAMvB,EAAEC,CAAC,EAAED,GAAG,IAAImC,EAAEwB,GAAGjD,EAAEE,CAAC,EAAEwB,EAAEjC,EAAE,OAAOW,EAAEqB,CAAC,EAAE,GAAG1B,EAAE,CAAC,GAAG,OAAOA,GAAG,SAAS,CAAC,QAAQuB,EAAE,IAAI,MAAMvB,EAAE,MAAM,EAAEwB,GAAE,EAAEC,GAAEzB,EAAE,OAAOwB,GAAEC,GAAE,EAAED,GAAED,EAAEC,EAAC,EAAExB,EAAE,WAAWwB,EAAC,EAAExB,EAAEuB,CAAC,CAAC7B,EAAE,MAAMiC,EAAED,EAAE,GAAG,EAAE,IAAImB,GAAEnD,EAAE,KAAKiC,EAAE,GAAG,EAAEjC,EAAE,MAAMmD,GAAE7C,EAAE,EAAEA,EAAE,OAAO,EAAEI,CAAC,EAAEV,EAAE,MAAMmD,EAAC,EAAEnD,EAAE,MAAMiC,EAAED,CAAC,CAAC,CAAC,EAAE,aAAanC,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAEW,GAAE,MAAM,OAAOvB,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAEC,CAAC,EAAEY,EAAE8C,GAAG,CAAC,CAAClD,EAAE,CAAC,CAACC,CAAC,EAAEP,EAAE,aAAa,QAAQ,GAAG,IAAIW,EAAEX,EAAE,QAAQA,EAAE,aAAa,QAAQ,CAAC,EAAE,OAAOA,EAAE,eAAeW,EAAE,CAAC,KAAKqB,EAAE,CAACA,EAAE,SAAS,EAAE,EAAE,MAAMA,EAAE,CAACzB,GAAG,QAAQ,QAAQA,EAAE,EAAE,CAAC,EAAE,KAAKyB,EAAEC,EAAEJ,EAAEC,GAAEC,GAAE,CAAC,QAAQoB,GAAE,EAAEC,EAAE,EAAEA,EAAEtB,GAAEsB,IAAI,CAAC,IAAIC,GAAE,GAAG,CAACA,GAAE/C,EAAE,CAAC,MAAM,CAAC,MAAM,IAAIN,EAAE,WAAW,EAAE,CAAC,CAAC,GAAGqD,KAAI,QAAQF,KAAI,EAAE,MAAM,IAAInD,EAAE,WAAW,CAAC,EAAE,GAAGqD,IAAG,KAAK,MAAMF,KAAIlB,EAAEJ,EAAEuB,CAAC,EAAEC,EAAC,CAAC,OAAOF,KAAInB,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGmB,EAAC,EAAE,MAAMnB,EAAEC,EAAEJ,EAAEC,GAAEC,GAAE,CAAC,QAAQoB,GAAE,EAAEA,GAAErB,GAAEqB,KAAI,GAAG,CAAC5C,EAAE0B,EAAEJ,EAAEsB,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAInD,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO8B,KAAIE,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGmB,EAAC,CAAC,CAAC,EAAEnD,EAAE,MAAMS,EAAEC,EAAEC,CAAC,CAAC,EAAE,cAAcd,EAAE,CAAC,GAAGA,EAAE,UAAUA,EAAE,UAAUA,EAAE,MAAMA,EAAE,SAAS,MAAM,GAAG,GAAG,OAAO,eAAe,IAAI,MAAM,IAAI,MAAM,kMAAkM,EAAE,GAAG,CAACA,EAAE,SAASrD,EAAEqD,EAAE,GAAG,EAAEA,EAAE,UAAUA,EAAE,SAAS,MAAM,MAAM,CAAC,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,eAAeH,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,MAAMC,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,EAAE,IAAI0C,EAAE,CAAC,GAAG,EAAEA,EAAE,KAAK,OAAO,GAAGA,EAAE,GAAG,CAAC,IAAIC,GAAED,EAAE,KAAK,UAAUE,GAAGF,EAAE,KAAK,UAAU,EAAE,OAAO,KAAK,OAAOE,EAAE,EAAED,EAAC,CAAC,CAAC,CAAC,cAAcD,EAAE,CAAC,KAAK,OAAOA,CAAC,CAAC,aAAa,CAAC,IAAIA,EAAE,IAAI,eAAe,GAAGA,EAAE,KAAK,OAAO9C,EAAE,EAAE,EAAE8C,EAAE,KAAK,IAAI,EAAE,EAAEA,EAAE,QAAQ,KAAKA,EAAE,OAAO,KAAKA,EAAE,SAAS,KAAK,MAAM,IAAI,MAAM,iBAAiB9C,EAAE,aAAa8C,EAAE,MAAM,EAAE,IAAIC,GAAE,OAAOD,EAAE,kBAAkB,gBAAgB,CAAC,EAAEE,GAAGG,GAAIH,GAAGF,EAAE,kBAAkB,eAAe,IAAIE,KAAK,QAAQI,IAAIJ,GAAGF,EAAE,kBAAkB,kBAAkB,IAAIE,KAAK,OAAOK,GAAG,KAAK,KAAKF,IAAKE,GAAGN,IAAG,IAAIO,GAAG,CAACC,GAAGC,KAAK,CAAC,GAAGD,GAAGC,GAAG,MAAM,IAAI,MAAM,kBAAkBD,GAAG,KAAKC,GAAG,0BAA0B,EAAE,GAAGA,GAAGT,GAAE,EAAE,MAAM,IAAI,MAAM,QAAQA,GAAE,qCAAqC,EAAE,IAAIU,EAAG,IAAI,eAAe,GAAGA,EAAG,KAAK,MAAMzD,EAAE,EAAE,EAAE+C,KAAIM,IAAII,EAAG,iBAAiB,QAAQ,SAASF,GAAG,IAAIC,EAAE,EAAEC,EAAG,aAAa,cAAcA,EAAG,kBAAkBA,EAAG,iBAAiB,oCAAoC,EAAEA,EAAG,KAAK,IAAI,EAAE,EAAEA,EAAG,QAAQ,KAAKA,EAAG,OAAO,KAAKA,EAAG,SAAS,KAAK,MAAM,IAAI,MAAM,iBAAiBzD,EAAE,aAAayD,EAAG,MAAM,EAAE,OAAOA,EAAG,WAAW,OAAO,IAAI,WAAWA,EAAG,UAAU,CAAC,CAAC,EAAExB,GAAGwB,EAAG,cAAc,GAAG,EAAE,CAAC,EAAEC,GAAG,KAAKA,GAAG,cAAcH,IAAI,CAAC,IAAIC,GAAGD,GAAGF,GAAGI,GAAIF,GAAG,GAAGF,GAAG,EAAE,GAAGI,EAAG,KAAK,IAAIA,EAAGV,GAAE,CAAC,EAAE,OAAOW,GAAG,OAAOH,EAAE,EAAE,MAAMG,GAAG,OAAOH,EAAE,EAAED,GAAGE,GAAGC,CAAE,GAAG,OAAOC,GAAG,OAAOH,EAAE,EAAE,IAAI,MAAM,IAAI,MAAM,eAAe,EAAE,OAAOG,GAAG,OAAOH,EAAE,CAAC,CAAC,GAAGH,IAAI,CAACL,MAAKM,GAAGN,GAAE,EAAEA,GAAE,KAAK,OAAO,CAAC,EAAE,OAAOM,GAAGN,GAAE5G,EAAE,6EAA6E,GAAG,KAAK,QAAQ4G,GAAE,KAAK,WAAWM,GAAG,KAAK,YAAY,EAAE,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,aAAa,KAAK,YAAY,EAAE,KAAK,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,aAAa,KAAK,YAAY,EAAE,KAAK,UAAU,CAAC,CAAC,GAAG,OAAO,eAAe,IAAI,CAAC,GAAG,CAAC1H,EAAE,KAAK,sHAAsH,IAAI0E,EAAE,IAAID,EAAEsB,EAAE,CAAC,SAAS,GAAG,SAASrB,CAAC,CAAC,KAAM,KAAIqB,EAAE,CAAC,SAAS,GAAG,IAAI1B,CAAC,EAAE,IAAI2B,EAAEjC,EAAE,WAAWH,EAAEC,EAAEkC,EAAEzB,EAAEE,CAAC,EAAEuB,EAAE,SAASC,EAAE,SAASD,EAAE,SAASA,EAAE,MAAMC,EAAE,SAAS,KAAKA,EAAE,IAAID,EAAE,KAAK,OAAO,iBAAiBC,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,IAAIJ,EAAE,CAAC,EAAEC,GAAE,OAAO,KAAKG,EAAE,UAAU,EAAEH,GAAE,QAAQqB,IAAG,CAAC,IAAIC,EAAEnB,EAAE,WAAWkB,EAAC,EAAEtB,EAAEsB,EAAC,EAAE,IAAIE,MAAKrD,EAAE,cAAciC,CAAC,EAAEmB,EAAE,GAAGC,EAAC,EAAE,CAAC,EAAE,SAAStB,GAAEoB,GAAEC,EAAEC,GAAEC,GAAGG,EAAG,CAAC,IAAIC,GAAGP,GAAE,KAAK,SAAS,GAAGM,GAAIC,GAAG,OAAO,MAAO,GAAE,IAAIC,GAAG,KAAK,IAAID,GAAG,OAAOD,EAAGH,EAAE,EAAE,GAAGI,GAAG,MAAM,QAAQE,GAAG,EAAEA,GAAGD,GAAGC,KAAKR,EAAEC,GAAEO,EAAE,EAAEF,GAAGD,EAAGG,EAAE,MAAO,SAAQA,GAAG,EAAEA,GAAGD,GAAGC,KAAKR,EAAEC,GAAEO,EAAE,EAAEF,GAAG,IAAID,EAAGG,EAAE,EAAE,OAAOD,EAAE,CAAC,OAAO9B,EAAE,KAAK,CAACsB,GAAEC,EAAEC,GAAEC,GAAGG,KAAMzD,EAAE,cAAciC,CAAC,EAAEF,GAAEoB,GAAEC,EAAEC,GAAEC,GAAGG,CAAE,GAAG5B,EAAE,KAAK,CAACsB,GAAEC,EAAEC,GAAEC,GAAGG,IAAK,CAACzD,EAAE,cAAciC,CAAC,EAAE,IAAIyB,GAAGf,GAAGS,CAAC,EAAE,GAAG,CAACM,GAAG,MAAM,IAAI1D,EAAE,WAAW,EAAE,EAAE,OAAO+B,GAAEoB,GAAEjG,EAAEwG,GAAGN,EAAEC,EAAC,EAAE,CAAC,IAAIK,GAAG,UAAU,EAAE,CAAC,EAAEzB,EAAE,WAAWJ,EAAEI,CAAC,CAAC,EAAEd,GAAG,CAACtB,EAAEC,IAAID,EAAEsC,GAAGhF,GAAE0C,EAAEC,CAAC,EAAE,GAAGmE,GAAE,CAAC,iBAAiB,EAAE,YAAYpE,EAAEC,EAAEQ,EAAE,CAAC,GAAGc,GAAE,MAAMtB,CAAC,EAAE,OAAOA,EAAE,IAAIS,EAAE,GAAGV,IAAI,KAAKU,EAAEP,EAAE,IAAI,MAAM,CAAC,IAAIS,EAAEwD,GAAE,gBAAgBpE,CAAC,EAAEU,EAAEE,EAAE,IAAI,CAAC,GAAGX,EAAE,QAAQ,EAAE,CAAC,GAAG,CAACQ,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOO,CAAC,CAAC,OAAOa,GAAE,MAAMb,EAAET,CAAC,CAAC,EAAE,OAAOD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEV,EAAEC,CAAC,EAAExC,EAAEgD,GAAG,CAAC,EAAEC,EAAE,IAAIjD,EAAEgD,EAAE,GAAG,CAAC,EAAEC,EAAE,KAAKhD,EAAE+C,EAAE,GAAG,CAAC,EAAEC,EAAE,MAAMjD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,IAAIjD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,IAAIjD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,KAAKU,GAAE,CAACV,EAAE,OAAO,GAAGS,GAAET,EAAE,KAAK,CAAC,KAAK,IAAIS,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAE,KAAKhD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,OAAO,IAAIE,EAAEF,EAAE,MAAM,QAAQ,EAAEG,EAAEH,EAAE,MAAM,QAAQ,EAAEI,EAAEJ,EAAE,MAAM,QAAQ,EAAE,OAAOU,GAAE,CAAC,KAAK,MAAMR,EAAE,GAAG,IAAI,GAAGO,GAAE,KAAK,MAAMP,EAAE,GAAG,EAAE,CAAC,KAAK,IAAIO,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE1D,EAAE+C,EAAE,IAAI,CAAC,EAAEG,EAAE,IAAI,IAAI,IAAIQ,GAAE,CAAC,KAAK,MAAMP,EAAE,GAAG,IAAI,GAAGM,GAAE,KAAK,MAAMN,EAAE,GAAG,EAAE,CAAC,KAAK,IAAIM,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE1D,EAAE+C,EAAE,IAAI,CAAC,EAAEI,EAAE,IAAI,IAAI,IAAIO,GAAE,CAAC,KAAK,MAAMN,EAAE,GAAG,IAAI,GAAGK,GAAE,KAAK,MAAML,EAAE,GAAG,EAAE,CAAC,KAAK,IAAIK,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE1D,EAAE+C,EAAE,IAAI,CAAC,EAAEK,EAAE,IAAI,IAAI,IAAIM,GAAE,CAACV,EAAE,MAAM,GAAGS,GAAET,EAAE,IAAI,CAAC,KAAK,IAAIS,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE,CAAC,EAAE,QAAQpB,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACT,EAAE,OAAOF,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,GAAGO,EAAE,EAAE,MAAO,GAAE,IAAIG,EAAEvD,GAAE,MAAM0C,EAAEA,EAAES,CAAC,EAAEN,EAAE,MAAMF,EAAEY,EAAED,EAAEH,EAAEC,CAAC,CAAC,EAAE,gBAAgBV,EAAE,CAAC,IAAIC,EAAEE,EAAE,iBAAiBH,CAAC,EAAE,OAAOC,CAAC,EAAE,QAAQ,OAAO,OAAOD,EAAE,CAAC,IAAIC,EAAEqB,GAAGtB,CAAC,EAAE,OAAOC,CAAC,CAAC,EAAE,SAASoE,GAAGrE,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,GAAGT,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAEQ,EAAE,GAAG,MAAM,IAAI,IAAIG,EAAET,EAAE,WAAWF,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEY,EAAED,EAAE,KAAK,GAAG,CAACC,EAAE,MAAM,IAAI,IAAIC,EAAE,GAAG,OAAOL,EAAE,IAAIK,GAAG,KAAKL,EAAE,IAAIK,GAAG,KAAKL,EAAE,IAAIK,GAAG,KAAKA,GAAGX,EAAE,gBAAgBU,EAAEC,CAAC,EAAE,GAAG,CAAC,OAAOqB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAImC,GAAG,IAAI,CAAC,IAAItE,EAAEvC,EAAE,CAAC2G,GAAE,SAAS,CAAC,EAAE,OAAOA,GAAE,SAAS,EAAEpE,CAAC,EAAEuE,GAAGD,GAAG,SAASE,GAAGxE,EAAEC,EAAEQ,EAAE,CAAC2D,GAAE,QAAQ3D,EAAE,GAAG,CAAC,IAAIC,EAAE0D,GAAE,gBAAgBpE,CAAC,EAAE,OAAOC,EAAE,CAAC,IAAK,GAAE,CAAC,IAAIW,EAAE0D,GAAG,EAAE,GAAG1D,EAAE,EAAE,MAAM,IAAI,KAAKT,EAAE,QAAQS,CAAC,GAAGA,IAAI,IAAIC,EAAE,OAAOA,EAAEV,EAAE,UAAUO,EAAEE,CAAC,EAAEC,EAAE,EAAE,CAAC,IAAK,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,OAAOH,EAAE,MAAM,IAAK,GAAE,CAAC,IAAIE,EAAE0D,GAAG,EAAE,OAAO5D,EAAE,OAAOE,EAAE,CAAC,CAAC,IAAK,IAAG,CAAC,IAAIA,EAAE2D,GAAG,EAAEzD,EAAE,EAAE,OAAOvD,GAAEqD,EAAEE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAK,IAAG,IAAK,IAAG,MAAO,EAAC,CAAC,MAAM,GAAG,OAAOqB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASsC,GAAGzE,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIQ,EAAE2D,GAAE,gBAAgBpE,CAAC,EAAE,OAAOoE,GAAE,OAAOjE,EAAE,KAAKM,EAAE,KAAKR,CAAC,CAAC,OAAOS,EAAE,CAAC,GAAG,OAAOP,EAAE,KAAKO,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASgE,GAAG1E,EAAEC,EAAEQ,EAAE,CAAC2D,GAAE,QAAQ3D,EAAE,GAAG,CAAC,IAAIC,EAAE0D,GAAE,gBAAgBpE,CAAC,EAAE,OAAOC,EAAE,CAAC,IAAK,OAAM,OAAOS,EAAE,IAAI,EAAE,IAAI,IAAK,OAAM,CAAC,GAAG,CAACA,EAAE,IAAI,MAAM,IAAI,GAAGA,EAAE,IAAI,IAAI,aAAa,CAAC,IAAIE,EAAEF,EAAE,IAAI,IAAI,aAAaA,CAAC,EAAEG,EAAE0D,GAAG,EAAE9G,EAAEoD,GAAG,CAAC,EAAED,EAAE,SAAS,EAAEnD,EAAEoD,EAAE,GAAG,CAAC,EAAED,EAAE,SAAS,EAAEnD,EAAEoD,EAAE,GAAG,CAAC,EAAED,EAAE,SAAS,EAAEnD,EAAEoD,EAAE,IAAI,CAAC,EAAED,EAAE,SAAS,EAAE,QAAQE,EAAE,EAAEA,EAAE,GAAGA,IAAIzD,EAAEwD,EAAEC,EAAE,EAAE,EAAEF,EAAE,KAAKE,CAAC,GAAG,EAAE,MAAO,EAAC,CAAC,MAAO,EAAC,CAAC,IAAK,OAAM,IAAK,OAAM,IAAK,OAAM,OAAOJ,EAAE,IAAI,EAAE,IAAI,IAAK,OAAM,IAAK,OAAM,IAAK,OAAM,CAAC,GAAG,CAACA,EAAE,IAAI,MAAM,IAAI,GAAGA,EAAE,IAAI,IAAI,aAAa,CAAC,QAAQG,EAAE0D,GAAG,EAAEpC,EAAE1E,EAAEoD,GAAG,CAAC,EAAEuB,EAAE3E,EAAEoD,EAAE,GAAG,CAAC,EAAEmB,EAAEvE,EAAEoD,EAAE,GAAG,CAAC,EAAEoB,GAAExE,EAAEoD,EAAE,IAAI,CAAC,EAAEqB,GAAE,CAAC,EAAEpB,EAAE,EAAEA,EAAE,GAAGA,IAAIoB,GAAE,KAAK7E,EAAEwD,EAAEC,EAAE,EAAE,CAAC,EAAE,OAAOJ,EAAE,IAAI,IAAI,aAAaA,EAAE,IAAIT,EAAE,CAAC,QAAQkC,EAAE,QAAQC,EAAE,QAAQJ,EAAE,QAAQC,GAAE,KAAKC,EAAC,CAAC,CAAC,CAAC,MAAO,EAAC,CAAC,IAAK,OAAM,CAAC,GAAG,CAACxB,EAAE,IAAI,MAAM,IAAI,IAAIG,EAAE0D,GAAG,EAAE,OAAO9G,EAAEoD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAK,OAAM,OAAOH,EAAE,IAAI,IAAI,IAAI,IAAK,OAAM,CAAC,IAAIG,EAAE0D,GAAG,EAAE,OAAOpE,EAAE,MAAMO,EAAET,EAAEY,CAAC,CAAC,CAAC,IAAK,OAAM,CAAC,GAAG,CAACH,EAAE,IAAI,MAAM,IAAI,GAAGA,EAAE,IAAI,IAAI,iBAAiB,CAAC,IAAI4C,GAAE5C,EAAE,IAAI,IAAI,iBAAiBA,EAAE,GAAG,EAAEG,EAAE0D,GAAG,EAAEhH,GAAEsD,GAAG,CAAC,EAAEyC,GAAE,CAAC,EAAE/F,GAAEsD,EAAE,GAAG,CAAC,EAAEyC,GAAE,CAAC,CAAC,CAAC,MAAO,EAAC,CAAC,IAAK,OAAM,OAAO5C,EAAE,IAAI,EAAE,IAAI,IAAK,OAAM,OAAOA,EAAE,IAAI,EAAE,IAAI,QAAQ,MAAM,GAAG,CAAC,OAAO6C,EAAE,CAAC,GAAG,OAAOpD,EAAE,KAAKoD,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASoB,GAAG3E,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAACT,EAAEmE,GAAE,OAAOnE,CAAC,EAAE,IAAIW,EAAEF,EAAE,IAAIG,EAAEH,EAAE,KAAK,OAAOA,EAAEA,EAAE,MAAMT,EAAEmE,GAAE,YAAYpE,EAAEC,EAAEY,CAAC,EAAEuD,GAAE,OAAOxD,EAAET,EAAE,MAAMA,EAAE,KAAKF,EAAEQ,CAAC,CAAC,OAAOK,EAAE,CAAC,GAAG,OAAOX,EAAE,KAAKW,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAAS8D,GAAG5E,EAAEC,EAAEQ,EAAEC,EAAE,CAAC0D,GAAE,QAAQ1D,EAAE,GAAG,CAACT,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAE,IAAIW,EAAEF,EAAE4D,GAAG,EAAE,EAAE,OAAOnE,EAAE,KAAKF,EAAEQ,EAAEG,CAAC,EAAE,EAAE,OAAOC,EAAE,CAAC,GAAG,OAAOV,EAAE,KAAKU,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAIgE,GAAG,CAAC7E,EAAEC,EAAEQ,IAAIgC,GAAGzC,EAAE1C,GAAE2C,EAAEQ,CAAC,EAAE,SAASqE,GAAG9E,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,GAAGT,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAES,GAAG,EAAE,MAAM,IAAI,IAAIE,EAAET,EAAE,SAASF,CAAC,EAAEY,EAAE,KAAK,IAAIH,EAAE8B,GAAG5B,CAAC,CAAC,EAAEE,EAAEzD,EAAEoD,EAAEI,CAAC,EAAE,OAAOgE,GAAGjE,EAAEH,EAAEC,EAAE,CAAC,EAAErD,EAAEoD,EAAEI,CAAC,EAAEC,EAAED,CAAC,OAAOsB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAAS4C,GAAG/E,EAAE,CAAC,GAAG,CAAC,OAAOA,EAAEoE,GAAE,OAAOpE,CAAC,EAAEG,EAAE,MAAMH,CAAC,EAAE,CAAC,OAAOC,EAAE,CAAC,GAAG,OAAOE,EAAE,KAAKF,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAAS+E,GAAGhF,EAAEC,EAAE,CAAC,GAAG,CAAC,OAAOD,EAAEoE,GAAE,OAAOpE,CAAC,EAAEoE,GAAE,OAAOjE,EAAE,KAAKH,EAAEC,CAAC,CAAC,OAAOQ,EAAE,CAAC,GAAG,OAAON,EAAE,KAAKM,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASwE,GAAGjF,EAAEC,EAAEQ,EAAE,CAAC,GAAG,CAAC,OAAOR,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAEQ,IAAI,EAAEN,EAAE,OAAOF,CAAC,EAAEQ,IAAI,IAAIN,EAAE,MAAMF,CAAC,EAAET,GAAG,kCAAkC,EAAE,CAAC,OAAOkB,EAAE,CAAC,GAAG,OAAOP,EAAE,KAAKO,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAIwE,GAAG,IAAI1F,GAAG,EAAE,EAAE2F,GAAG,EAAEC,GAAG,IAAID,GAAGE,GAAG,CAACrF,EAAEC,EAAEQ,IAAInD,GAAE,WAAW0C,EAAEC,EAAEA,EAAEQ,CAAC,EAAE6E,GAAG,CAACtF,EAAEC,IAAIA,EAAE,UAAU,EAAE,QAAQ,CAAC,CAACD,GAAGA,IAAI,GAAGC,EAAE,WAAW,IAAI,SAASsF,GAAGvF,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAEC,EAAEqB,EAAE,CAAC,IAAIC,EAAEkD,GAAG1E,EAAEC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAMuB,CAAC,EAAE,MAAO,IAAG,IAAIJ,EAAEoC,GAAE,gBAAgB1D,CAAC,EAAEuB,GAAE9B,EAAE,KAAK6B,EAAEhC,EAAEoC,EAAEnC,EAAEQ,CAAC,EAAEyB,GAAED,GAAE,IAAI,OAAOxE,EAAEqD,GAAG,CAAC,EAAEmB,GAAE,UAAUvE,EAAEyE,GAAG,CAAC,EAAED,GAAE,CAAC,OAAOoB,GAAE,CAAC,GAAG,OAAOnD,EAAE,KAAKmD,GAAE,OAAO,aAAa,MAAMA,GAAE,MAAM,CAACA,GAAE,KAAK,CAAC,CAAC,SAASkC,GAAGxF,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAEC,EAAE,CAAC,IAAIqB,EAAEmD,GAAGzE,EAAEC,CAAC,EAAE,GAAG,CAAC,IAAIsB,EAAEgC,GAAE,gBAAgBxD,CAAC,EAAEH,EAAE,GAAG2D,GAAE,QAAQpE,EAAEoC,EAAEnC,EAAES,EAAEyB,CAAC,CAAC,OAAOH,EAAE,CAAC,GAAG,OAAO7B,EAAE,KAAK6B,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAIyD,GAAG,CAACzF,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,IAAIE,EAAE,IAAI,KAAK,EAAE,YAAY,EAAEC,EAAE,IAAI,KAAKD,EAAE,EAAE,CAAC,EAAEE,EAAE,IAAI,KAAKF,EAAE,EAAE,CAAC,EAAEuB,EAAEtB,EAAE,kBAAkB,EAAEuB,EAAEtB,EAAE,kBAAkB,EAAEkB,EAAE,KAAK,IAAIG,EAAEC,CAAC,EAAE1E,EAAEsC,GAAG,CAAC,EAAEgC,EAAE,GAAGvE,EAAEwC,GAAG,CAAC,EAAE,EAAEkC,GAAGC,GAAG,IAAIH,GAAEsB,GAAG,CAAC,IAAIC,GAAED,GAAG,EAAE,IAAI,IAAIE,GAAG,KAAK,IAAIF,CAAC,EAAEK,EAAG,OAAO,KAAK,MAAMH,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAEI,GAAG,OAAOJ,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAMD,EAAC,GAAGI,CAAE,GAAGC,EAAE,EAAE,EAAE3B,GAAED,GAAEE,CAAC,EAAEmB,GAAErB,GAAEG,CAAC,EAAEA,EAAED,GAAG0C,GAAG3C,GAAEzB,EAAE,EAAE,EAAEoE,GAAGvB,GAAE5C,EAAE,EAAE,IAAImE,GAAG3C,GAAExB,EAAE,EAAE,EAAEmE,GAAGvB,GAAE7C,EAAE,EAAE,EAAE,EAAEiF,GAAG,CAAC,EAAEC,GAAG,CAAC3F,EAAEC,IAAI,CAACyF,GAAG,OAAO,EAAE,QAAQjF,EAAEA,EAAEnD,GAAE0C,GAAG,GAAG,CAAC,IAAIU,EAAED,GAAG,IAAIC,GAAGD,GAAG,IAAIR,GAAGS,GAAGT,EAAE,EAAE,EAAE,EAAEyF,GAAG,KAAKjF,GAAG,IAAI/C,EAAEuC,GAAG,CAAC,EAAEQ,GAAG,IAAIhD,EAAEwC,GAAG,CAAC,EAAErC,GAAGqC,GAAG,CAAC,CAAC,EAAEA,GAAGS,EAAE,EAAE,CAAC,CAAC,OAAOgF,EAAE,EAAEE,GAAG,CAAC5F,EAAEC,EAAEQ,IAAI,CAAC,IAAIC,EAAEiF,GAAG1F,EAAEQ,CAAC,EAAE,OAAOY,GAAGrB,CAAC,EAAE,GAAGU,CAAC,CAAC,EAAEmF,GAAG,CAAC7F,EAAEC,EAAEQ,IAAImF,GAAG5F,EAAEC,EAAEQ,CAAC,EAAEqF,GAAG,IAAI,KAAK,IAAI,EAAEC,GAAG,IAAI,WAAWC,GAAGhG,GAAG,CAAC,IAAIC,EAAEhD,EAAE,OAAOwD,GAAGT,EAAEC,EAAE,WAAW,OAAO,MAAM,EAAE,GAAG,CAAC,OAAOhD,EAAE,KAAKwD,CAAC,EAAE5C,GAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAEoI,GAAGjG,GAAG,CAAC,IAAIC,EAAE3C,GAAE,OAAO0C,KAAK,EAAE,IAAIS,EAAEsF,GAAG,EAAE,GAAG/F,EAAES,EAAE,MAAM,GAAG,QAAQC,EAAE,EAAEA,GAAG,EAAEA,GAAG,EAAE,CAAC,IAAIE,EAAEX,GAAG,EAAE,GAAGS,GAAGE,EAAE,KAAK,IAAIA,EAAEZ,EAAE,SAAS,EAAE,IAAIa,EAAE,KAAK,IAAIJ,EAAEoC,GAAG,KAAK,IAAI7C,EAAEY,CAAC,EAAE,KAAK,CAAC,EAAEE,EAAEkF,GAAGnF,CAAC,EAAE,GAAGC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAEoF,GAAG,CAAC,EAAEC,GAAG,IAAI7J,GAAG,iBAAiB8J,GAAG,IAAI,CAAC,GAAG,CAACA,GAAG,QAAQ,CAAC,IAAIpG,GAAG,OAAO,WAAW,UAAU,UAAU,WAAW,UAAU,UAAU,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,EAAE,SAASC,EAAE,CAAC,KAAK,WAAW,QAAQ,WAAW,KAAK,IAAI,IAAI,IAAI,KAAK,iBAAiB,KAAKD,EAAE,EAAEmG,GAAG,CAAC,EAAE,QAAQ1F,KAAKyF,GAAGA,GAAGzF,CAAC,IAAI,OAAO,OAAOR,EAAEQ,CAAC,EAAER,EAAEQ,CAAC,EAAEyF,GAAGzF,CAAC,EAAE,IAAIC,EAAE,CAAC,EAAE,QAAQD,KAAKR,EAAES,EAAE,KAAK,GAAGD,CAAC,IAAIR,EAAEQ,CAAC,CAAC,EAAE,EAAE2F,GAAG,QAAQ1F,CAAC,CAAC,OAAO0F,GAAG,OAAO,EAAEC,GAAG,CAACrG,EAAEC,IAAI,CAAC,QAAQQ,EAAE,EAAEA,EAAET,EAAE,OAAO,EAAES,EAAEpD,EAAE4C,GAAG,EAAED,EAAE,WAAWS,CAAC,EAAEpD,EAAE4C,CAAC,EAAE,CAAC,EAAEqG,GAAG,CAACtG,EAAEC,IAAI,CAAC,IAAIQ,EAAE,EAAE,OAAO2F,GAAG,EAAE,QAAQ,CAAC1F,EAAEE,IAAI,CAAC,IAAIC,EAAEZ,EAAEQ,EAAE/C,EAAEsC,EAAEY,EAAE,GAAG,CAAC,EAAEC,EAAEwF,GAAG3F,EAAEG,CAAC,EAAEJ,GAAGC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE6F,GAAG,CAACvG,EAAEC,IAAI,CAAC,IAAIQ,EAAE2F,GAAG,EAAE1I,EAAEsC,GAAG,CAAC,EAAES,EAAE,OAAO,IAAIC,EAAE,EAAE,OAAOD,EAAE,QAAQG,GAAGF,GAAGE,EAAE,OAAO,CAAC,EAAElD,EAAEuC,GAAG,CAAC,EAAES,EAAE,CAAC,EAAE8F,GAAG,IAAI,GAAGC,GAAGzG,GAAG,CAAC7C,EAAG6C,EAAEwG,GAAG,IAAItJ,EAAE,IAAIX,EAAEyD,EAAE,IAAIwB,GAAGxB,CAAC,CAAC,CAAC,EAAE0G,GAAG,CAAC1G,EAAEC,IAAI,CAAC9C,EAAG6C,EAAEyG,GAAGzG,CAAC,CAAC,EAAE2G,GAAGD,GAAG,SAASE,GAAG5G,EAAE,CAAC,GAAG,CAAC,IAAIC,EAAEmE,GAAE,gBAAgBpE,CAAC,EAAE,OAAOG,EAAE,MAAMF,CAAC,EAAE,CAAC,OAAOQ,EAAE,CAAC,GAAG,OAAON,EAAE,KAAKM,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAAC,IAAIoG,GAAG,CAAC7G,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,QAAQE,EAAE,EAAEC,EAAE,EAAEA,EAAEJ,EAAEI,IAAI,CAAC,IAAIC,EAAEpD,EAAEuC,GAAG,CAAC,EAAEkC,EAAEzE,EAAEuC,EAAE,GAAG,CAAC,EAAEA,GAAG,EAAE,IAAImC,EAAEjC,EAAE,KAAKH,EAAE3C,EAAEyD,EAAEqB,EAAEzB,CAAC,EAAE,GAAG0B,EAAE,EAAE,MAAM,GAAG,GAAGxB,GAAGwB,EAAEA,EAAED,EAAE,MAAM,OAAOzB,EAAE,MAAMA,GAAG0B,EAAE,CAAC,OAAOxB,CAAC,EAAE,SAASkG,GAAG9G,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIE,EAAEwD,GAAE,gBAAgBpE,CAAC,EAAEa,EAAEgG,GAAGjG,EAAEX,EAAEQ,CAAC,EAAE,OAAO/C,EAAEgD,GAAG,CAAC,EAAEG,EAAE,CAAC,OAAOC,EAAE,CAAC,GAAG,OAAOX,EAAE,KAAKW,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAAC,SAASiG,GAAG/G,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEyE,GAAGrF,EAAEQ,CAAC,EAAE,GAAG,CAAC,GAAG,MAAMI,CAAC,EAAE,MAAO,IAAG,IAAIC,EAAEsD,GAAE,gBAAgBpE,CAAC,EAAE,OAAOG,EAAE,OAAOW,EAAED,EAAEH,CAAC,EAAEU,GAAE,CAACN,EAAE,WAAW,GAAGK,GAAEL,EAAE,SAAS,CAAC,KAAK,IAAIK,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEmD,GAAG,CAAC,EAAEQ,GAAE,CAAC,EAAE3D,EAAEmD,EAAE,GAAG,CAAC,EAAEQ,GAAE,CAAC,EAAEN,EAAE,UAAUD,IAAI,GAAGH,IAAI,IAAII,EAAE,SAAS,MAAM,CAAC,OAAOqB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAAC,IAAI6E,GAAG,CAAChH,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,QAAQE,EAAE,EAAEC,EAAE,EAAEA,EAAEJ,EAAEI,IAAI,CAAC,IAAIC,EAAEpD,EAAEuC,GAAG,CAAC,EAAEkC,EAAEzE,EAAEuC,EAAE,GAAG,CAAC,EAAEA,GAAG,EAAE,IAAImC,EAAEjC,EAAE,MAAMH,EAAE3C,EAAEyD,EAAEqB,EAAEzB,CAAC,EAAE,GAAG0B,EAAE,EAAE,MAAM,GAAG,GAAGxB,GAAGwB,EAAEA,EAAED,EAAE,MAAM,OAAOzB,EAAE,MAAMA,GAAG0B,EAAE,CAAC,OAAOxB,CAAC,EAAE,SAASqG,GAAGjH,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIE,EAAEwD,GAAE,gBAAgBpE,CAAC,EAAEa,EAAEmG,GAAGpG,EAAEX,EAAEQ,CAAC,EAAE,OAAO/C,EAAEgD,GAAG,CAAC,EAAEG,EAAE,CAAC,OAAOC,EAAE,CAAC,GAAG,OAAOX,EAAE,KAAKW,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAACX,EAAE,oBAAoBkD,GAAGlD,EAAE,WAAW,EAAE6C,EAAE,kBAAkB,IAAI7C,EAAE,WAAW,EAAE,EAAE6C,EAAE,kBAAkB,MAAM,4BAA4B,IAAIhC,GAAG,CAAC,EAAEY,GAAG,EAAEyC,GAAG,EAAEG,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEI,GAAG,EAAEC,GAAG,EAAEG,GAAG,EAAEK,GAAG,EAAEC,GAAG,EAAEI,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEE,EAAE,EAAE/F,GAAED,GAAG,EAAEiG,GAAG,KAAKA,GAAGhG,GAAE,GAAG,EAAEiG,GAAG1L,EAAE,aAAauE,IAAImH,GAAG1L,EAAE,aAAayF,GAAE,GAAGlB,CAAC,EAAEoH,GAAG3L,EAAE,MAAMuE,IAAIoH,GAAG3L,EAAE,MAAMyF,GAAE,GAAGlB,CAAC,EAAEqH,GAAG5L,EAAE,eAAeuE,IAAIqH,GAAG5L,EAAE,eAAeyF,GAAE,GAAGlB,CAAC,EAAEsH,GAAG7L,EAAE,QAAQuE,IAAIsH,GAAG7L,EAAE,QAAQyF,GAAE,GAAGlB,CAAC,EAAEuH,GAAG9L,EAAE,uCAAuCuE,IAAIuH,GAAG9L,EAAE,uCAAuCyF,GAAE,GAAGlB,CAAC,EAAEwH,GAAG/L,EAAE,qCAAqC,CAACuE,EAAEC,KAAKuH,GAAG/L,EAAE,qCAAqCyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEwH,GAAGhM,EAAE,oCAAoC,KAAKgM,GAAGhM,EAAE,oCAAoCyF,GAAE,GAAG,EAAEwG,GAAGjM,EAAE,sCAAsC,KAAKiM,GAAGjM,EAAE,sCAAsCyF,GAAE,GAAG,EAAEyG,GAAGlM,EAAE,uCAAuC,CAACuE,EAAEC,EAAEQ,KAAKkH,GAAGlM,EAAE,uCAAuCyF,GAAE,GAAGlB,EAAEC,EAAEQ,CAAC,EAAEmH,GAAGnM,EAAE,mCAAmC,CAACuE,EAAEC,EAAEQ,EAAEC,KAAKkH,GAAGnM,EAAE,mCAAmCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,CAAC,EAAEmH,GAAGpM,EAAE,oCAAoC,CAACuE,EAAEC,EAAEQ,EAAEC,KAAKmH,GAAGpM,EAAE,oCAAoCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,CAAC,EAAEoH,GAAGrM,EAAE,iCAAiC,CAACuE,EAAEC,EAAEQ,EAAEC,KAAKoH,GAAGrM,EAAE,iCAAiCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,CAAC,EAAEqH,GAAGtM,EAAE,sCAAsC,CAACuE,EAAEC,EAAEQ,EAAEC,EAAEE,KAAKmH,GAAGtM,EAAE,sCAAsCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,EAAEoH,GAAGvM,EAAE,8CAA8CuE,IAAIgI,GAAGvM,EAAE,8CAA8CyF,GAAE,GAAGlB,CAAC,EAAEiI,GAAGxM,EAAE,8CAA8C,CAACuE,EAAEC,KAAKgI,GAAGxM,EAAE,8CAA8CyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEiI,GAAGzM,EAAE,gDAAgDuE,IAAIkI,GAAGzM,EAAE,gDAAgDyF,GAAE,GAAGlB,CAAC,EAAEmI,GAAG1M,EAAE,gDAAgD,CAACuE,EAAEC,KAAKkI,GAAG1M,EAAE,gDAAgDyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEmI,GAAG3M,EAAE,gDAAgDuE,IAAIoI,GAAG3M,EAAE,gDAAgDyF,GAAE,GAAGlB,CAAC,EAAEqI,GAAG5M,EAAE,gDAAgD,CAACuE,EAAEC,KAAKoI,GAAG5M,EAAE,gDAAgDyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEqI,GAAG7M,EAAE,yCAAyCuE,IAAIsI,GAAG7M,EAAE,yCAAyCyF,GAAE,GAAGlB,CAAC,EAAEuI,GAAG9M,EAAE,yCAAyC,CAACuE,EAAEC,KAAKsI,GAAG9M,EAAE,yCAAyCyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEuI,GAAG/M,EAAE,yCAAyCuE,IAAIwI,GAAG/M,EAAE,yCAAyCyF,GAAE,GAAGlB,CAAC,EAAEyI,GAAGhN,EAAE,yCAAyC,CAACuE,EAAEC,KAAKwI,GAAGhN,EAAE,yCAAyCyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEyI,GAAGjN,EAAE,wCAAwCuE,IAAI0I,GAAGjN,EAAE,wCAAwCyF,GAAE,GAAGlB,CAAC,EAAE+C,GAAG,CAAC/C,EAAEC,KAAK8C,GAAG7B,GAAE,IAAIlB,EAAEC,CAAC,EAAExE,EAAE,aAAa6F,GAAG,IAAIqH,GAAGvJ,GAAG,SAASY,GAAG,CAAC2I,IAAIC,GAAG,EAAED,KAAKvJ,GAAGY,EAAE,EAAE,SAAS4I,IAAI,CAAC,GAAG1J,GAAG,IAAIJ,GAAG,EAAEI,GAAG,GAAG,OAAO,SAASc,GAAG,CAAC2I,KAAKA,GAAG,GAAGlN,EAAE,UAAU,GAAG,CAACyB,IAAI6B,GAAG,EAAEhD,EAAEN,CAAC,EAAEuD,GAAG,GAAG,CAACgB,EAAE,CAAC,CAAC4I,GAAG,EAAE,SAASC,IAAI,CAAC,CAACA,GAAG,UAAU,OAAO,OAAOA,GAAG,SAAS,EAAEA,GAAG,UAAU,YAAYA,GAAGA,GAAG,UAAU,UAAUA,GAAGA,GAAG,UAAU,CAAC,EAAEpN,EAAE,cAAcoN,GAAG,SAASC,GAAG9I,EAAE,CAAC,OAAOA,GAAG6I,IAAI,SAAS,CAACpN,EAAE,SAASqN,GAAG,SAASC,GAAG/I,EAAEC,EAAE,CAAC,IAAIQ,EAAEqI,GAAG7I,CAAC,EAAES,EAAED,EAAET,CAAC,EAAE,OAAOU,IAAIA,EAAE,OAAO,QAAQT,GAAG4I,IAAI,SAAS,EAAEnI,EAAE,IAAIV,EAAES,EAAET,CAAC,EAAEU,EAAE,CAACjF,EAAE,YAAYsN,GAAG,SAASC,GAAGhJ,EAAEC,EAAE,CAAC,OAAO8I,GAAG/I,EAAE,IAAIC,CAAC,CAAC,CAACxE,EAAE,WAAWuN,GAAGvN,EAAE,KAAKsN,GAAG,CAAC,EAAE,SAASE,GAAGjJ,EAAE,CAAC,GAAG,CAACA,EAAE,YAAY,KAAK,8DAA8DA,EAAE,YAAY,EAAE,OAAO8I,GAAG9I,EAAE,SAAS,EAAEA,EAAE,GAAG,CAAC,CAACvE,EAAE,QAAQwN,GAAG,SAASC,GAAGlJ,EAAEC,EAAE,CAAC,OAAOD,EAAE,MAAMC,EAAE,GAAG,CAACxE,EAAE,QAAQyN,GAAG,SAASC,GAAGnJ,EAAE,CAAC,OAAOA,EAAE,GAAG,CAACvE,EAAE,WAAW0N,GAAG,SAASC,GAAGpJ,EAAE,CAAC,OAAOA,EAAE,SAAS,CAACvE,EAAE,SAAS2N,GAAG,IAAIC,GAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,GAAGA,GAAE,OAAO,CAAC,QAAQrJ,EAAE,EAAEA,EAAEqJ,GAAE,MAAM,OAAOrJ,IAAIvE,EAAE,aAAa4N,GAAE,MAAMrJ,CAAC,CAAC,EAAEqJ,GAAE,MAAM,OAAO,EAAE5N,EAAE,aAAa4N,GAAE,MAAM,EAAEA,GAAE,OAAO,EAAEA,GAAE,MAAMA,GAAE,OAAOA,GAAE,OAAO,CAAC,CAACA,GAAE,SAASA,GAAE,MAAM,IAAIA,GAAE,OAAO5N,EAAE,eAAe4N,GAAE,IAAI,EAAEjM,EAAEiM,GAAE,MAAM,GAAGA,GAAE,IAAI,CAAC,EAAE,MAAMrJ,EAAEC,EAAE,CAAC7C,EAAEiM,GAAE,MAAM,EAAE,IAAI5I,EAAER,EAAE,kBAAkBS,EAAEV,EAAE,OAAOS,EAAEC,EAAEmC,GAAGnC,EAAE,CAAC,EAAE,IAAIE,EAAE,OAAOyI,GAAE,IAAI3I,GAAG2I,GAAE,MAAMjM,EAAEsD,EAAE,CAAC,EAAE2I,GAAE,QAAQ3I,EAAEE,EAAEnF,EAAE,eAAeiF,CAAC,EAAE2I,GAAE,MAAM,KAAKzI,CAAC,IAAIA,EAAEyI,GAAE,OAAOA,GAAE,IAAIA,GAAE,KAAK3I,GAAGE,CAAC,EAAE,KAAKZ,EAAEC,EAAEQ,EAAE,CAACA,GAAGR,EAAE,kBAAkB,QAAQS,EAAE,EAAEA,EAAEV,EAAE,OAAOU,IAAIT,EAAEQ,EAAEC,CAAC,EAAEV,EAAEU,CAAC,CAAC,CAAC,EAAE,SAAS4I,GAAGtJ,EAAE,CAAC,GAAG,OAAOA,GAAG,SAAS,CAAC,IAAIC,EAAEyC,GAAG1C,CAAC,EAAES,EAAE4I,GAAE,MAAMpJ,EAAE5C,CAAC,EAAE,OAAOgM,GAAE,KAAKpJ,EAAE5C,EAAEoD,CAAC,EAAEA,CAAC,CAAC,OAAOT,CAAC,CAAC,SAASuJ,IAAI,CAAC,KAAK,mDAAmD,CAACA,GAAG,UAAU,OAAO,OAAOV,GAAG,SAAS,EAAEU,GAAG,UAAU,YAAYA,GAAGA,GAAG,UAAU,UAAUA,GAAGA,GAAG,UAAU,CAAC,EAAE9N,EAAE,QAAQ8N,GAAGA,GAAG,UAAU,YAAYA,GAAG,UAAU,YAAY,UAAU,CAAC,IAAIvJ,EAAE,KAAK,IAAIuH,GAAGvH,CAAC,CAAC,EAAE,SAASwJ,EAAExJ,EAAEC,EAAE,CAACD,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAK,KAAK,IAAIuH,GAAGxH,EAAEC,CAAC,EAAE6I,GAAGU,CAAC,EAAE,KAAK,GAAG,EAAE,IAAI,CAAC,OAAOA,EAAE,UAAU,OAAO,OAAOX,GAAG,SAAS,EAAEW,EAAE,UAAU,YAAYA,EAAEA,EAAE,UAAU,UAAUA,EAAEA,EAAE,UAAU,CAAC,EAAE/N,EAAE,SAAS+N,EAAEA,EAAE,UAAU,QAAQA,EAAE,UAAU,QAAQ,UAAU,CAAC,OAAOlI,GAAGmG,GAAG,CAAC,CAAC,EAAE+B,EAAE,UAAU,UAAUA,EAAE,UAAU,UAAU,UAAU,CAAC,OAAOlI,GAAGoG,GAAG,CAAC,CAAC,EAAE8B,EAAE,UAAU,WAAWA,EAAE,UAAU,WAAW,SAASxJ,EAAEC,EAAE,CAAC,IAAIQ,EAAE,KAAK,IAAI4I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEqJ,GAAGrJ,CAAC,EAAE0H,GAAGlH,EAAET,EAAEC,CAAC,CAAC,EAAEuJ,EAAE,UAAU,OAAOA,EAAE,UAAU,OAAO,SAASxJ,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAI,OAAO2I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEqJ,GAAGrJ,CAAC,EAAEQ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAE6I,GAAG7I,CAAC,EAAEa,GAAGsG,GAAGlH,EAAEV,EAAEC,EAAEQ,CAAC,CAAC,CAAC,EAAE+I,EAAE,UAAU,QAAQA,EAAE,UAAU,QAAQ,SAASxJ,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAI,OAAO2I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKQ,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAK,CAAC,CAACoH,GAAGnH,EAAEV,EAAEC,EAAEQ,CAAC,CAAC,EAAE+I,EAAE,UAAU,KAAKA,EAAE,UAAU,KAAK,SAASxJ,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAI2I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKQ,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKqH,GAAGpH,EAAEV,EAAEC,EAAEQ,CAAC,CAAC,EAAE+I,EAAE,UAAU,UAAUA,EAAE,UAAU,UAAU,SAASxJ,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,KAAK,IAAI,OAAOyI,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKQ,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKY,GAAGyG,GAAGnH,EAAEZ,EAAEC,EAAEQ,EAAEC,CAAC,CAAC,CAAC,EAAE8I,EAAE,UAAU,kBAAkBA,EAAE,UAAU,kBAAkB,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAG0G,GAAGhI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,kBAAkBA,EAAE,UAAU,kBAAkB,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEiI,GAAGhI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,gBAAgB,CAAC,IAAIA,EAAE,UAAU,kBAAkB,IAAIA,EAAE,UAAU,iBAAiB,CAAC,EAAEA,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAG4G,GAAGlI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEmI,GAAGlI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,kBAAkB,CAAC,IAAIA,EAAE,UAAU,oBAAoB,IAAIA,EAAE,UAAU,mBAAmB,CAAC,EAAEA,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOoI,GAAGpI,CAAC,CAAC,EAAEwJ,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAID,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKqI,GAAGpI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,kBAAkB,CAAC,IAAIA,EAAE,UAAU,oBAAoB,IAAIA,EAAE,UAAU,mBAAmB,CAAC,EAAEA,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAGgH,GAAGtI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEuI,GAAGtI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,WAAW,CAAC,IAAIA,EAAE,UAAU,aAAa,IAAIA,EAAE,UAAU,YAAY,CAAC,EAAEA,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAGkH,GAAGxI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEyI,GAAGxI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,WAAW,CAAC,IAAIA,EAAE,UAAU,aAAa,IAAIA,EAAE,UAAU,YAAY,CAAC,EAAEA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAY,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI0I,GAAG1I,CAAC,CAAC,EAAExE,EAAEW,EAAEX,CAAC,CAAC,GAAG,EAAEiO,GAAG1J,GAAO2J,GAAG,8FAA8F,SAASC,GAAGrO,EAAE,CAAC,IAAIC,EAAED,EAAE,OAAOE,EAAE,CAAC,EAAEC,EAAE,EAAEM,EAAE,EAAEG,EAAE,GAAG,QAAQC,EAAE,EAAEA,EAAEZ,EAAEY,IAAI,CAAC,IAAIC,EAAEsN,GAAG,QAAQpO,EAAEa,CAAC,CAAC,EAAE,GAAGC,IAAI,GAAG,GAAGF,EAAE,EAAEA,EAAEE,MAAM,CAACF,GAAGE,EAAE,GAAGX,GAAGS,GAAGH,EAAEA,IAAIG,EAAE,MAAM,GAAG,GAAG,GAAG,GAAGV,EAAE,KAAKC,EAAE,GAAG,EAAEA,IAAI,EAAEM,GAAG,QAAQA,EAAE,GAAGG,EAAE,EAAE,CAAC,CAAC,OAAOA,EAAE,IAAIV,EAAE,MAAMC,EAAES,GAAGH,GAAG,GAAG,EAAE,IAAI,WAAWP,CAAC,CAAC,CAAC,IAAIoO,GAAG,s8xpBAAs8xpBC,GAAGC,GAAG,SAASC,IAAI,CAAC,OAAOD,KAAKA,GAAGhK,GAAG6J,GAAGC,EAAE,CAAC,GAAGC,KAAKA,GAAGJ,GAAG,CAAC,WAAWK,GAAG,WAAW,MAAM,CAAC,GAAGD,EAAE,CAAC,SAASG,IAAI,CAACH,KAAKA,GAAG,OAAO,CAAC,SAASI,GAAG3O,EAAE,CAAC,MAAM,CAAC,KAAKA,EAAE,KAAK,KAAK;AAAA;AAAA,cAEp2gtBA,EAAE,KAAK,aAAaA,EAAE,MAAM,UAAU,CAAC,CAAC,SAAS4O,GAAG5O,EAAE,CAAC,OAAOA,EAAE,IAAI2O,EAAE,CAAC,CAAC,SAASE,GAAG7O,EAAEC,EAAE,CAAC,IAAIC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,GAAGD,CAAC,EAAE,CAAC,GAAGC,EAAE,MAAM,GAAG0O,GAAG1O,EAAE,MAAM,CAAC,EAAE,QAAQC,GAAGH,EAAE,WAAWG,EAAE,KAAKA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI2O,GAAG,MAAM9O,EAAC,CAAC,YAAYC,EAAE,CAAC,KAAK,QAAQA,CAAC,CAAC,OAAO,MAAM,CAAC,OAAOwO,GAAG,EAAE,KAAKxO,GAAG,IAAID,GAAEC,CAAC,CAAC,CAAC,CAAC,OAAO,QAAQ,CAACyO,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,QAAQ,SAAS,UAAU,QAAQ,CAAC,CAAC,OAAOzO,EAAEC,EAAE,MAAMC,EAAE,MAAMM,EAAE,CAAC,GAAG,CAACR,EAAE,MAAM,GAAG,IAAIW,EAAE,IAAI,KAAK,QAAQ,SAASH,GAAG,QAAQ,EAAE,EAAEA,GAAG,IAAIA,GAAG,IAAI,CAAC,EAAEI,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC+N,GAAGjO,EAAEH,CAAC,EAAE,GAAG,CAACI,EAAED,EAAE,OAAOX,EAAEC,EAAEC,CAAC,CAAC,OAAOY,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEF,EAAE,UAAU,GAAGE,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQF,CAAC,CAAC,CAAC,GAAG,CAACC,GAAGC,EAAE,MAAMd,GAAE,OAAO,EAAE,IAAI,MAAMc,CAAC,EAAE,OAAOD,CAAC,CAAC,QAAQZ,EAAEC,EAAE,GAAGC,EAAE,GAAG,CAAC,GAAG,CAACF,EAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAIQ,EAAE,IAAI,KAAK,QAAQ,SAASG,EAAE,GAAGC,EAAE,EAAEC,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC,GAAG,CAACH,EAAEH,EAAE,QAAQR,EAAEC,EAAEC,CAAC,EAAEU,EAAEJ,EAAE,gBAAgBK,EAAEL,EAAE,eAAe,OAAOO,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEN,EAAE,UAAU,GAAGM,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQN,CAAC,CAAC,CAAC,GAAGM,EAAE,MAAMf,GAAE,OAAO,EAAE,IAAI,MAAMe,CAAC,EAAE,MAAM,CAAC,QAAQH,EAAE,QAAQC,EAAE,QAAQC,CAAC,CAAC,CAAC,KAAKb,EAAEC,EAAE,GAAGC,EAAE,GAAG,CAAC,GAAG,CAACF,EAAE,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,IAAIQ,EAAE,IAAI,KAAK,QAAQ,SAASG,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC,GAAG,CAACL,EAAE,KAAKR,EAAEC,EAAEC,CAAC,EAAES,EAAEH,EAAE,SAASI,EAAEJ,EAAE,QAAQ,OAAOM,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEL,EAAE,UAAU,GAAGK,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQL,CAAC,CAAC,CAAC,GAAG,CAACG,GAAGE,EAAE,MAAMd,GAAE,OAAO,EAAE,IAAI,MAAMc,CAAC,EAAE,MAAM,CAAC,IAAIF,EAAE,IAAIC,CAAC,CAAC,CAAC,UAAUZ,EAAEC,EAAE,EAAEC,EAAE,GAAGM,EAAE,EAAE,CAAC,GAAG,CAACR,EAAE,MAAM,GAAG,IAAIW,EAAE,IAAI,KAAK,QAAQ,SAASC,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC,GAAG,CAACD,EAAED,EAAE,UAAUX,EAAEC,EAAEC,EAAEM,CAAC,CAAC,OAAOM,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEF,EAAE,UAAU,GAAGE,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQF,CAAC,CAAC,CAAC,GAAG,CAACC,GAAGC,EAAE,MAAMd,GAAE,OAAO,EAAE,IAAI,MAAMc,CAAC,EAAE,OAAOD,CAAC,CAAC,MAAMZ,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,IAAIF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,MAAMC,CAAC,CAAC,CAAC,IAAIF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,MAAMC,CAAC,CAAC,CAAC,KAAKF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,OAAOC,CAAC,CAAC,CAAC,MAAMF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,MAAMF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,UAAUF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,YAAYC,CAAC,CAAC,CAAC,MAAMF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,IAAIF,EAAE,CAAC,OAAO,KAAK,OAAOA,EAAE,MAAM,KAAK,CAAC,CAAC,KAAKA,EAAE,CAAC,OAAO,KAAK,OAAOA,EAAE,MAAM,MAAM,CAAC,CAAC,ECMl8D,IAAM8O,GAAiD,CACrD,OAAQ,MACR,OAAQ,MACR,OAAQ,KACV,EACMC,GAAY,MAAMC,GAAS,KAAK,EAEtC,SAASC,GAAUC,EAAmC,CACpD,OAAQJ,GACNK,GAAQ,eAAeD,EAA4B,YAAY,CACjE,GAAK,KACP,CAEA,SAASE,GAAUF,EAAmC,CACpD,OAAOC,GAAQ,eAAeD,EAA4B,QAAQ,CACpE,CAEA,IAAMG,GAAiD,CACrDC,EACAJ,IAEAH,GAAU,OACRQ,GAAQD,EAAeJ,CAAQ,EAC/BD,GAAUC,CAAQ,EAClBE,GAAUF,CAAQ,CACpB,EAEKM,GAAQH,GCpBf,IAAMI,GACJ,0LACIC,GACJ,2CAEF,SAASC,GAAmBC,EAAoC,CAC9D,OAAOA,EAAmB,QAAQH,GAAwB,GAAG,CAC/D,CAMA,SAASI,GAAuBC,EAAgC,CAC9D,IAAIC,EAAeJ,GAAmBG,CAAc,EAEpD,OAAIC,EAAa,MAAML,EAAkC,IACvDK,EAAe,IAAID,CAAc,IAE5BC,CACT,CAcA,IAAOC,GAASC,IACdA,EAAiBA,GAAkB,GAE/BA,EAAe,SAAW,EACrB,UAEFJ,GAAuBI,EAAe,CAAC,CAAC,EAAE,OAC/CN,GAAmBM,EAAe,MAAM,CAAC,CAAC,CAC5C,GCtCF,IAAMC,GACJ,uOACIC,GAAsC,OAE5C,SAASC,GAAmBC,EAA2C,CACrE,OAAOA,EAA0B,QAAQH,GAAyB,GAAG,CACvE,CAEA,SAASI,GAAwBC,EAA4C,CAC3E,IAAIC,EAAeJ,GAAmBG,CAA0B,EAEhE,OAAIC,EAAa,MAAML,EAAmC,IACxDK,EAAe,IAAID,CAA0B,IAExCC,CACT,CAEA,SAASC,GAAmBC,EAAqC,CAC/D,OAAAA,EAAsBA,EAAoB,QAAQ,OAAQ,GAAG,EAAE,KAAK,EAE7DJ,GAAwBI,EAAoB,CAAC,CAAC,EAAE,OACrDN,GAAmBM,EAAoB,MAAM,CAAC,CAAC,CACjD,CACF,CAeA,IAAOC,GAASC,GAA0C,CACxD,IAAMC,EAAuBD,GAAwB,GAErD,OAAIC,EAAqB,SAAW,EAC3B,QAGFA,EACJ,MAAM,SAAS,EACf,OAAQH,GAAwBA,EAAoB,OAAS,CAAC,EAC9D,IAAID,EAAkB,EACtB,KAAK,GAAG,CACb,ECnDA,IAAMK,GAA+D,CACnE,QAAS,QACT,QAAS,UACT,MAAO,QACP,UAAW,QACX,SAAU,WACV,QAAS,UACT,YAAa,SACf,EAEA,SAASC,GAAyBC,EAA4B,CAC5D,OAAOF,GAA4BE,CAAU,GAAK,OACpD,CAEA,SAASC,GAAoBC,EAA6C,CACxE,IAAMC,EAAkC,CACtC,OAAQC,GAAiBF,EAAY,EAAE,CACzC,EAEA,OAAIA,EAAY,QACdC,EAAa,MAAQE,GAAoBH,EAAY,KAAK,GAExDA,EAAY,OACdC,EAAa,KAAOD,EAAY,MAE9BA,EAAY,SACdC,EAAa,OAASD,EAAY,QAEhCA,EAAY,OACdC,EAAa,KAAOD,EAAY,MAE3BC,CACT,CAEA,SAASG,GACPC,EACAC,EACU,CACV,OAAOD,EACJ,OAAQE,GAAaA,EAAS,OAASD,CAAY,EACnD,IAAKC,GAAaA,EAAS,IAAI,CACpC,CAEA,SAASC,GACPC,EACAC,EACAC,EACAC,EACM,CACN,IAAMC,EAA0BT,GAAgBO,EAAUC,CAAW,EAEjEC,EAAc,OAAS,IACzBJ,EAAaC,CAAa,GAAKD,EAAaC,CAAa,GAAK,CAAC,GAAG,OAChEG,CACF,EAEJ,CAEA,SAASC,GAAkBL,EAA4BM,EAAsB,CACvEA,EAAO,UACTP,GAAkBC,EAAc,YAAaM,EAAO,QAAS,OAAO,EACpEP,GAAkBC,EAAc,YAAaM,EAAO,QAAS,UAAU,EACvEP,GAAkBC,EAAc,UAAWM,EAAO,QAAS,MAAM,EAErE,CAEA,SAASC,GACPP,EACAM,EACAE,EACM,CACN,IAAMC,EAAeD,EAClB,OAAQjB,GAAgBA,EAAY,OAASe,EAAO,IAAI,EACxD,IAAIhB,EAAmB,EAEtBmB,EAAa,OAAS,IACxBT,EAAa,YAAcS,EAE/B,CAEA,SAASC,GACPV,EACAM,EACAE,EACM,CACN,GAAIF,EAAO,aAAc,CAGvB,IAAMK,EAAiBC,GAAON,EAAO,aAAc,OAAWE,CAAY,EAE1ER,EAAa,QAAUA,EAAa,QAAU,CAAC,GAAG,OAChDW,EAAe,MACjB,EACIA,EAAe,UACjBX,EAAa,QAAUW,EAAe,QAE1C,CACF,CAEA,SAASE,GAAeL,EAA6B,CACnD,OAAAA,EAAeA,GAAgB,CAAC,EAExBF,GAAiC,CACvC,IAAMd,EAA6B,CACjC,KAAMJ,GAAyBkB,EAAO,IAAI,EAC1C,GAAIb,GAAiBa,EAAO,IAAI,CAClC,EAEA,OAAIA,EAAO,OAAS,gBAElBd,EAAa,KAAO,QAGtBa,GAAkBb,EAAcc,CAAM,EAEtCC,GAAqBf,EAAcc,EAAQE,CAAY,EAEvDE,GAAwBlB,EAAcc,EAAQE,CAAY,EACnDhB,CACT,CACF,CAEA,SAASsB,GACPC,EACoB,CACpB,IAAMC,EAAWD,EAAc,OAAO,OACnCT,GAAWA,EAAO,OAAS,SAC9B,EAEA,GAAIU,EAAS,OAAS,EACpB,OAAOA,EAAS,CAAC,EAAE,IAIvB,CAEA,SAASC,GACPF,EACAG,EACoB,CACpB,IAAI1B,EAAe0B,EAEnB,GAAIA,GAA2BH,EAAc,YAAa,CACxD,IAAMI,EAAsBJ,EAAc,YAAY,OACnDxB,GAAgBA,EAAY,OAAS2B,CACxC,EAEIC,EAAoB,OAAS,GAAK,CAACA,EAAoB,CAAC,EAAE,SAC5D3B,EAAe2B,EAAoB,CAAC,EAAE,GAE1C,CACA,OAAO3B,CACT,CAEe,SAARoB,GACLG,EACAK,EACAZ,EACgB,CAChB,IAAMa,EAA0BP,GAA2BC,CAAa,EAClEO,EAAoBL,GACxBF,EACAM,CACF,EACM7B,EAA+B,CACnC,OAAQuB,EAAc,OACnB,OAAQT,GAELgB,GACAA,IAAsBD,EAEff,EAAO,OAAS,UAElB,EACR,EACA,IACCO,GACEL,GACE,IAAIe,GAAkBR,CAAa,EAAE,oBACzC,CACF,CACJ,EAEA,OAAIO,IACF9B,EAAa,QAAUC,GAAiB6B,CAAiB,GAEpD9B,CACT,CC7MA,IAAAgC,GAAe,WAOTC,GAAgB,EAEtB,SAASC,GAAaC,EAAiBC,EAAwB,CAC7D,IAAMC,EAAS,cAEf,OAAOF,EAAQ,QAAQE,EAAQ,IAAI,OAAOD,CAAM,CAAC,CACnD,CAEA,SAASE,GAA2BC,EAAwC,CAC1E,IAAIC,EAAe,GACnB,OAAID,EAAY,QACdC,GAAgB,WAAW,GAAAC,QAAG,OAAOF,EAAY,KAAK,CAAC,KAErDA,EAAY,OACdC,GAAgB,UAAU,GAAAC,QAAG,OAAOF,EAAY,IAAI,CAAC,KAEnDA,EAAY,OACdC,GAAgB,UAAU,GAAAC,QAAG,OAAOF,EAAY,IAAI,CAAC,KAEvDC,GAAgB,YAAY,GAAAC,QAAG,OAAOF,EAAY,MAAM,CAAC,IAClDC,CACT,CAEA,SAASE,GACPH,EACAI,EACQ,CACR,IAAMH,EAAe;AAAA,aACVF,GAA2BC,CAAW,CAAC,KAClD,OAAOL,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAEA,SAASW,GACPL,EACAI,EACQ,CACR,IAAMH,EAAe;AAAA,aACVF,GAA2BC,CAAW,CAAC;AAAA,MAC9C,GAAAE,QAAG,OAAOF,EAAY,MAAM,CAAC;AAAA,eAEjC,OAAOL,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAEA,SAASY,GACPN,EACAI,EACQ,CACR,OAAIJ,EAAY,OACPK,GACLL,EACAI,CACF,EAGKD,GAAwBH,EAAaI,CAAM,CACpD,CAEA,SAASG,GACPC,EAEAJ,EACQ,CACR,OAAQI,GAAgB,CAAC,GACtB,IAAKR,GAAgBM,GAAiBN,EAAaI,CAAM,CAAC,EAC1D,KAAK,EAAE,CACZ,CAEA,SAASK,GACPC,EACAC,EACAP,EACQ,CACR,IAAMH,EAAe;AAAA,GACpBU,CAAI,IAAI,GAAAT,QAAG,OAAOQ,CAAO,CAAC,KAAKC,CAAI,IACpC,OAAOhB,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAGA,SAASkB,GAAgBC,EAAuBT,EAAwB,CACtE,OAAQS,GAAc,CAAC,GACpB,IAAKC,GAAaL,GAAgBK,EAAU,UAAWV,CAAM,CAAC,EAC9D,KAAK,EAAE,CACZ,CAGA,SAASW,GAAcC,EAAqBZ,EAAwB,CAClE,OAAQY,GAAY,CAAC,GAClB,IAAKN,GAAYD,GAAgBC,EAAS,SAAUN,CAAM,CAAC,EAC3D,KAAK,EAAE,CACZ,CAEA,SAASa,GAAsBC,EAA8B,CAC3D,IAAIjB,EAAe,QAAQ,GAAAC,QAAG,OAAOgB,EAAO,EAAE,CAAC,IAC/C,OAAIA,EAAO,UACTjB,GAAgB,aAAa,GAAAC,QAAG,OAAOgB,EAAO,OAAO,CAAC,KAEpDA,EAAO,OACTjB,GAAgB,UAAU,GAAAC,QAAG,OAAOgB,EAAO,IAAI,CAAC,KAE3CjB,CACT,CAEA,SAASkB,GAAYD,EAAsBd,EAAwB,CACjE,IAAIH,EAAe;AAAA,GAAMiB,EAAO,IAAI,GAAGD,GAAsBC,CAAM,CAAC,IAEpE,OAAAjB,GAAgBmB,GAAaF,EAAO,OAAQd,CAAM,EAClDH,GAAgBW,GAAgBM,EAAO,UAAWd,CAAM,EACxDH,GAAgBc,GAAcG,EAAO,QAASd,CAAM,EACpDH,GAAgBM,GAAkBW,EAAO,YAAad,CAAM,EAC5DH,GAAgB;AAAA,IAAOiB,EAAO,IAAI,IAE3BvB,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAEA,SAAS0B,GAAaC,EAA0BjB,EAAS,EAAW,CAClE,OAAQiB,GAAW,CAAC,GAAG,IAAKH,GAAWC,GAAYD,EAAQd,CAAM,CAAC,EAAE,KAAK,EAAE,CAC7E,CAEA,SAASkB,GAAuBC,EAAiC,CAC/D,OAAOA,EAAiB,YAAYA,CAAc,KAAO,EAC3D,CAEe,SAARC,GAA6BC,EAAiC,CACnE,MAAO;AAAA,iDACwCH,GAAuBG,EAAQ,OAAO,CAAC,iBAAiBL,GAAaK,EAAQ,MAAM,CAAC;AAAA;AAAA,CAGrI,CClIA,IAAMC,GAAyCC,GAC7CD,GAAgBE,GAAWD,CAAa,CAAC,EAEpCE,GAAQH,GCMf,IAAMI,GAAQC,GAEC,SAARC,GACLC,EACoB,CAapB,OATE,IAAI,IAAI,CACN,CAAC,QAASH,EAAK,EACf,CAAC,MAAOI,EAAS,EACjB,CAAC,MAAOC,EAAG,EACX,CAAC,SAAUA,EAAG,EACd,CAAC,SAAUC,EAAM,EACjB,CAAC,QAASC,EAAK,CACjB,CAAC,EAEkC,IAAIJ,CAAW,IAAOK,GAAOA,EACpE,CC9BO,IAAMC,GAAU,UCqBhB,SAASC,GACdC,EACAC,EACQ,CACR,IAAMC,EAAWD,GAAY,CAAC,EACxBE,EAAgBC,GAAM,OAAOJ,EAASE,CAAQ,EAC9CG,EAAWC,GAAQ,eAAeJ,EAAU,SAAS,EAE3D,OAAOK,GACLD,GAAQ,eAAeJ,EAAU,YAAY,CAC/C,EAAEG,EAAWG,GAAQL,CAAa,EAAIA,EAAeD,CAAQ,CAC/D,CAMO,IAAMO,GAAkBA,GAUxB,SAASC,IAAmC,CACjD,OAAOJ,GAAQ,iBAAiB,CAClC,CAEA,IAAOK,GAAQ,CACb,OAAAZ,GACA,QAAAU,GACA,iBAAAC,EACF,ECvDA,IAAME,GAAY,OAAO,OAAO,CAC9B,eAAgB,QAChB,eAAgB,QAChB,oBAAqB,MACvB,CAAC,EAED,SAASC,GAAkBC,EAAW,CACpC,OAAIA,EAAU,GACL,QAAQ,QAAQA,CAAS,EAEzB,QAAQ,OAAO,IAAI,MAAMA,EAAU,UAAU,CAAC,CAEzD,CAEA,SAASC,GAAgBD,EAAW,CAClC,OAAOA,EAAU,KAAK,CACxB,CAEA,SAASE,GAAgBC,EAAS,CAChC,IAAMC,EAAaD,EAAQ,aAAa,KAAK,EAC7C,OAAIC,EACK,MAAMA,CAAU,EAAE,KAAKL,EAAiB,EAAE,KAAKE,EAAe,EAIhE,IAAI,QAAQ,CAACI,EAAUC,IAAY,CACpCH,EAAQ,aAAeA,EAAQ,YAAY,OAAS,EACtDE,EAASF,EAAQ,WAAW,EAE5BG,EAAQ,IAAI,MAAM,8CAA8C,CAAC,CAErE,CAAC,CACH,CAEA,SAASC,GAAUC,EAAS,CAC1B,IAAIC,EAAe,SAAS,cAAc,KAAK,EAC/C,OAAAA,EAAa,YAAcD,EACpBC,CACT,CAEA,SAASC,GAAgBF,EAAS,CAChC,IAAMC,EAAe,SAAS,cAAc,MAAM,EAClD,OAAAA,EAAa,aAAa,QAAS,WAAW,EAC9CA,EAAa,YAAcD,EACpBC,CACT,CAEA,SAASE,GAAgBC,EAASC,EAAU,CAC1C,IAAIC,EAAkBC,GAAM,OAAOH,EAASC,CAAQ,EAEpD,OAAQA,EAAS,WAAY,CAC3B,IAAK,OACL,IAAK,SACH,OAAON,GAAU,KAAK,UAAUO,EAAiB,KAAM,IAAI,CAAC,EAE9D,IAAK,MACH,OAAO,IAAI,UAAU,EAAE,gBAAgBA,EAAiB,eAAe,EACpE,gBAEL,QACE,OAAOP,GAAUO,CAAe,CAEpC,CACF,CACA,SAASE,GAAaC,EAAgB,CAC/BA,EAAe,QAAQ,aAC1BA,EAAe,QAAQ,WAAa,oBACpCf,GAAgBe,CAAc,EAC3B,KAAMC,GAAS,CACdD,EAAe,MACbN,GAAgBO,EAAM,CACpB,UAAWpB,GAAUmB,EAAe,IAAI,EACxC,WACEA,EAAe,aAAa,kBAAkB,GAAK,MACrD,UAAWA,EAAe,QAAQ,WAAa,WAC/C,OAAQA,EAAe,QAAQ,QAAU,MACzC,QAASA,EAAe,QAAQ,SAAW,GAC3C,cAAe,CAAC,CAAE,KAAM,UAAW,MAAO,aAAc,CAAC,CAC3D,CAAC,CACH,CACF,CAAC,EACA,MAAOE,GAAS,CACfF,EAAe,MACbP,GACE,oBACEO,EAAe,IACX,IAAIA,EAAe,GAAG,IACrBA,EAAe,aAAe,yBAC/B,mBACN,GAAGE,EAAO,KAAKA,CAAI,GAAK,EAAE,EAC5B,CACF,CACF,CAAC,EAEP,CAEA,SAASC,GAAiBC,EAAUC,EAAY,CAC9CD,EAAS,QAASE,GAAW,CAC3B,GAAIA,EAAO,eAAgB,CACzB,IAAMC,EAAiBD,EAAO,OAAO,uBACjCC,EAAe,UAAY,UAC7BR,GAAaQ,CAAc,CAE/B,CACF,CAAC,CACH,CAEA,IAAIC,GAAW,IAAI,qBAAqBL,GAAkB,CAAE,UAAW,CAAE,CAAC,EAEpEM,GAAkB,CAAC,GAAG,SAAS,OAAO,EAAE,OAC3CvB,GAAY,CAAC,CAACL,GAAUK,EAAQ,IAAI,CACvC,EAEAuB,GAAgB,QAAST,GAAmB,CAI1C,IAAMU,EAAgB,SAAS,cAAc,cAAc,EAC3DV,EAAe,MAAMU,CAAa,EAElCF,GAAS,QAAQE,CAAa,CAChC,CAAC,EAKD,OAAO,iBAAiB,cAAgBC,GAAY,CAClDF,GAAgB,QAAQV,EAAY,CACtC,CAAC", + "sourcesContent": ["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record\n\ntype ScopeValues = {\n [Prefix in string]?: Map\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs): MergeEvaluatedFunc {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc\n items: MergeEvaluatedFunc\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n", "import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n", "import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n", "import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n", "{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n", "'use strict'\n\nconst HEX = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n a: 10,\n A: 10,\n b: 11,\n B: 11,\n c: 12,\n C: 12,\n d: 13,\n D: 13,\n e: 14,\n E: 14,\n f: 15,\n F: 15\n}\n\nmodule.exports = {\n HEX\n}\n", "'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n const [address] = matches\n if (address) {\n return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n } else {\n return { host, isIPV4: false }\n }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n let acc = ''\n let strip = true\n for (const c of input) {\n if (HEX[c] === undefined) return undefined\n if (c !== '0' && strip === true) strip = false\n if (!strip) acc += c\n }\n if (keepZero && acc.length === 0) acc = '0'\n return acc\n}\n\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n const address = []\n const buffer = []\n let isZone = false\n let endipv6Encountered = false\n let endIpv6 = false\n\n function consume () {\n if (buffer.length) {\n if (isZone === false) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== undefined) {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n }\n buffer.length = 0\n }\n return true\n }\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume()) { break }\n tokenCount++\n address.push(':')\n if (tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i - 1 >= 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n continue\n } else if (cursor === '%') {\n if (!consume()) { break }\n // switch to zone detection\n isZone = true\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (isZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, escapedHost, isIPV6: true }\n } else {\n return { host, isIPV6: false }\n }\n}\n\nfunction stripLeadingZeros (str, token) {\n let out = ''\n let skip = true\n const l = str.length\n for (let i = 0; i < l; i++) {\n const c = str[i]\n if (c === '0' && skip) {\n if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n out += c\n skip = false\n }\n } else {\n if (c === token) {\n skip = true\n } else {\n skip = false\n }\n out += c\n }\n }\n return out\n}\n\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n const output = []\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, '')\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, '/')\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, '/')\n output.pop()\n } else if (input === '.' || input === '..') {\n input = ''\n } else {\n const im = input.match(RDS5)\n if (im) {\n const s = im[0]\n input = input.slice(s.length)\n output.push(s)\n } else {\n throw new Error('Unexpected dot segment condition')\n }\n }\n }\n return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n const func = esc !== true ? escape : unescape\n if (components.scheme !== undefined) {\n components.scheme = func(components.scheme)\n }\n if (components.userinfo !== undefined) {\n components.userinfo = func(components.userinfo)\n }\n if (components.host !== undefined) {\n components.host = func(components.host)\n }\n if (components.path !== undefined) {\n components.path = func(components.path)\n }\n if (components.query !== undefined) {\n components.query = func(components.query)\n }\n if (components.fragment !== undefined) {\n components.fragment = func(components.fragment)\n }\n return components\n}\n\nfunction recomposeAuthority (components, options) {\n const uriTokens = []\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo)\n uriTokens.push('@')\n }\n\n if (components.host !== undefined) {\n let host = unescape(components.host)\n const ipV4res = normalizeIPv4(host)\n\n if (ipV4res.isIPV4) {\n host = ipV4res.host\n } else {\n const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = components.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof components.port === 'number' || typeof components.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(components.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n normalizeIPv4,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n", "'use strict'\n\nconst UUID_REG = /^[\\da-f]{8}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{4}\\b-[\\da-f]{12}$/iu\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nfunction isSecure (wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === 'wss'\n}\n\nfunction httpParse (components) {\n if (!components.host) {\n components.error = components.error || 'HTTP URIs must have a host.'\n }\n\n return components\n}\n\nfunction httpSerialize (components) {\n const secure = String(components.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === '') {\n components.port = undefined\n }\n\n // normalize the empty path\n if (!components.path) {\n components.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return components\n}\n\nfunction wsParse (wsComponents) {\n// indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents)\n\n // construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '')\n wsComponents.path = undefined\n wsComponents.query = undefined\n\n return wsComponents\n}\n\nfunction wsSerialize (wsComponents) {\n// normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === '') {\n wsComponents.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws')\n wsComponents.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponents.resourceName) {\n const [path, query] = wsComponents.resourceName.split('?')\n wsComponents.path = (path && path !== '/' ? path : undefined)\n wsComponents.query = query\n wsComponents.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponents.fragment = undefined\n\n return wsComponents\n}\n\nfunction urnParse (urnComponents, options) {\n if (!urnComponents.path) {\n urnComponents.error = 'URN can not be parsed'\n return urnComponents\n }\n const matches = urnComponents.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n urnComponents.nid = matches[1].toLowerCase()\n urnComponents.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponents.nid}`\n const schemeHandler = SCHEMES[urnScheme]\n urnComponents.path = undefined\n\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options)\n }\n } else {\n urnComponents.error = urnComponents.error || 'URN can not be parsed.'\n }\n\n return urnComponents\n}\n\nfunction urnSerialize (urnComponents, options) {\n const scheme = options.scheme || urnComponents.scheme || 'urn'\n const nid = urnComponents.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = SCHEMES[urnScheme]\n\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options)\n }\n\n const uriComponents = urnComponents\n const nss = urnComponents.nss\n uriComponents.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponents\n}\n\nfunction urnuuidParse (urnComponents, options) {\n const uuidComponents = urnComponents\n uuidComponents.uuid = uuidComponents.nss\n uuidComponents.nss = undefined\n\n if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) {\n uuidComponents.error = uuidComponents.error || 'UUID is not valid.'\n }\n\n return uuidComponents\n}\n\nfunction urnuuidSerialize (uuidComponents) {\n const urnComponents = uuidComponents\n // normalize UUID\n urnComponents.nss = (uuidComponents.uuid || '').toLowerCase()\n return urnComponents\n}\n\nconst http = {\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst https = {\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n}\n\nconst ws = {\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n}\n\nconst wss = {\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n}\n\nconst urn = {\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n}\n\nconst urnuuid = {\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n}\n\nconst SCHEMES = {\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n}\n\nmodule.exports = SCHEMES\n", "'use strict'\n\nconst { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require('./lib/utils')\nconst SCHEMES = require('./lib/schemes')\n\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = serialize(parse(uri, options), options)\n } else if (typeof uri === 'object') {\n uri = parse(serialize(uri, options), options)\n }\n return uri\n}\n\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = Object.assign({ scheme: 'null' }, options)\n const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n return serialize(resolved, { ...schemelessOptions, skipEscape: true })\n}\n\nfunction resolveComponents (base, relative, options, skipNormalization) {\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base components\n relative = parse(serialize(relative, options), options) // normalize relative components\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path.charAt(0) === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\nfunction serialize (cmpts, opts) {\n const components = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || components.scheme || '').toLowerCase()]\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options)\n\n if (components.path !== undefined) {\n if (!options.skipEscape) {\n components.path = escape(components.path)\n\n if (components.scheme !== undefined) {\n components.path = components.path.split('%3A').join(':')\n }\n } else {\n components.path = unescape(components.path)\n }\n }\n\n if (options.reference !== 'suffix' && components.scheme) {\n uriTokens.push(components.scheme, ':')\n }\n\n const authority = recomposeAuthority(components, options)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (components.path && components.path.charAt(0) !== '/') {\n uriTokens.push('/')\n }\n }\n if (components.path !== undefined) {\n let s = components.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (authority === undefined) {\n s = s.replace(/^\\/\\//u, '/%2F') // don't allow the path to start with \"//\"\n }\n\n uriTokens.push(s)\n }\n\n if (components.query !== undefined) {\n uriTokens.push('?', components.query)\n }\n\n if (components.fragment !== undefined) {\n uriTokens.push('#', components.fragment)\n }\n return uriTokens.join('')\n}\n\nconst hexLookUp = Array.from({ length: 127 }, (v, k) => /[^!\"$&'()*+,\\-.;=_`a-z{}~]/u.test(String.fromCharCode(k)))\n\nfunction nonSimpleDomain (value) {\n let code = 0\n for (let i = 0, len = value.length; i < len; ++i) {\n code = value.charCodeAt(i)\n if (code > 126 || hexLookUp[code]) {\n return true\n }\n }\n return false\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n const gotEncoding = uri.indexOf('%') !== -1\n let isIP = false\n if (options.reference === 'suffix') uri = (options.scheme ? options.scheme + ':' : '') + '//' + uri\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = normalizeIPv4(parsed.host)\n if (ipv4result.isIPV4 === false) {\n const ipv6result = normalizeIPv6(ipv4result.host, { isIPV4: false })\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n parsed.host = ipv4result.host\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && !parsed.path && parsed.query === undefined) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || '').toLowerCase()]\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (gotEncoding && parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (gotEncoding && parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n if (parsed.path !== undefined && parsed.path.length) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment !== undefined && parsed.fragment.length) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponents,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n", "import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n", "export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set = new Set()\n private readonly _loading: {[Ref in string]?: Promise} = {}\n private readonly _cache: Map = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise\n validate(schema: Schema | JSONSchemaType | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate(schema: JTDSchemaType, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate(\n schema: T,\n data: unknown\n ): data is JTDDataType\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate(schema: AsyncSchema, data: unknown | T): Promise\n validate(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise\n validate(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile(schema: Schema | JSONSchemaType, _meta?: boolean): ValidateFunction\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile(schema: JTDSchemaType, _meta?: boolean): ValidateFunction\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile(\n schema: T,\n _meta?: boolean\n ): ValidateFunction>\n compile(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction\n compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction\n compile(schema: AnySchema, _meta?: boolean): AnyValidateFunction {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync(\n schema: SchemaObject | JSONSchemaType,\n _meta?: boolean\n ): Promise>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync(schema: JTDSchemaType, _meta?: boolean): Promise>\n compileAsync(schema: AsyncSchema, meta?: boolean): Promise>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise>\n compileAsync(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef: string): AnyValidateFunction | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n", "import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n", "// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {data, $data, schema, schemaCode, it} = cxt\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n", "import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n", "import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n", "import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator\n | FormatValidator\n | AsyncFormatValidator\n | AsyncFormatValidator\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n", "import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n", "import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n", "import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n", "import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj | DiscrErrorObj\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n", "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n", "import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n", "'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n", "'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n", "\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;", "'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;", "const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n", "const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n", "function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn", "'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"\u00A2\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"\u00A3\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"\u00A5\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"\u20AC\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"\u00A9\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"\u00AE\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"\u20B9\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n", "'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n", "const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;", "const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n", "'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i\\u20D2|\\u205F\\u200A|\\u219D\\u0338|\\u2202\\u0338|\\u2220\\u20D2|\\u2229\\uFE00|\\u222A\\uFE00|\\u223C\\u20D2|\\u223D\\u0331|\\u223E\\u0333|\\u2242\\u0338|\\u224B\\u0338|\\u224D\\u20D2|\\u224E\\u0338|\\u224F\\u0338|\\u2250\\u0338|\\u2261\\u20E5|\\u2264\\u20D2|\\u2265\\u20D2|\\u2266\\u0338|\\u2267\\u0338|\\u2268\\uFE00|\\u2269\\uFE00|\\u226A\\u0338|\\u226A\\u20D2|\\u226B\\u0338|\\u226B\\u20D2|\\u227F\\u0338|\\u2282\\u20D2|\\u2283\\u20D2|\\u228A\\uFE00|\\u228B\\uFE00|\\u228F\\u0338|\\u2290\\u0338|\\u2293\\uFE00|\\u2294\\uFE00|\\u22B4\\u20D2|\\u22B5\\u20D2|\\u22D8\\u0338|\\u22D9\\u0338|\\u22DA\\uFE00|\\u22DB\\uFE00|\\u22F5\\u0338|\\u22F9\\u0338|\\u2933\\u0338|\\u29CF\\u0338|\\u29D0\\u0338|\\u2A6D\\u0338|\\u2A70\\u0338|\\u2A7D\\u0338|\\u2A7E\\u0338|\\u2AA1\\u0338|\\u2AA2\\u0338|\\u2AAC\\uFE00|\\u2AAD\\uFE00|\\u2AAF\\u0338|\\u2AB0\\u0338|\\u2AC5\\u0338|\\u2AC6\\u0338|\\u2ACB\\uFE00|\\u2ACC\\uFE00|\\u2AFD\\u20E5|[\\xA0-\\u0113\\u0116-\\u0122\\u0124-\\u012B\\u012E-\\u014D\\u0150-\\u017E\\u0192\\u01B5\\u01F5\\u0237\\u02C6\\u02C7\\u02D8-\\u02DD\\u0311\\u0391-\\u03A1\\u03A3-\\u03A9\\u03B1-\\u03C9\\u03D1\\u03D2\\u03D5\\u03D6\\u03DC\\u03DD\\u03F0\\u03F1\\u03F5\\u03F6\\u0401-\\u040C\\u040E-\\u044F\\u0451-\\u045C\\u045E\\u045F\\u2002-\\u2005\\u2007-\\u2010\\u2013-\\u2016\\u2018-\\u201A\\u201C-\\u201E\\u2020-\\u2022\\u2025\\u2026\\u2030-\\u2035\\u2039\\u203A\\u203E\\u2041\\u2043\\u2044\\u204F\\u2057\\u205F-\\u2063\\u20AC\\u20DB\\u20DC\\u2102\\u2105\\u210A-\\u2113\\u2115-\\u211E\\u2122\\u2124\\u2127-\\u2129\\u212C\\u212D\\u212F-\\u2131\\u2133-\\u2138\\u2145-\\u2148\\u2153-\\u215E\\u2190-\\u219B\\u219D-\\u21A7\\u21A9-\\u21AE\\u21B0-\\u21B3\\u21B5-\\u21B7\\u21BA-\\u21DB\\u21DD\\u21E4\\u21E5\\u21F5\\u21FD-\\u2205\\u2207-\\u2209\\u220B\\u220C\\u220F-\\u2214\\u2216-\\u2218\\u221A\\u221D-\\u2238\\u223A-\\u2257\\u2259\\u225A\\u225C\\u225F-\\u2262\\u2264-\\u228B\\u228D-\\u229B\\u229D-\\u22A5\\u22A7-\\u22B0\\u22B2-\\u22BB\\u22BD-\\u22DB\\u22DE-\\u22E3\\u22E6-\\u22F7\\u22F9-\\u22FE\\u2305\\u2306\\u2308-\\u2310\\u2312\\u2313\\u2315\\u2316\\u231C-\\u231F\\u2322\\u2323\\u232D\\u232E\\u2336\\u233D\\u233F\\u237C\\u23B0\\u23B1\\u23B4-\\u23B6\\u23DC-\\u23DF\\u23E2\\u23E7\\u2423\\u24C8\\u2500\\u2502\\u250C\\u2510\\u2514\\u2518\\u251C\\u2524\\u252C\\u2534\\u253C\\u2550-\\u256C\\u2580\\u2584\\u2588\\u2591-\\u2593\\u25A1\\u25AA\\u25AB\\u25AD\\u25AE\\u25B1\\u25B3-\\u25B5\\u25B8\\u25B9\\u25BD-\\u25BF\\u25C2\\u25C3\\u25CA\\u25CB\\u25EC\\u25EF\\u25F8-\\u25FC\\u2605\\u2606\\u260E\\u2640\\u2642\\u2660\\u2663\\u2665\\u2666\\u266A\\u266D-\\u266F\\u2713\\u2717\\u2720\\u2736\\u2758\\u2772\\u2773\\u27C8\\u27C9\\u27E6-\\u27ED\\u27F5-\\u27FA\\u27FC\\u27FF\\u2902-\\u2905\\u290C-\\u2913\\u2916\\u2919-\\u2920\\u2923-\\u292A\\u2933\\u2935-\\u2939\\u293C\\u293D\\u2945\\u2948-\\u294B\\u294E-\\u2976\\u2978\\u2979\\u297B-\\u297F\\u2985\\u2986\\u298B-\\u2996\\u299A\\u299C\\u299D\\u29A4-\\u29B7\\u29B9\\u29BB\\u29BC\\u29BE-\\u29C5\\u29C9\\u29CD-\\u29D0\\u29DC-\\u29DE\\u29E3-\\u29E5\\u29EB\\u29F4\\u29F6\\u2A00-\\u2A02\\u2A04\\u2A06\\u2A0C\\u2A0D\\u2A10-\\u2A17\\u2A22-\\u2A27\\u2A29\\u2A2A\\u2A2D-\\u2A31\\u2A33-\\u2A3C\\u2A3F\\u2A40\\u2A42-\\u2A4D\\u2A50\\u2A53-\\u2A58\\u2A5A-\\u2A5D\\u2A5F\\u2A66\\u2A6A\\u2A6D-\\u2A75\\u2A77-\\u2A9A\\u2A9D-\\u2AA2\\u2AA4-\\u2AB0\\u2AB3-\\u2AC8\\u2ACB\\u2ACC\\u2ACF-\\u2ADB\\u2AE4\\u2AE6-\\u2AE9\\u2AEB-\\u2AF3\\u2AFD\\uFB00-\\uFB04]|\\uD835[\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDD6B]/g;\n\tvar encodeMap = {'\\xAD':'shy','\\u200C':'zwnj','\\u200D':'zwj','\\u200E':'lrm','\\u2063':'ic','\\u2062':'it','\\u2061':'af','\\u200F':'rlm','\\u200B':'ZeroWidthSpace','\\u2060':'NoBreak','\\u0311':'DownBreve','\\u20DB':'tdot','\\u20DC':'DotDot','\\t':'Tab','\\n':'NewLine','\\u2008':'puncsp','\\u205F':'MediumSpace','\\u2009':'thinsp','\\u200A':'hairsp','\\u2004':'emsp13','\\u2002':'ensp','\\u2005':'emsp14','\\u2003':'emsp','\\u2007':'numsp','\\xA0':'nbsp','\\u205F\\u200A':'ThickSpace','\\u203E':'oline','_':'lowbar','\\u2010':'dash','\\u2013':'ndash','\\u2014':'mdash','\\u2015':'horbar',',':'comma',';':'semi','\\u204F':'bsemi',':':'colon','\\u2A74':'Colone','!':'excl','\\xA1':'iexcl','?':'quest','\\xBF':'iquest','.':'period','\\u2025':'nldr','\\u2026':'mldr','\\xB7':'middot','\\'':'apos','\\u2018':'lsquo','\\u2019':'rsquo','\\u201A':'sbquo','\\u2039':'lsaquo','\\u203A':'rsaquo','\"':'quot','\\u201C':'ldquo','\\u201D':'rdquo','\\u201E':'bdquo','\\xAB':'laquo','\\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\\u2308':'lceil','\\u2309':'rceil','\\u230A':'lfloor','\\u230B':'rfloor','\\u2985':'lopar','\\u2986':'ropar','\\u298B':'lbrke','\\u298C':'rbrke','\\u298D':'lbrkslu','\\u298E':'rbrksld','\\u298F':'lbrksld','\\u2990':'rbrkslu','\\u2991':'langd','\\u2992':'rangd','\\u2993':'lparlt','\\u2994':'rpargt','\\u2995':'gtlPar','\\u2996':'ltrPar','\\u27E6':'lobrk','\\u27E7':'robrk','\\u27E8':'lang','\\u27E9':'rang','\\u27EA':'Lang','\\u27EB':'Rang','\\u27EC':'loang','\\u27ED':'roang','\\u2772':'lbbrk','\\u2773':'rbbrk','\\u2016':'Vert','\\xA7':'sect','\\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\\u2030':'permil','\\u2031':'pertenk','\\u2020':'dagger','\\u2021':'Dagger','\\u2022':'bull','\\u2043':'hybull','\\u2032':'prime','\\u2033':'Prime','\\u2034':'tprime','\\u2057':'qprime','\\u2035':'bprime','\\u2041':'caret','`':'grave','\\xB4':'acute','\\u02DC':'tilde','^':'Hat','\\xAF':'macr','\\u02D8':'breve','\\u02D9':'dot','\\xA8':'die','\\u02DA':'ring','\\u02DD':'dblac','\\xB8':'cedil','\\u02DB':'ogon','\\u02C6':'circ','\\u02C7':'caron','\\xB0':'deg','\\xA9':'copy','\\xAE':'reg','\\u2117':'copysr','\\u2118':'wp','\\u211E':'rx','\\u2127':'mho','\\u2129':'iiota','\\u2190':'larr','\\u219A':'nlarr','\\u2192':'rarr','\\u219B':'nrarr','\\u2191':'uarr','\\u2193':'darr','\\u2194':'harr','\\u21AE':'nharr','\\u2195':'varr','\\u2196':'nwarr','\\u2197':'nearr','\\u2198':'searr','\\u2199':'swarr','\\u219D':'rarrw','\\u219D\\u0338':'nrarrw','\\u219E':'Larr','\\u219F':'Uarr','\\u21A0':'Rarr','\\u21A1':'Darr','\\u21A2':'larrtl','\\u21A3':'rarrtl','\\u21A4':'mapstoleft','\\u21A5':'mapstoup','\\u21A6':'map','\\u21A7':'mapstodown','\\u21A9':'larrhk','\\u21AA':'rarrhk','\\u21AB':'larrlp','\\u21AC':'rarrlp','\\u21AD':'harrw','\\u21B0':'lsh','\\u21B1':'rsh','\\u21B2':'ldsh','\\u21B3':'rdsh','\\u21B5':'crarr','\\u21B6':'cularr','\\u21B7':'curarr','\\u21BA':'olarr','\\u21BB':'orarr','\\u21BC':'lharu','\\u21BD':'lhard','\\u21BE':'uharr','\\u21BF':'uharl','\\u21C0':'rharu','\\u21C1':'rhard','\\u21C2':'dharr','\\u21C3':'dharl','\\u21C4':'rlarr','\\u21C5':'udarr','\\u21C6':'lrarr','\\u21C7':'llarr','\\u21C8':'uuarr','\\u21C9':'rrarr','\\u21CA':'ddarr','\\u21CB':'lrhar','\\u21CC':'rlhar','\\u21D0':'lArr','\\u21CD':'nlArr','\\u21D1':'uArr','\\u21D2':'rArr','\\u21CF':'nrArr','\\u21D3':'dArr','\\u21D4':'iff','\\u21CE':'nhArr','\\u21D5':'vArr','\\u21D6':'nwArr','\\u21D7':'neArr','\\u21D8':'seArr','\\u21D9':'swArr','\\u21DA':'lAarr','\\u21DB':'rAarr','\\u21DD':'zigrarr','\\u21E4':'larrb','\\u21E5':'rarrb','\\u21F5':'duarr','\\u21FD':'loarr','\\u21FE':'roarr','\\u21FF':'hoarr','\\u2200':'forall','\\u2201':'comp','\\u2202':'part','\\u2202\\u0338':'npart','\\u2203':'exist','\\u2204':'nexist','\\u2205':'empty','\\u2207':'Del','\\u2208':'in','\\u2209':'notin','\\u220B':'ni','\\u220C':'notni','\\u03F6':'bepsi','\\u220F':'prod','\\u2210':'coprod','\\u2211':'sum','+':'plus','\\xB1':'pm','\\xF7':'div','\\xD7':'times','<':'lt','\\u226E':'nlt','<\\u20D2':'nvlt','=':'equals','\\u2260':'ne','=\\u20E5':'bne','\\u2A75':'Equal','>':'gt','\\u226F':'ngt','>\\u20D2':'nvgt','\\xAC':'not','|':'vert','\\xA6':'brvbar','\\u2212':'minus','\\u2213':'mp','\\u2214':'plusdo','\\u2044':'frasl','\\u2216':'setmn','\\u2217':'lowast','\\u2218':'compfn','\\u221A':'Sqrt','\\u221D':'prop','\\u221E':'infin','\\u221F':'angrt','\\u2220':'ang','\\u2220\\u20D2':'nang','\\u2221':'angmsd','\\u2222':'angsph','\\u2223':'mid','\\u2224':'nmid','\\u2225':'par','\\u2226':'npar','\\u2227':'and','\\u2228':'or','\\u2229':'cap','\\u2229\\uFE00':'caps','\\u222A':'cup','\\u222A\\uFE00':'cups','\\u222B':'int','\\u222C':'Int','\\u222D':'tint','\\u2A0C':'qint','\\u222E':'oint','\\u222F':'Conint','\\u2230':'Cconint','\\u2231':'cwint','\\u2232':'cwconint','\\u2233':'awconint','\\u2234':'there4','\\u2235':'becaus','\\u2236':'ratio','\\u2237':'Colon','\\u2238':'minusd','\\u223A':'mDDot','\\u223B':'homtht','\\u223C':'sim','\\u2241':'nsim','\\u223C\\u20D2':'nvsim','\\u223D':'bsim','\\u223D\\u0331':'race','\\u223E':'ac','\\u223E\\u0333':'acE','\\u223F':'acd','\\u2240':'wr','\\u2242':'esim','\\u2242\\u0338':'nesim','\\u2243':'sime','\\u2244':'nsime','\\u2245':'cong','\\u2247':'ncong','\\u2246':'simne','\\u2248':'ap','\\u2249':'nap','\\u224A':'ape','\\u224B':'apid','\\u224B\\u0338':'napid','\\u224C':'bcong','\\u224D':'CupCap','\\u226D':'NotCupCap','\\u224D\\u20D2':'nvap','\\u224E':'bump','\\u224E\\u0338':'nbump','\\u224F':'bumpe','\\u224F\\u0338':'nbumpe','\\u2250':'doteq','\\u2250\\u0338':'nedot','\\u2251':'eDot','\\u2252':'efDot','\\u2253':'erDot','\\u2254':'colone','\\u2255':'ecolon','\\u2256':'ecir','\\u2257':'cire','\\u2259':'wedgeq','\\u225A':'veeeq','\\u225C':'trie','\\u225F':'equest','\\u2261':'equiv','\\u2262':'nequiv','\\u2261\\u20E5':'bnequiv','\\u2264':'le','\\u2270':'nle','\\u2264\\u20D2':'nvle','\\u2265':'ge','\\u2271':'nge','\\u2265\\u20D2':'nvge','\\u2266':'lE','\\u2266\\u0338':'nlE','\\u2267':'gE','\\u2267\\u0338':'ngE','\\u2268\\uFE00':'lvnE','\\u2268':'lnE','\\u2269':'gnE','\\u2269\\uFE00':'gvnE','\\u226A':'ll','\\u226A\\u0338':'nLtv','\\u226A\\u20D2':'nLt','\\u226B':'gg','\\u226B\\u0338':'nGtv','\\u226B\\u20D2':'nGt','\\u226C':'twixt','\\u2272':'lsim','\\u2274':'nlsim','\\u2273':'gsim','\\u2275':'ngsim','\\u2276':'lg','\\u2278':'ntlg','\\u2277':'gl','\\u2279':'ntgl','\\u227A':'pr','\\u2280':'npr','\\u227B':'sc','\\u2281':'nsc','\\u227C':'prcue','\\u22E0':'nprcue','\\u227D':'sccue','\\u22E1':'nsccue','\\u227E':'prsim','\\u227F':'scsim','\\u227F\\u0338':'NotSucceedsTilde','\\u2282':'sub','\\u2284':'nsub','\\u2282\\u20D2':'vnsub','\\u2283':'sup','\\u2285':'nsup','\\u2283\\u20D2':'vnsup','\\u2286':'sube','\\u2288':'nsube','\\u2287':'supe','\\u2289':'nsupe','\\u228A\\uFE00':'vsubne','\\u228A':'subne','\\u228B\\uFE00':'vsupne','\\u228B':'supne','\\u228D':'cupdot','\\u228E':'uplus','\\u228F':'sqsub','\\u228F\\u0338':'NotSquareSubset','\\u2290':'sqsup','\\u2290\\u0338':'NotSquareSuperset','\\u2291':'sqsube','\\u22E2':'nsqsube','\\u2292':'sqsupe','\\u22E3':'nsqsupe','\\u2293':'sqcap','\\u2293\\uFE00':'sqcaps','\\u2294':'sqcup','\\u2294\\uFE00':'sqcups','\\u2295':'oplus','\\u2296':'ominus','\\u2297':'otimes','\\u2298':'osol','\\u2299':'odot','\\u229A':'ocir','\\u229B':'oast','\\u229D':'odash','\\u229E':'plusb','\\u229F':'minusb','\\u22A0':'timesb','\\u22A1':'sdotb','\\u22A2':'vdash','\\u22AC':'nvdash','\\u22A3':'dashv','\\u22A4':'top','\\u22A5':'bot','\\u22A7':'models','\\u22A8':'vDash','\\u22AD':'nvDash','\\u22A9':'Vdash','\\u22AE':'nVdash','\\u22AA':'Vvdash','\\u22AB':'VDash','\\u22AF':'nVDash','\\u22B0':'prurel','\\u22B2':'vltri','\\u22EA':'nltri','\\u22B3':'vrtri','\\u22EB':'nrtri','\\u22B4':'ltrie','\\u22EC':'nltrie','\\u22B4\\u20D2':'nvltrie','\\u22B5':'rtrie','\\u22ED':'nrtrie','\\u22B5\\u20D2':'nvrtrie','\\u22B6':'origof','\\u22B7':'imof','\\u22B8':'mumap','\\u22B9':'hercon','\\u22BA':'intcal','\\u22BB':'veebar','\\u22BD':'barvee','\\u22BE':'angrtvb','\\u22BF':'lrtri','\\u22C0':'Wedge','\\u22C1':'Vee','\\u22C2':'xcap','\\u22C3':'xcup','\\u22C4':'diam','\\u22C5':'sdot','\\u22C6':'Star','\\u22C7':'divonx','\\u22C8':'bowtie','\\u22C9':'ltimes','\\u22CA':'rtimes','\\u22CB':'lthree','\\u22CC':'rthree','\\u22CD':'bsime','\\u22CE':'cuvee','\\u22CF':'cuwed','\\u22D0':'Sub','\\u22D1':'Sup','\\u22D2':'Cap','\\u22D3':'Cup','\\u22D4':'fork','\\u22D5':'epar','\\u22D6':'ltdot','\\u22D7':'gtdot','\\u22D8':'Ll','\\u22D8\\u0338':'nLl','\\u22D9':'Gg','\\u22D9\\u0338':'nGg','\\u22DA\\uFE00':'lesg','\\u22DA':'leg','\\u22DB':'gel','\\u22DB\\uFE00':'gesl','\\u22DE':'cuepr','\\u22DF':'cuesc','\\u22E6':'lnsim','\\u22E7':'gnsim','\\u22E8':'prnsim','\\u22E9':'scnsim','\\u22EE':'vellip','\\u22EF':'ctdot','\\u22F0':'utdot','\\u22F1':'dtdot','\\u22F2':'disin','\\u22F3':'isinsv','\\u22F4':'isins','\\u22F5':'isindot','\\u22F5\\u0338':'notindot','\\u22F6':'notinvc','\\u22F7':'notinvb','\\u22F9':'isinE','\\u22F9\\u0338':'notinE','\\u22FA':'nisd','\\u22FB':'xnis','\\u22FC':'nis','\\u22FD':'notnivc','\\u22FE':'notnivb','\\u2305':'barwed','\\u2306':'Barwed','\\u230C':'drcrop','\\u230D':'dlcrop','\\u230E':'urcrop','\\u230F':'ulcrop','\\u2310':'bnot','\\u2312':'profline','\\u2313':'profsurf','\\u2315':'telrec','\\u2316':'target','\\u231C':'ulcorn','\\u231D':'urcorn','\\u231E':'dlcorn','\\u231F':'drcorn','\\u2322':'frown','\\u2323':'smile','\\u232D':'cylcty','\\u232E':'profalar','\\u2336':'topbot','\\u233D':'ovbar','\\u233F':'solbar','\\u237C':'angzarr','\\u23B0':'lmoust','\\u23B1':'rmoust','\\u23B4':'tbrk','\\u23B5':'bbrk','\\u23B6':'bbrktbrk','\\u23DC':'OverParenthesis','\\u23DD':'UnderParenthesis','\\u23DE':'OverBrace','\\u23DF':'UnderBrace','\\u23E2':'trpezium','\\u23E7':'elinters','\\u2423':'blank','\\u2500':'boxh','\\u2502':'boxv','\\u250C':'boxdr','\\u2510':'boxdl','\\u2514':'boxur','\\u2518':'boxul','\\u251C':'boxvr','\\u2524':'boxvl','\\u252C':'boxhd','\\u2534':'boxhu','\\u253C':'boxvh','\\u2550':'boxH','\\u2551':'boxV','\\u2552':'boxdR','\\u2553':'boxDr','\\u2554':'boxDR','\\u2555':'boxdL','\\u2556':'boxDl','\\u2557':'boxDL','\\u2558':'boxuR','\\u2559':'boxUr','\\u255A':'boxUR','\\u255B':'boxuL','\\u255C':'boxUl','\\u255D':'boxUL','\\u255E':'boxvR','\\u255F':'boxVr','\\u2560':'boxVR','\\u2561':'boxvL','\\u2562':'boxVl','\\u2563':'boxVL','\\u2564':'boxHd','\\u2565':'boxhD','\\u2566':'boxHD','\\u2567':'boxHu','\\u2568':'boxhU','\\u2569':'boxHU','\\u256A':'boxvH','\\u256B':'boxVh','\\u256C':'boxVH','\\u2580':'uhblk','\\u2584':'lhblk','\\u2588':'block','\\u2591':'blk14','\\u2592':'blk12','\\u2593':'blk34','\\u25A1':'squ','\\u25AA':'squf','\\u25AB':'EmptyVerySmallSquare','\\u25AD':'rect','\\u25AE':'marker','\\u25B1':'fltns','\\u25B3':'xutri','\\u25B4':'utrif','\\u25B5':'utri','\\u25B8':'rtrif','\\u25B9':'rtri','\\u25BD':'xdtri','\\u25BE':'dtrif','\\u25BF':'dtri','\\u25C2':'ltrif','\\u25C3':'ltri','\\u25CA':'loz','\\u25CB':'cir','\\u25EC':'tridot','\\u25EF':'xcirc','\\u25F8':'ultri','\\u25F9':'urtri','\\u25FA':'lltri','\\u25FB':'EmptySmallSquare','\\u25FC':'FilledSmallSquare','\\u2605':'starf','\\u2606':'star','\\u260E':'phone','\\u2640':'female','\\u2642':'male','\\u2660':'spades','\\u2663':'clubs','\\u2665':'hearts','\\u2666':'diams','\\u266A':'sung','\\u2713':'check','\\u2717':'cross','\\u2720':'malt','\\u2736':'sext','\\u2758':'VerticalSeparator','\\u27C8':'bsolhsub','\\u27C9':'suphsol','\\u27F5':'xlarr','\\u27F6':'xrarr','\\u27F7':'xharr','\\u27F8':'xlArr','\\u27F9':'xrArr','\\u27FA':'xhArr','\\u27FC':'xmap','\\u27FF':'dzigrarr','\\u2902':'nvlArr','\\u2903':'nvrArr','\\u2904':'nvHarr','\\u2905':'Map','\\u290C':'lbarr','\\u290D':'rbarr','\\u290E':'lBarr','\\u290F':'rBarr','\\u2910':'RBarr','\\u2911':'DDotrahd','\\u2912':'UpArrowBar','\\u2913':'DownArrowBar','\\u2916':'Rarrtl','\\u2919':'latail','\\u291A':'ratail','\\u291B':'lAtail','\\u291C':'rAtail','\\u291D':'larrfs','\\u291E':'rarrfs','\\u291F':'larrbfs','\\u2920':'rarrbfs','\\u2923':'nwarhk','\\u2924':'nearhk','\\u2925':'searhk','\\u2926':'swarhk','\\u2927':'nwnear','\\u2928':'toea','\\u2929':'tosa','\\u292A':'swnwar','\\u2933':'rarrc','\\u2933\\u0338':'nrarrc','\\u2935':'cudarrr','\\u2936':'ldca','\\u2937':'rdca','\\u2938':'cudarrl','\\u2939':'larrpl','\\u293C':'curarrm','\\u293D':'cularrp','\\u2945':'rarrpl','\\u2948':'harrcir','\\u2949':'Uarrocir','\\u294A':'lurdshar','\\u294B':'ldrushar','\\u294E':'LeftRightVector','\\u294F':'RightUpDownVector','\\u2950':'DownLeftRightVector','\\u2951':'LeftUpDownVector','\\u2952':'LeftVectorBar','\\u2953':'RightVectorBar','\\u2954':'RightUpVectorBar','\\u2955':'RightDownVectorBar','\\u2956':'DownLeftVectorBar','\\u2957':'DownRightVectorBar','\\u2958':'LeftUpVectorBar','\\u2959':'LeftDownVectorBar','\\u295A':'LeftTeeVector','\\u295B':'RightTeeVector','\\u295C':'RightUpTeeVector','\\u295D':'RightDownTeeVector','\\u295E':'DownLeftTeeVector','\\u295F':'DownRightTeeVector','\\u2960':'LeftUpTeeVector','\\u2961':'LeftDownTeeVector','\\u2962':'lHar','\\u2963':'uHar','\\u2964':'rHar','\\u2965':'dHar','\\u2966':'luruhar','\\u2967':'ldrdhar','\\u2968':'ruluhar','\\u2969':'rdldhar','\\u296A':'lharul','\\u296B':'llhard','\\u296C':'rharul','\\u296D':'lrhard','\\u296E':'udhar','\\u296F':'duhar','\\u2970':'RoundImplies','\\u2971':'erarr','\\u2972':'simrarr','\\u2973':'larrsim','\\u2974':'rarrsim','\\u2975':'rarrap','\\u2976':'ltlarr','\\u2978':'gtrarr','\\u2979':'subrarr','\\u297B':'suplarr','\\u297C':'lfisht','\\u297D':'rfisht','\\u297E':'ufisht','\\u297F':'dfisht','\\u299A':'vzigzag','\\u299C':'vangrt','\\u299D':'angrtvbd','\\u29A4':'ange','\\u29A5':'range','\\u29A6':'dwangle','\\u29A7':'uwangle','\\u29A8':'angmsdaa','\\u29A9':'angmsdab','\\u29AA':'angmsdac','\\u29AB':'angmsdad','\\u29AC':'angmsdae','\\u29AD':'angmsdaf','\\u29AE':'angmsdag','\\u29AF':'angmsdah','\\u29B0':'bemptyv','\\u29B1':'demptyv','\\u29B2':'cemptyv','\\u29B3':'raemptyv','\\u29B4':'laemptyv','\\u29B5':'ohbar','\\u29B6':'omid','\\u29B7':'opar','\\u29B9':'operp','\\u29BB':'olcross','\\u29BC':'odsold','\\u29BE':'olcir','\\u29BF':'ofcir','\\u29C0':'olt','\\u29C1':'ogt','\\u29C2':'cirscir','\\u29C3':'cirE','\\u29C4':'solb','\\u29C5':'bsolb','\\u29C9':'boxbox','\\u29CD':'trisb','\\u29CE':'rtriltri','\\u29CF':'LeftTriangleBar','\\u29CF\\u0338':'NotLeftTriangleBar','\\u29D0':'RightTriangleBar','\\u29D0\\u0338':'NotRightTriangleBar','\\u29DC':'iinfin','\\u29DD':'infintie','\\u29DE':'nvinfin','\\u29E3':'eparsl','\\u29E4':'smeparsl','\\u29E5':'eqvparsl','\\u29EB':'lozf','\\u29F4':'RuleDelayed','\\u29F6':'dsol','\\u2A00':'xodot','\\u2A01':'xoplus','\\u2A02':'xotime','\\u2A04':'xuplus','\\u2A06':'xsqcup','\\u2A0D':'fpartint','\\u2A10':'cirfnint','\\u2A11':'awint','\\u2A12':'rppolint','\\u2A13':'scpolint','\\u2A14':'npolint','\\u2A15':'pointint','\\u2A16':'quatint','\\u2A17':'intlarhk','\\u2A22':'pluscir','\\u2A23':'plusacir','\\u2A24':'simplus','\\u2A25':'plusdu','\\u2A26':'plussim','\\u2A27':'plustwo','\\u2A29':'mcomma','\\u2A2A':'minusdu','\\u2A2D':'loplus','\\u2A2E':'roplus','\\u2A2F':'Cross','\\u2A30':'timesd','\\u2A31':'timesbar','\\u2A33':'smashp','\\u2A34':'lotimes','\\u2A35':'rotimes','\\u2A36':'otimesas','\\u2A37':'Otimes','\\u2A38':'odiv','\\u2A39':'triplus','\\u2A3A':'triminus','\\u2A3B':'tritime','\\u2A3C':'iprod','\\u2A3F':'amalg','\\u2A40':'capdot','\\u2A42':'ncup','\\u2A43':'ncap','\\u2A44':'capand','\\u2A45':'cupor','\\u2A46':'cupcap','\\u2A47':'capcup','\\u2A48':'cupbrcap','\\u2A49':'capbrcup','\\u2A4A':'cupcup','\\u2A4B':'capcap','\\u2A4C':'ccups','\\u2A4D':'ccaps','\\u2A50':'ccupssm','\\u2A53':'And','\\u2A54':'Or','\\u2A55':'andand','\\u2A56':'oror','\\u2A57':'orslope','\\u2A58':'andslope','\\u2A5A':'andv','\\u2A5B':'orv','\\u2A5C':'andd','\\u2A5D':'ord','\\u2A5F':'wedbar','\\u2A66':'sdote','\\u2A6A':'simdot','\\u2A6D':'congdot','\\u2A6D\\u0338':'ncongdot','\\u2A6E':'easter','\\u2A6F':'apacir','\\u2A70':'apE','\\u2A70\\u0338':'napE','\\u2A71':'eplus','\\u2A72':'pluse','\\u2A73':'Esim','\\u2A77':'eDDot','\\u2A78':'equivDD','\\u2A79':'ltcir','\\u2A7A':'gtcir','\\u2A7B':'ltquest','\\u2A7C':'gtquest','\\u2A7D':'les','\\u2A7D\\u0338':'nles','\\u2A7E':'ges','\\u2A7E\\u0338':'nges','\\u2A7F':'lesdot','\\u2A80':'gesdot','\\u2A81':'lesdoto','\\u2A82':'gesdoto','\\u2A83':'lesdotor','\\u2A84':'gesdotol','\\u2A85':'lap','\\u2A86':'gap','\\u2A87':'lne','\\u2A88':'gne','\\u2A89':'lnap','\\u2A8A':'gnap','\\u2A8B':'lEg','\\u2A8C':'gEl','\\u2A8D':'lsime','\\u2A8E':'gsime','\\u2A8F':'lsimg','\\u2A90':'gsiml','\\u2A91':'lgE','\\u2A92':'glE','\\u2A93':'lesges','\\u2A94':'gesles','\\u2A95':'els','\\u2A96':'egs','\\u2A97':'elsdot','\\u2A98':'egsdot','\\u2A99':'el','\\u2A9A':'eg','\\u2A9D':'siml','\\u2A9E':'simg','\\u2A9F':'simlE','\\u2AA0':'simgE','\\u2AA1':'LessLess','\\u2AA1\\u0338':'NotNestedLessLess','\\u2AA2':'GreaterGreater','\\u2AA2\\u0338':'NotNestedGreaterGreater','\\u2AA4':'glj','\\u2AA5':'gla','\\u2AA6':'ltcc','\\u2AA7':'gtcc','\\u2AA8':'lescc','\\u2AA9':'gescc','\\u2AAA':'smt','\\u2AAB':'lat','\\u2AAC':'smte','\\u2AAC\\uFE00':'smtes','\\u2AAD':'late','\\u2AAD\\uFE00':'lates','\\u2AAE':'bumpE','\\u2AAF':'pre','\\u2AAF\\u0338':'npre','\\u2AB0':'sce','\\u2AB0\\u0338':'nsce','\\u2AB3':'prE','\\u2AB4':'scE','\\u2AB5':'prnE','\\u2AB6':'scnE','\\u2AB7':'prap','\\u2AB8':'scap','\\u2AB9':'prnap','\\u2ABA':'scnap','\\u2ABB':'Pr','\\u2ABC':'Sc','\\u2ABD':'subdot','\\u2ABE':'supdot','\\u2ABF':'subplus','\\u2AC0':'supplus','\\u2AC1':'submult','\\u2AC2':'supmult','\\u2AC3':'subedot','\\u2AC4':'supedot','\\u2AC5':'subE','\\u2AC5\\u0338':'nsubE','\\u2AC6':'supE','\\u2AC6\\u0338':'nsupE','\\u2AC7':'subsim','\\u2AC8':'supsim','\\u2ACB\\uFE00':'vsubnE','\\u2ACB':'subnE','\\u2ACC\\uFE00':'vsupnE','\\u2ACC':'supnE','\\u2ACF':'csub','\\u2AD0':'csup','\\u2AD1':'csube','\\u2AD2':'csupe','\\u2AD3':'subsup','\\u2AD4':'supsub','\\u2AD5':'subsub','\\u2AD6':'supsup','\\u2AD7':'suphsub','\\u2AD8':'supdsub','\\u2AD9':'forkv','\\u2ADA':'topfork','\\u2ADB':'mlcp','\\u2AE4':'Dashv','\\u2AE6':'Vdashl','\\u2AE7':'Barv','\\u2AE8':'vBar','\\u2AE9':'vBarv','\\u2AEB':'Vbar','\\u2AEC':'Not','\\u2AED':'bNot','\\u2AEE':'rnmid','\\u2AEF':'cirmid','\\u2AF0':'midcir','\\u2AF1':'topcir','\\u2AF2':'nhpar','\\u2AF3':'parsim','\\u2AFD':'parsl','\\u2AFD\\u20E5':'nparsl','\\u266D':'flat','\\u266E':'natur','\\u266F':'sharp','\\xA4':'curren','\\xA2':'cent','$':'dollar','\\xA3':'pound','\\xA5':'yen','\\u20AC':'euro','\\xB9':'sup1','\\xBD':'half','\\u2153':'frac13','\\xBC':'frac14','\\u2155':'frac15','\\u2159':'frac16','\\u215B':'frac18','\\xB2':'sup2','\\u2154':'frac23','\\u2156':'frac25','\\xB3':'sup3','\\xBE':'frac34','\\u2157':'frac35','\\u215C':'frac38','\\u2158':'frac45','\\u215A':'frac56','\\u215D':'frac58','\\u215E':'frac78','\\uD835\\uDCB6':'ascr','\\uD835\\uDD52':'aopf','\\uD835\\uDD1E':'afr','\\uD835\\uDD38':'Aopf','\\uD835\\uDD04':'Afr','\\uD835\\uDC9C':'Ascr','\\xAA':'ordf','\\xE1':'aacute','\\xC1':'Aacute','\\xE0':'agrave','\\xC0':'Agrave','\\u0103':'abreve','\\u0102':'Abreve','\\xE2':'acirc','\\xC2':'Acirc','\\xE5':'aring','\\xC5':'angst','\\xE4':'auml','\\xC4':'Auml','\\xE3':'atilde','\\xC3':'Atilde','\\u0105':'aogon','\\u0104':'Aogon','\\u0101':'amacr','\\u0100':'Amacr','\\xE6':'aelig','\\xC6':'AElig','\\uD835\\uDCB7':'bscr','\\uD835\\uDD53':'bopf','\\uD835\\uDD1F':'bfr','\\uD835\\uDD39':'Bopf','\\u212C':'Bscr','\\uD835\\uDD05':'Bfr','\\uD835\\uDD20':'cfr','\\uD835\\uDCB8':'cscr','\\uD835\\uDD54':'copf','\\u212D':'Cfr','\\uD835\\uDC9E':'Cscr','\\u2102':'Copf','\\u0107':'cacute','\\u0106':'Cacute','\\u0109':'ccirc','\\u0108':'Ccirc','\\u010D':'ccaron','\\u010C':'Ccaron','\\u010B':'cdot','\\u010A':'Cdot','\\xE7':'ccedil','\\xC7':'Ccedil','\\u2105':'incare','\\uD835\\uDD21':'dfr','\\u2146':'dd','\\uD835\\uDD55':'dopf','\\uD835\\uDCB9':'dscr','\\uD835\\uDC9F':'Dscr','\\uD835\\uDD07':'Dfr','\\u2145':'DD','\\uD835\\uDD3B':'Dopf','\\u010F':'dcaron','\\u010E':'Dcaron','\\u0111':'dstrok','\\u0110':'Dstrok','\\xF0':'eth','\\xD0':'ETH','\\u2147':'ee','\\u212F':'escr','\\uD835\\uDD22':'efr','\\uD835\\uDD56':'eopf','\\u2130':'Escr','\\uD835\\uDD08':'Efr','\\uD835\\uDD3C':'Eopf','\\xE9':'eacute','\\xC9':'Eacute','\\xE8':'egrave','\\xC8':'Egrave','\\xEA':'ecirc','\\xCA':'Ecirc','\\u011B':'ecaron','\\u011A':'Ecaron','\\xEB':'euml','\\xCB':'Euml','\\u0117':'edot','\\u0116':'Edot','\\u0119':'eogon','\\u0118':'Eogon','\\u0113':'emacr','\\u0112':'Emacr','\\uD835\\uDD23':'ffr','\\uD835\\uDD57':'fopf','\\uD835\\uDCBB':'fscr','\\uD835\\uDD09':'Ffr','\\uD835\\uDD3D':'Fopf','\\u2131':'Fscr','\\uFB00':'fflig','\\uFB03':'ffilig','\\uFB04':'ffllig','\\uFB01':'filig','fj':'fjlig','\\uFB02':'fllig','\\u0192':'fnof','\\u210A':'gscr','\\uD835\\uDD58':'gopf','\\uD835\\uDD24':'gfr','\\uD835\\uDCA2':'Gscr','\\uD835\\uDD3E':'Gopf','\\uD835\\uDD0A':'Gfr','\\u01F5':'gacute','\\u011F':'gbreve','\\u011E':'Gbreve','\\u011D':'gcirc','\\u011C':'Gcirc','\\u0121':'gdot','\\u0120':'Gdot','\\u0122':'Gcedil','\\uD835\\uDD25':'hfr','\\u210E':'planckh','\\uD835\\uDCBD':'hscr','\\uD835\\uDD59':'hopf','\\u210B':'Hscr','\\u210C':'Hfr','\\u210D':'Hopf','\\u0125':'hcirc','\\u0124':'Hcirc','\\u210F':'hbar','\\u0127':'hstrok','\\u0126':'Hstrok','\\uD835\\uDD5A':'iopf','\\uD835\\uDD26':'ifr','\\uD835\\uDCBE':'iscr','\\u2148':'ii','\\uD835\\uDD40':'Iopf','\\u2110':'Iscr','\\u2111':'Im','\\xED':'iacute','\\xCD':'Iacute','\\xEC':'igrave','\\xCC':'Igrave','\\xEE':'icirc','\\xCE':'Icirc','\\xEF':'iuml','\\xCF':'Iuml','\\u0129':'itilde','\\u0128':'Itilde','\\u0130':'Idot','\\u012F':'iogon','\\u012E':'Iogon','\\u012B':'imacr','\\u012A':'Imacr','\\u0133':'ijlig','\\u0132':'IJlig','\\u0131':'imath','\\uD835\\uDCBF':'jscr','\\uD835\\uDD5B':'jopf','\\uD835\\uDD27':'jfr','\\uD835\\uDCA5':'Jscr','\\uD835\\uDD0D':'Jfr','\\uD835\\uDD41':'Jopf','\\u0135':'jcirc','\\u0134':'Jcirc','\\u0237':'jmath','\\uD835\\uDD5C':'kopf','\\uD835\\uDCC0':'kscr','\\uD835\\uDD28':'kfr','\\uD835\\uDCA6':'Kscr','\\uD835\\uDD42':'Kopf','\\uD835\\uDD0E':'Kfr','\\u0137':'kcedil','\\u0136':'Kcedil','\\uD835\\uDD29':'lfr','\\uD835\\uDCC1':'lscr','\\u2113':'ell','\\uD835\\uDD5D':'lopf','\\u2112':'Lscr','\\uD835\\uDD0F':'Lfr','\\uD835\\uDD43':'Lopf','\\u013A':'lacute','\\u0139':'Lacute','\\u013E':'lcaron','\\u013D':'Lcaron','\\u013C':'lcedil','\\u013B':'Lcedil','\\u0142':'lstrok','\\u0141':'Lstrok','\\u0140':'lmidot','\\u013F':'Lmidot','\\uD835\\uDD2A':'mfr','\\uD835\\uDD5E':'mopf','\\uD835\\uDCC2':'mscr','\\uD835\\uDD10':'Mfr','\\uD835\\uDD44':'Mopf','\\u2133':'Mscr','\\uD835\\uDD2B':'nfr','\\uD835\\uDD5F':'nopf','\\uD835\\uDCC3':'nscr','\\u2115':'Nopf','\\uD835\\uDCA9':'Nscr','\\uD835\\uDD11':'Nfr','\\u0144':'nacute','\\u0143':'Nacute','\\u0148':'ncaron','\\u0147':'Ncaron','\\xF1':'ntilde','\\xD1':'Ntilde','\\u0146':'ncedil','\\u0145':'Ncedil','\\u2116':'numero','\\u014B':'eng','\\u014A':'ENG','\\uD835\\uDD60':'oopf','\\uD835\\uDD2C':'ofr','\\u2134':'oscr','\\uD835\\uDCAA':'Oscr','\\uD835\\uDD12':'Ofr','\\uD835\\uDD46':'Oopf','\\xBA':'ordm','\\xF3':'oacute','\\xD3':'Oacute','\\xF2':'ograve','\\xD2':'Ograve','\\xF4':'ocirc','\\xD4':'Ocirc','\\xF6':'ouml','\\xD6':'Ouml','\\u0151':'odblac','\\u0150':'Odblac','\\xF5':'otilde','\\xD5':'Otilde','\\xF8':'oslash','\\xD8':'Oslash','\\u014D':'omacr','\\u014C':'Omacr','\\u0153':'oelig','\\u0152':'OElig','\\uD835\\uDD2D':'pfr','\\uD835\\uDCC5':'pscr','\\uD835\\uDD61':'popf','\\u2119':'Popf','\\uD835\\uDD13':'Pfr','\\uD835\\uDCAB':'Pscr','\\uD835\\uDD62':'qopf','\\uD835\\uDD2E':'qfr','\\uD835\\uDCC6':'qscr','\\uD835\\uDCAC':'Qscr','\\uD835\\uDD14':'Qfr','\\u211A':'Qopf','\\u0138':'kgreen','\\uD835\\uDD2F':'rfr','\\uD835\\uDD63':'ropf','\\uD835\\uDCC7':'rscr','\\u211B':'Rscr','\\u211C':'Re','\\u211D':'Ropf','\\u0155':'racute','\\u0154':'Racute','\\u0159':'rcaron','\\u0158':'Rcaron','\\u0157':'rcedil','\\u0156':'Rcedil','\\uD835\\uDD64':'sopf','\\uD835\\uDCC8':'sscr','\\uD835\\uDD30':'sfr','\\uD835\\uDD4A':'Sopf','\\uD835\\uDD16':'Sfr','\\uD835\\uDCAE':'Sscr','\\u24C8':'oS','\\u015B':'sacute','\\u015A':'Sacute','\\u015D':'scirc','\\u015C':'Scirc','\\u0161':'scaron','\\u0160':'Scaron','\\u015F':'scedil','\\u015E':'Scedil','\\xDF':'szlig','\\uD835\\uDD31':'tfr','\\uD835\\uDCC9':'tscr','\\uD835\\uDD65':'topf','\\uD835\\uDCAF':'Tscr','\\uD835\\uDD17':'Tfr','\\uD835\\uDD4B':'Topf','\\u0165':'tcaron','\\u0164':'Tcaron','\\u0163':'tcedil','\\u0162':'Tcedil','\\u2122':'trade','\\u0167':'tstrok','\\u0166':'Tstrok','\\uD835\\uDCCA':'uscr','\\uD835\\uDD66':'uopf','\\uD835\\uDD32':'ufr','\\uD835\\uDD4C':'Uopf','\\uD835\\uDD18':'Ufr','\\uD835\\uDCB0':'Uscr','\\xFA':'uacute','\\xDA':'Uacute','\\xF9':'ugrave','\\xD9':'Ugrave','\\u016D':'ubreve','\\u016C':'Ubreve','\\xFB':'ucirc','\\xDB':'Ucirc','\\u016F':'uring','\\u016E':'Uring','\\xFC':'uuml','\\xDC':'Uuml','\\u0171':'udblac','\\u0170':'Udblac','\\u0169':'utilde','\\u0168':'Utilde','\\u0173':'uogon','\\u0172':'Uogon','\\u016B':'umacr','\\u016A':'Umacr','\\uD835\\uDD33':'vfr','\\uD835\\uDD67':'vopf','\\uD835\\uDCCB':'vscr','\\uD835\\uDD19':'Vfr','\\uD835\\uDD4D':'Vopf','\\uD835\\uDCB1':'Vscr','\\uD835\\uDD68':'wopf','\\uD835\\uDCCC':'wscr','\\uD835\\uDD34':'wfr','\\uD835\\uDCB2':'Wscr','\\uD835\\uDD4E':'Wopf','\\uD835\\uDD1A':'Wfr','\\u0175':'wcirc','\\u0174':'Wcirc','\\uD835\\uDD35':'xfr','\\uD835\\uDCCD':'xscr','\\uD835\\uDD69':'xopf','\\uD835\\uDD4F':'Xopf','\\uD835\\uDD1B':'Xfr','\\uD835\\uDCB3':'Xscr','\\uD835\\uDD36':'yfr','\\uD835\\uDCCE':'yscr','\\uD835\\uDD6A':'yopf','\\uD835\\uDCB4':'Yscr','\\uD835\\uDD1C':'Yfr','\\uD835\\uDD50':'Yopf','\\xFD':'yacute','\\xDD':'Yacute','\\u0177':'ycirc','\\u0176':'Ycirc','\\xFF':'yuml','\\u0178':'Yuml','\\uD835\\uDCCF':'zscr','\\uD835\\uDD37':'zfr','\\uD835\\uDD6B':'zopf','\\u2128':'Zfr','\\u2124':'Zopf','\\uD835\\uDCB5':'Zscr','\\u017A':'zacute','\\u0179':'Zacute','\\u017E':'zcaron','\\u017D':'Zcaron','\\u017C':'zdot','\\u017B':'Zdot','\\u01B5':'imped','\\xFE':'thorn','\\xDE':'THORN','\\u0149':'napos','\\u03B1':'alpha','\\u0391':'Alpha','\\u03B2':'beta','\\u0392':'Beta','\\u03B3':'gamma','\\u0393':'Gamma','\\u03B4':'delta','\\u0394':'Delta','\\u03B5':'epsi','\\u03F5':'epsiv','\\u0395':'Epsilon','\\u03DD':'gammad','\\u03DC':'Gammad','\\u03B6':'zeta','\\u0396':'Zeta','\\u03B7':'eta','\\u0397':'Eta','\\u03B8':'theta','\\u03D1':'thetav','\\u0398':'Theta','\\u03B9':'iota','\\u0399':'Iota','\\u03BA':'kappa','\\u03F0':'kappav','\\u039A':'Kappa','\\u03BB':'lambda','\\u039B':'Lambda','\\u03BC':'mu','\\xB5':'micro','\\u039C':'Mu','\\u03BD':'nu','\\u039D':'Nu','\\u03BE':'xi','\\u039E':'Xi','\\u03BF':'omicron','\\u039F':'Omicron','\\u03C0':'pi','\\u03D6':'piv','\\u03A0':'Pi','\\u03C1':'rho','\\u03F1':'rhov','\\u03A1':'Rho','\\u03C3':'sigma','\\u03A3':'Sigma','\\u03C2':'sigmaf','\\u03C4':'tau','\\u03A4':'Tau','\\u03C5':'upsi','\\u03A5':'Upsilon','\\u03D2':'Upsi','\\u03C6':'phi','\\u03D5':'phiv','\\u03A6':'Phi','\\u03C7':'chi','\\u03A7':'Chi','\\u03C8':'psi','\\u03A8':'Psi','\\u03C9':'omega','\\u03A9':'ohm','\\u0430':'acy','\\u0410':'Acy','\\u0431':'bcy','\\u0411':'Bcy','\\u0432':'vcy','\\u0412':'Vcy','\\u0433':'gcy','\\u0413':'Gcy','\\u0453':'gjcy','\\u0403':'GJcy','\\u0434':'dcy','\\u0414':'Dcy','\\u0452':'djcy','\\u0402':'DJcy','\\u0435':'iecy','\\u0415':'IEcy','\\u0451':'iocy','\\u0401':'IOcy','\\u0454':'jukcy','\\u0404':'Jukcy','\\u0436':'zhcy','\\u0416':'ZHcy','\\u0437':'zcy','\\u0417':'Zcy','\\u0455':'dscy','\\u0405':'DScy','\\u0438':'icy','\\u0418':'Icy','\\u0456':'iukcy','\\u0406':'Iukcy','\\u0457':'yicy','\\u0407':'YIcy','\\u0439':'jcy','\\u0419':'Jcy','\\u0458':'jsercy','\\u0408':'Jsercy','\\u043A':'kcy','\\u041A':'Kcy','\\u045C':'kjcy','\\u040C':'KJcy','\\u043B':'lcy','\\u041B':'Lcy','\\u0459':'ljcy','\\u0409':'LJcy','\\u043C':'mcy','\\u041C':'Mcy','\\u043D':'ncy','\\u041D':'Ncy','\\u045A':'njcy','\\u040A':'NJcy','\\u043E':'ocy','\\u041E':'Ocy','\\u043F':'pcy','\\u041F':'Pcy','\\u0440':'rcy','\\u0420':'Rcy','\\u0441':'scy','\\u0421':'Scy','\\u0442':'tcy','\\u0422':'Tcy','\\u045B':'tshcy','\\u040B':'TSHcy','\\u0443':'ucy','\\u0423':'Ucy','\\u045E':'ubrcy','\\u040E':'Ubrcy','\\u0444':'fcy','\\u0424':'Fcy','\\u0445':'khcy','\\u0425':'KHcy','\\u0446':'tscy','\\u0426':'TScy','\\u0447':'chcy','\\u0427':'CHcy','\\u045F':'dzcy','\\u040F':'DZcy','\\u0448':'shcy','\\u0428':'SHcy','\\u0449':'shchcy','\\u0429':'SHCHcy','\\u044A':'hardcy','\\u042A':'HARDcy','\\u044B':'ycy','\\u042B':'Ycy','\\u044C':'softcy','\\u042C':'SOFTcy','\\u044D':'ecy','\\u042D':'Ecy','\\u044E':'yucy','\\u042E':'YUcy','\\u044F':'yacy','\\u042F':'YAcy','\\u2135':'aleph','\\u2136':'beth','\\u2137':'gimel','\\u2138':'daleth'};\n\n\tvar regexEscape = /[\"&'<>`]/g;\n\tvar escapeMap = {\n\t\t'\"': '"',\n\t\t'&': '&',\n\t\t'\\'': ''',\n\t\t'<': '<',\n\t\t// See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the\n\t\t// following is not strictly necessary unless it\u2019s part of a tag or an\n\t\t// unquoted attribute value. We\u2019re only escaping it to support those\n\t\t// situations, and for XML support.\n\t\t'>': '>',\n\t\t// In Internet Explorer \u2264 8, the backtick character can be used\n\t\t// to break out of (un)quoted attribute values or HTML comments.\n\t\t// See http://html5sec.org/#102, http://html5sec.org/#108, and\n\t\t// http://html5sec.org/#133.\n\t\t'`': '`'\n\t};\n\n\tvar regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;\n\tvar regexInvalidRawCodePoint = /[\\0-\\x08\\x0B\\x0E-\\x1F\\x7F-\\x9F\\uFDD0-\\uFDEF\\uFFFE\\uFFFF]|[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n\tvar regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;\n\tvar decodeMap = {'aacute':'\\xE1','Aacute':'\\xC1','abreve':'\\u0103','Abreve':'\\u0102','ac':'\\u223E','acd':'\\u223F','acE':'\\u223E\\u0333','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','acy':'\\u0430','Acy':'\\u0410','aelig':'\\xE6','AElig':'\\xC6','af':'\\u2061','afr':'\\uD835\\uDD1E','Afr':'\\uD835\\uDD04','agrave':'\\xE0','Agrave':'\\xC0','alefsym':'\\u2135','aleph':'\\u2135','alpha':'\\u03B1','Alpha':'\\u0391','amacr':'\\u0101','Amacr':'\\u0100','amalg':'\\u2A3F','amp':'&','AMP':'&','and':'\\u2227','And':'\\u2A53','andand':'\\u2A55','andd':'\\u2A5C','andslope':'\\u2A58','andv':'\\u2A5A','ang':'\\u2220','ange':'\\u29A4','angle':'\\u2220','angmsd':'\\u2221','angmsdaa':'\\u29A8','angmsdab':'\\u29A9','angmsdac':'\\u29AA','angmsdad':'\\u29AB','angmsdae':'\\u29AC','angmsdaf':'\\u29AD','angmsdag':'\\u29AE','angmsdah':'\\u29AF','angrt':'\\u221F','angrtvb':'\\u22BE','angrtvbd':'\\u299D','angsph':'\\u2222','angst':'\\xC5','angzarr':'\\u237C','aogon':'\\u0105','Aogon':'\\u0104','aopf':'\\uD835\\uDD52','Aopf':'\\uD835\\uDD38','ap':'\\u2248','apacir':'\\u2A6F','ape':'\\u224A','apE':'\\u2A70','apid':'\\u224B','apos':'\\'','ApplyFunction':'\\u2061','approx':'\\u2248','approxeq':'\\u224A','aring':'\\xE5','Aring':'\\xC5','ascr':'\\uD835\\uDCB6','Ascr':'\\uD835\\uDC9C','Assign':'\\u2254','ast':'*','asymp':'\\u2248','asympeq':'\\u224D','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','awconint':'\\u2233','awint':'\\u2A11','backcong':'\\u224C','backepsilon':'\\u03F6','backprime':'\\u2035','backsim':'\\u223D','backsimeq':'\\u22CD','Backslash':'\\u2216','Barv':'\\u2AE7','barvee':'\\u22BD','barwed':'\\u2305','Barwed':'\\u2306','barwedge':'\\u2305','bbrk':'\\u23B5','bbrktbrk':'\\u23B6','bcong':'\\u224C','bcy':'\\u0431','Bcy':'\\u0411','bdquo':'\\u201E','becaus':'\\u2235','because':'\\u2235','Because':'\\u2235','bemptyv':'\\u29B0','bepsi':'\\u03F6','bernou':'\\u212C','Bernoullis':'\\u212C','beta':'\\u03B2','Beta':'\\u0392','beth':'\\u2136','between':'\\u226C','bfr':'\\uD835\\uDD1F','Bfr':'\\uD835\\uDD05','bigcap':'\\u22C2','bigcirc':'\\u25EF','bigcup':'\\u22C3','bigodot':'\\u2A00','bigoplus':'\\u2A01','bigotimes':'\\u2A02','bigsqcup':'\\u2A06','bigstar':'\\u2605','bigtriangledown':'\\u25BD','bigtriangleup':'\\u25B3','biguplus':'\\u2A04','bigvee':'\\u22C1','bigwedge':'\\u22C0','bkarow':'\\u290D','blacklozenge':'\\u29EB','blacksquare':'\\u25AA','blacktriangle':'\\u25B4','blacktriangledown':'\\u25BE','blacktriangleleft':'\\u25C2','blacktriangleright':'\\u25B8','blank':'\\u2423','blk12':'\\u2592','blk14':'\\u2591','blk34':'\\u2593','block':'\\u2588','bne':'=\\u20E5','bnequiv':'\\u2261\\u20E5','bnot':'\\u2310','bNot':'\\u2AED','bopf':'\\uD835\\uDD53','Bopf':'\\uD835\\uDD39','bot':'\\u22A5','bottom':'\\u22A5','bowtie':'\\u22C8','boxbox':'\\u29C9','boxdl':'\\u2510','boxdL':'\\u2555','boxDl':'\\u2556','boxDL':'\\u2557','boxdr':'\\u250C','boxdR':'\\u2552','boxDr':'\\u2553','boxDR':'\\u2554','boxh':'\\u2500','boxH':'\\u2550','boxhd':'\\u252C','boxhD':'\\u2565','boxHd':'\\u2564','boxHD':'\\u2566','boxhu':'\\u2534','boxhU':'\\u2568','boxHu':'\\u2567','boxHU':'\\u2569','boxminus':'\\u229F','boxplus':'\\u229E','boxtimes':'\\u22A0','boxul':'\\u2518','boxuL':'\\u255B','boxUl':'\\u255C','boxUL':'\\u255D','boxur':'\\u2514','boxuR':'\\u2558','boxUr':'\\u2559','boxUR':'\\u255A','boxv':'\\u2502','boxV':'\\u2551','boxvh':'\\u253C','boxvH':'\\u256A','boxVh':'\\u256B','boxVH':'\\u256C','boxvl':'\\u2524','boxvL':'\\u2561','boxVl':'\\u2562','boxVL':'\\u2563','boxvr':'\\u251C','boxvR':'\\u255E','boxVr':'\\u255F','boxVR':'\\u2560','bprime':'\\u2035','breve':'\\u02D8','Breve':'\\u02D8','brvbar':'\\xA6','bscr':'\\uD835\\uDCB7','Bscr':'\\u212C','bsemi':'\\u204F','bsim':'\\u223D','bsime':'\\u22CD','bsol':'\\\\','bsolb':'\\u29C5','bsolhsub':'\\u27C8','bull':'\\u2022','bullet':'\\u2022','bump':'\\u224E','bumpe':'\\u224F','bumpE':'\\u2AAE','bumpeq':'\\u224F','Bumpeq':'\\u224E','cacute':'\\u0107','Cacute':'\\u0106','cap':'\\u2229','Cap':'\\u22D2','capand':'\\u2A44','capbrcup':'\\u2A49','capcap':'\\u2A4B','capcup':'\\u2A47','capdot':'\\u2A40','CapitalDifferentialD':'\\u2145','caps':'\\u2229\\uFE00','caret':'\\u2041','caron':'\\u02C7','Cayleys':'\\u212D','ccaps':'\\u2A4D','ccaron':'\\u010D','Ccaron':'\\u010C','ccedil':'\\xE7','Ccedil':'\\xC7','ccirc':'\\u0109','Ccirc':'\\u0108','Cconint':'\\u2230','ccups':'\\u2A4C','ccupssm':'\\u2A50','cdot':'\\u010B','Cdot':'\\u010A','cedil':'\\xB8','Cedilla':'\\xB8','cemptyv':'\\u29B2','cent':'\\xA2','centerdot':'\\xB7','CenterDot':'\\xB7','cfr':'\\uD835\\uDD20','Cfr':'\\u212D','chcy':'\\u0447','CHcy':'\\u0427','check':'\\u2713','checkmark':'\\u2713','chi':'\\u03C7','Chi':'\\u03A7','cir':'\\u25CB','circ':'\\u02C6','circeq':'\\u2257','circlearrowleft':'\\u21BA','circlearrowright':'\\u21BB','circledast':'\\u229B','circledcirc':'\\u229A','circleddash':'\\u229D','CircleDot':'\\u2299','circledR':'\\xAE','circledS':'\\u24C8','CircleMinus':'\\u2296','CirclePlus':'\\u2295','CircleTimes':'\\u2297','cire':'\\u2257','cirE':'\\u29C3','cirfnint':'\\u2A10','cirmid':'\\u2AEF','cirscir':'\\u29C2','ClockwiseContourIntegral':'\\u2232','CloseCurlyDoubleQuote':'\\u201D','CloseCurlyQuote':'\\u2019','clubs':'\\u2663','clubsuit':'\\u2663','colon':':','Colon':'\\u2237','colone':'\\u2254','Colone':'\\u2A74','coloneq':'\\u2254','comma':',','commat':'@','comp':'\\u2201','compfn':'\\u2218','complement':'\\u2201','complexes':'\\u2102','cong':'\\u2245','congdot':'\\u2A6D','Congruent':'\\u2261','conint':'\\u222E','Conint':'\\u222F','ContourIntegral':'\\u222E','copf':'\\uD835\\uDD54','Copf':'\\u2102','coprod':'\\u2210','Coproduct':'\\u2210','copy':'\\xA9','COPY':'\\xA9','copysr':'\\u2117','CounterClockwiseContourIntegral':'\\u2233','crarr':'\\u21B5','cross':'\\u2717','Cross':'\\u2A2F','cscr':'\\uD835\\uDCB8','Cscr':'\\uD835\\uDC9E','csub':'\\u2ACF','csube':'\\u2AD1','csup':'\\u2AD0','csupe':'\\u2AD2','ctdot':'\\u22EF','cudarrl':'\\u2938','cudarrr':'\\u2935','cuepr':'\\u22DE','cuesc':'\\u22DF','cularr':'\\u21B6','cularrp':'\\u293D','cup':'\\u222A','Cup':'\\u22D3','cupbrcap':'\\u2A48','cupcap':'\\u2A46','CupCap':'\\u224D','cupcup':'\\u2A4A','cupdot':'\\u228D','cupor':'\\u2A45','cups':'\\u222A\\uFE00','curarr':'\\u21B7','curarrm':'\\u293C','curlyeqprec':'\\u22DE','curlyeqsucc':'\\u22DF','curlyvee':'\\u22CE','curlywedge':'\\u22CF','curren':'\\xA4','curvearrowleft':'\\u21B6','curvearrowright':'\\u21B7','cuvee':'\\u22CE','cuwed':'\\u22CF','cwconint':'\\u2232','cwint':'\\u2231','cylcty':'\\u232D','dagger':'\\u2020','Dagger':'\\u2021','daleth':'\\u2138','darr':'\\u2193','dArr':'\\u21D3','Darr':'\\u21A1','dash':'\\u2010','dashv':'\\u22A3','Dashv':'\\u2AE4','dbkarow':'\\u290F','dblac':'\\u02DD','dcaron':'\\u010F','Dcaron':'\\u010E','dcy':'\\u0434','Dcy':'\\u0414','dd':'\\u2146','DD':'\\u2145','ddagger':'\\u2021','ddarr':'\\u21CA','DDotrahd':'\\u2911','ddotseq':'\\u2A77','deg':'\\xB0','Del':'\\u2207','delta':'\\u03B4','Delta':'\\u0394','demptyv':'\\u29B1','dfisht':'\\u297F','dfr':'\\uD835\\uDD21','Dfr':'\\uD835\\uDD07','dHar':'\\u2965','dharl':'\\u21C3','dharr':'\\u21C2','DiacriticalAcute':'\\xB4','DiacriticalDot':'\\u02D9','DiacriticalDoubleAcute':'\\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\\u02DC','diam':'\\u22C4','diamond':'\\u22C4','Diamond':'\\u22C4','diamondsuit':'\\u2666','diams':'\\u2666','die':'\\xA8','DifferentialD':'\\u2146','digamma':'\\u03DD','disin':'\\u22F2','div':'\\xF7','divide':'\\xF7','divideontimes':'\\u22C7','divonx':'\\u22C7','djcy':'\\u0452','DJcy':'\\u0402','dlcorn':'\\u231E','dlcrop':'\\u230D','dollar':'$','dopf':'\\uD835\\uDD55','Dopf':'\\uD835\\uDD3B','dot':'\\u02D9','Dot':'\\xA8','DotDot':'\\u20DC','doteq':'\\u2250','doteqdot':'\\u2251','DotEqual':'\\u2250','dotminus':'\\u2238','dotplus':'\\u2214','dotsquare':'\\u22A1','doublebarwedge':'\\u2306','DoubleContourIntegral':'\\u222F','DoubleDot':'\\xA8','DoubleDownArrow':'\\u21D3','DoubleLeftArrow':'\\u21D0','DoubleLeftRightArrow':'\\u21D4','DoubleLeftTee':'\\u2AE4','DoubleLongLeftArrow':'\\u27F8','DoubleLongLeftRightArrow':'\\u27FA','DoubleLongRightArrow':'\\u27F9','DoubleRightArrow':'\\u21D2','DoubleRightTee':'\\u22A8','DoubleUpArrow':'\\u21D1','DoubleUpDownArrow':'\\u21D5','DoubleVerticalBar':'\\u2225','downarrow':'\\u2193','Downarrow':'\\u21D3','DownArrow':'\\u2193','DownArrowBar':'\\u2913','DownArrowUpArrow':'\\u21F5','DownBreve':'\\u0311','downdownarrows':'\\u21CA','downharpoonleft':'\\u21C3','downharpoonright':'\\u21C2','DownLeftRightVector':'\\u2950','DownLeftTeeVector':'\\u295E','DownLeftVector':'\\u21BD','DownLeftVectorBar':'\\u2956','DownRightTeeVector':'\\u295F','DownRightVector':'\\u21C1','DownRightVectorBar':'\\u2957','DownTee':'\\u22A4','DownTeeArrow':'\\u21A7','drbkarow':'\\u2910','drcorn':'\\u231F','drcrop':'\\u230C','dscr':'\\uD835\\uDCB9','Dscr':'\\uD835\\uDC9F','dscy':'\\u0455','DScy':'\\u0405','dsol':'\\u29F6','dstrok':'\\u0111','Dstrok':'\\u0110','dtdot':'\\u22F1','dtri':'\\u25BF','dtrif':'\\u25BE','duarr':'\\u21F5','duhar':'\\u296F','dwangle':'\\u29A6','dzcy':'\\u045F','DZcy':'\\u040F','dzigrarr':'\\u27FF','eacute':'\\xE9','Eacute':'\\xC9','easter':'\\u2A6E','ecaron':'\\u011B','Ecaron':'\\u011A','ecir':'\\u2256','ecirc':'\\xEA','Ecirc':'\\xCA','ecolon':'\\u2255','ecy':'\\u044D','Ecy':'\\u042D','eDDot':'\\u2A77','edot':'\\u0117','eDot':'\\u2251','Edot':'\\u0116','ee':'\\u2147','efDot':'\\u2252','efr':'\\uD835\\uDD22','Efr':'\\uD835\\uDD08','eg':'\\u2A9A','egrave':'\\xE8','Egrave':'\\xC8','egs':'\\u2A96','egsdot':'\\u2A98','el':'\\u2A99','Element':'\\u2208','elinters':'\\u23E7','ell':'\\u2113','els':'\\u2A95','elsdot':'\\u2A97','emacr':'\\u0113','Emacr':'\\u0112','empty':'\\u2205','emptyset':'\\u2205','EmptySmallSquare':'\\u25FB','emptyv':'\\u2205','EmptyVerySmallSquare':'\\u25AB','emsp':'\\u2003','emsp13':'\\u2004','emsp14':'\\u2005','eng':'\\u014B','ENG':'\\u014A','ensp':'\\u2002','eogon':'\\u0119','Eogon':'\\u0118','eopf':'\\uD835\\uDD56','Eopf':'\\uD835\\uDD3C','epar':'\\u22D5','eparsl':'\\u29E3','eplus':'\\u2A71','epsi':'\\u03B5','epsilon':'\\u03B5','Epsilon':'\\u0395','epsiv':'\\u03F5','eqcirc':'\\u2256','eqcolon':'\\u2255','eqsim':'\\u2242','eqslantgtr':'\\u2A96','eqslantless':'\\u2A95','Equal':'\\u2A75','equals':'=','EqualTilde':'\\u2242','equest':'\\u225F','Equilibrium':'\\u21CC','equiv':'\\u2261','equivDD':'\\u2A78','eqvparsl':'\\u29E5','erarr':'\\u2971','erDot':'\\u2253','escr':'\\u212F','Escr':'\\u2130','esdot':'\\u2250','esim':'\\u2242','Esim':'\\u2A73','eta':'\\u03B7','Eta':'\\u0397','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','euro':'\\u20AC','excl':'!','exist':'\\u2203','Exists':'\\u2203','expectation':'\\u2130','exponentiale':'\\u2147','ExponentialE':'\\u2147','fallingdotseq':'\\u2252','fcy':'\\u0444','Fcy':'\\u0424','female':'\\u2640','ffilig':'\\uFB03','fflig':'\\uFB00','ffllig':'\\uFB04','ffr':'\\uD835\\uDD23','Ffr':'\\uD835\\uDD09','filig':'\\uFB01','FilledSmallSquare':'\\u25FC','FilledVerySmallSquare':'\\u25AA','fjlig':'fj','flat':'\\u266D','fllig':'\\uFB02','fltns':'\\u25B1','fnof':'\\u0192','fopf':'\\uD835\\uDD57','Fopf':'\\uD835\\uDD3D','forall':'\\u2200','ForAll':'\\u2200','fork':'\\u22D4','forkv':'\\u2AD9','Fouriertrf':'\\u2131','fpartint':'\\u2A0D','frac12':'\\xBD','frac13':'\\u2153','frac14':'\\xBC','frac15':'\\u2155','frac16':'\\u2159','frac18':'\\u215B','frac23':'\\u2154','frac25':'\\u2156','frac34':'\\xBE','frac35':'\\u2157','frac38':'\\u215C','frac45':'\\u2158','frac56':'\\u215A','frac58':'\\u215D','frac78':'\\u215E','frasl':'\\u2044','frown':'\\u2322','fscr':'\\uD835\\uDCBB','Fscr':'\\u2131','gacute':'\\u01F5','gamma':'\\u03B3','Gamma':'\\u0393','gammad':'\\u03DD','Gammad':'\\u03DC','gap':'\\u2A86','gbreve':'\\u011F','Gbreve':'\\u011E','Gcedil':'\\u0122','gcirc':'\\u011D','Gcirc':'\\u011C','gcy':'\\u0433','Gcy':'\\u0413','gdot':'\\u0121','Gdot':'\\u0120','ge':'\\u2265','gE':'\\u2267','gel':'\\u22DB','gEl':'\\u2A8C','geq':'\\u2265','geqq':'\\u2267','geqslant':'\\u2A7E','ges':'\\u2A7E','gescc':'\\u2AA9','gesdot':'\\u2A80','gesdoto':'\\u2A82','gesdotol':'\\u2A84','gesl':'\\u22DB\\uFE00','gesles':'\\u2A94','gfr':'\\uD835\\uDD24','Gfr':'\\uD835\\uDD0A','gg':'\\u226B','Gg':'\\u22D9','ggg':'\\u22D9','gimel':'\\u2137','gjcy':'\\u0453','GJcy':'\\u0403','gl':'\\u2277','gla':'\\u2AA5','glE':'\\u2A92','glj':'\\u2AA4','gnap':'\\u2A8A','gnapprox':'\\u2A8A','gne':'\\u2A88','gnE':'\\u2269','gneq':'\\u2A88','gneqq':'\\u2269','gnsim':'\\u22E7','gopf':'\\uD835\\uDD58','Gopf':'\\uD835\\uDD3E','grave':'`','GreaterEqual':'\\u2265','GreaterEqualLess':'\\u22DB','GreaterFullEqual':'\\u2267','GreaterGreater':'\\u2AA2','GreaterLess':'\\u2277','GreaterSlantEqual':'\\u2A7E','GreaterTilde':'\\u2273','gscr':'\\u210A','Gscr':'\\uD835\\uDCA2','gsim':'\\u2273','gsime':'\\u2A8E','gsiml':'\\u2A90','gt':'>','Gt':'\\u226B','GT':'>','gtcc':'\\u2AA7','gtcir':'\\u2A7A','gtdot':'\\u22D7','gtlPar':'\\u2995','gtquest':'\\u2A7C','gtrapprox':'\\u2A86','gtrarr':'\\u2978','gtrdot':'\\u22D7','gtreqless':'\\u22DB','gtreqqless':'\\u2A8C','gtrless':'\\u2277','gtrsim':'\\u2273','gvertneqq':'\\u2269\\uFE00','gvnE':'\\u2269\\uFE00','Hacek':'\\u02C7','hairsp':'\\u200A','half':'\\xBD','hamilt':'\\u210B','hardcy':'\\u044A','HARDcy':'\\u042A','harr':'\\u2194','hArr':'\\u21D4','harrcir':'\\u2948','harrw':'\\u21AD','Hat':'^','hbar':'\\u210F','hcirc':'\\u0125','Hcirc':'\\u0124','hearts':'\\u2665','heartsuit':'\\u2665','hellip':'\\u2026','hercon':'\\u22B9','hfr':'\\uD835\\uDD25','Hfr':'\\u210C','HilbertSpace':'\\u210B','hksearow':'\\u2925','hkswarow':'\\u2926','hoarr':'\\u21FF','homtht':'\\u223B','hookleftarrow':'\\u21A9','hookrightarrow':'\\u21AA','hopf':'\\uD835\\uDD59','Hopf':'\\u210D','horbar':'\\u2015','HorizontalLine':'\\u2500','hscr':'\\uD835\\uDCBD','Hscr':'\\u210B','hslash':'\\u210F','hstrok':'\\u0127','Hstrok':'\\u0126','HumpDownHump':'\\u224E','HumpEqual':'\\u224F','hybull':'\\u2043','hyphen':'\\u2010','iacute':'\\xED','Iacute':'\\xCD','ic':'\\u2063','icirc':'\\xEE','Icirc':'\\xCE','icy':'\\u0438','Icy':'\\u0418','Idot':'\\u0130','iecy':'\\u0435','IEcy':'\\u0415','iexcl':'\\xA1','iff':'\\u21D4','ifr':'\\uD835\\uDD26','Ifr':'\\u2111','igrave':'\\xEC','Igrave':'\\xCC','ii':'\\u2148','iiiint':'\\u2A0C','iiint':'\\u222D','iinfin':'\\u29DC','iiota':'\\u2129','ijlig':'\\u0133','IJlig':'\\u0132','Im':'\\u2111','imacr':'\\u012B','Imacr':'\\u012A','image':'\\u2111','ImaginaryI':'\\u2148','imagline':'\\u2110','imagpart':'\\u2111','imath':'\\u0131','imof':'\\u22B7','imped':'\\u01B5','Implies':'\\u21D2','in':'\\u2208','incare':'\\u2105','infin':'\\u221E','infintie':'\\u29DD','inodot':'\\u0131','int':'\\u222B','Int':'\\u222C','intcal':'\\u22BA','integers':'\\u2124','Integral':'\\u222B','intercal':'\\u22BA','Intersection':'\\u22C2','intlarhk':'\\u2A17','intprod':'\\u2A3C','InvisibleComma':'\\u2063','InvisibleTimes':'\\u2062','iocy':'\\u0451','IOcy':'\\u0401','iogon':'\\u012F','Iogon':'\\u012E','iopf':'\\uD835\\uDD5A','Iopf':'\\uD835\\uDD40','iota':'\\u03B9','Iota':'\\u0399','iprod':'\\u2A3C','iquest':'\\xBF','iscr':'\\uD835\\uDCBE','Iscr':'\\u2110','isin':'\\u2208','isindot':'\\u22F5','isinE':'\\u22F9','isins':'\\u22F4','isinsv':'\\u22F3','isinv':'\\u2208','it':'\\u2062','itilde':'\\u0129','Itilde':'\\u0128','iukcy':'\\u0456','Iukcy':'\\u0406','iuml':'\\xEF','Iuml':'\\xCF','jcirc':'\\u0135','Jcirc':'\\u0134','jcy':'\\u0439','Jcy':'\\u0419','jfr':'\\uD835\\uDD27','Jfr':'\\uD835\\uDD0D','jmath':'\\u0237','jopf':'\\uD835\\uDD5B','Jopf':'\\uD835\\uDD41','jscr':'\\uD835\\uDCBF','Jscr':'\\uD835\\uDCA5','jsercy':'\\u0458','Jsercy':'\\u0408','jukcy':'\\u0454','Jukcy':'\\u0404','kappa':'\\u03BA','Kappa':'\\u039A','kappav':'\\u03F0','kcedil':'\\u0137','Kcedil':'\\u0136','kcy':'\\u043A','Kcy':'\\u041A','kfr':'\\uD835\\uDD28','Kfr':'\\uD835\\uDD0E','kgreen':'\\u0138','khcy':'\\u0445','KHcy':'\\u0425','kjcy':'\\u045C','KJcy':'\\u040C','kopf':'\\uD835\\uDD5C','Kopf':'\\uD835\\uDD42','kscr':'\\uD835\\uDCC0','Kscr':'\\uD835\\uDCA6','lAarr':'\\u21DA','lacute':'\\u013A','Lacute':'\\u0139','laemptyv':'\\u29B4','lagran':'\\u2112','lambda':'\\u03BB','Lambda':'\\u039B','lang':'\\u27E8','Lang':'\\u27EA','langd':'\\u2991','langle':'\\u27E8','lap':'\\u2A85','Laplacetrf':'\\u2112','laquo':'\\xAB','larr':'\\u2190','lArr':'\\u21D0','Larr':'\\u219E','larrb':'\\u21E4','larrbfs':'\\u291F','larrfs':'\\u291D','larrhk':'\\u21A9','larrlp':'\\u21AB','larrpl':'\\u2939','larrsim':'\\u2973','larrtl':'\\u21A2','lat':'\\u2AAB','latail':'\\u2919','lAtail':'\\u291B','late':'\\u2AAD','lates':'\\u2AAD\\uFE00','lbarr':'\\u290C','lBarr':'\\u290E','lbbrk':'\\u2772','lbrace':'{','lbrack':'[','lbrke':'\\u298B','lbrksld':'\\u298F','lbrkslu':'\\u298D','lcaron':'\\u013E','Lcaron':'\\u013D','lcedil':'\\u013C','Lcedil':'\\u013B','lceil':'\\u2308','lcub':'{','lcy':'\\u043B','Lcy':'\\u041B','ldca':'\\u2936','ldquo':'\\u201C','ldquor':'\\u201E','ldrdhar':'\\u2967','ldrushar':'\\u294B','ldsh':'\\u21B2','le':'\\u2264','lE':'\\u2266','LeftAngleBracket':'\\u27E8','leftarrow':'\\u2190','Leftarrow':'\\u21D0','LeftArrow':'\\u2190','LeftArrowBar':'\\u21E4','LeftArrowRightArrow':'\\u21C6','leftarrowtail':'\\u21A2','LeftCeiling':'\\u2308','LeftDoubleBracket':'\\u27E6','LeftDownTeeVector':'\\u2961','LeftDownVector':'\\u21C3','LeftDownVectorBar':'\\u2959','LeftFloor':'\\u230A','leftharpoondown':'\\u21BD','leftharpoonup':'\\u21BC','leftleftarrows':'\\u21C7','leftrightarrow':'\\u2194','Leftrightarrow':'\\u21D4','LeftRightArrow':'\\u2194','leftrightarrows':'\\u21C6','leftrightharpoons':'\\u21CB','leftrightsquigarrow':'\\u21AD','LeftRightVector':'\\u294E','LeftTee':'\\u22A3','LeftTeeArrow':'\\u21A4','LeftTeeVector':'\\u295A','leftthreetimes':'\\u22CB','LeftTriangle':'\\u22B2','LeftTriangleBar':'\\u29CF','LeftTriangleEqual':'\\u22B4','LeftUpDownVector':'\\u2951','LeftUpTeeVector':'\\u2960','LeftUpVector':'\\u21BF','LeftUpVectorBar':'\\u2958','LeftVector':'\\u21BC','LeftVectorBar':'\\u2952','leg':'\\u22DA','lEg':'\\u2A8B','leq':'\\u2264','leqq':'\\u2266','leqslant':'\\u2A7D','les':'\\u2A7D','lescc':'\\u2AA8','lesdot':'\\u2A7F','lesdoto':'\\u2A81','lesdotor':'\\u2A83','lesg':'\\u22DA\\uFE00','lesges':'\\u2A93','lessapprox':'\\u2A85','lessdot':'\\u22D6','lesseqgtr':'\\u22DA','lesseqqgtr':'\\u2A8B','LessEqualGreater':'\\u22DA','LessFullEqual':'\\u2266','LessGreater':'\\u2276','lessgtr':'\\u2276','LessLess':'\\u2AA1','lesssim':'\\u2272','LessSlantEqual':'\\u2A7D','LessTilde':'\\u2272','lfisht':'\\u297C','lfloor':'\\u230A','lfr':'\\uD835\\uDD29','Lfr':'\\uD835\\uDD0F','lg':'\\u2276','lgE':'\\u2A91','lHar':'\\u2962','lhard':'\\u21BD','lharu':'\\u21BC','lharul':'\\u296A','lhblk':'\\u2584','ljcy':'\\u0459','LJcy':'\\u0409','ll':'\\u226A','Ll':'\\u22D8','llarr':'\\u21C7','llcorner':'\\u231E','Lleftarrow':'\\u21DA','llhard':'\\u296B','lltri':'\\u25FA','lmidot':'\\u0140','Lmidot':'\\u013F','lmoust':'\\u23B0','lmoustache':'\\u23B0','lnap':'\\u2A89','lnapprox':'\\u2A89','lne':'\\u2A87','lnE':'\\u2268','lneq':'\\u2A87','lneqq':'\\u2268','lnsim':'\\u22E6','loang':'\\u27EC','loarr':'\\u21FD','lobrk':'\\u27E6','longleftarrow':'\\u27F5','Longleftarrow':'\\u27F8','LongLeftArrow':'\\u27F5','longleftrightarrow':'\\u27F7','Longleftrightarrow':'\\u27FA','LongLeftRightArrow':'\\u27F7','longmapsto':'\\u27FC','longrightarrow':'\\u27F6','Longrightarrow':'\\u27F9','LongRightArrow':'\\u27F6','looparrowleft':'\\u21AB','looparrowright':'\\u21AC','lopar':'\\u2985','lopf':'\\uD835\\uDD5D','Lopf':'\\uD835\\uDD43','loplus':'\\u2A2D','lotimes':'\\u2A34','lowast':'\\u2217','lowbar':'_','LowerLeftArrow':'\\u2199','LowerRightArrow':'\\u2198','loz':'\\u25CA','lozenge':'\\u25CA','lozf':'\\u29EB','lpar':'(','lparlt':'\\u2993','lrarr':'\\u21C6','lrcorner':'\\u231F','lrhar':'\\u21CB','lrhard':'\\u296D','lrm':'\\u200E','lrtri':'\\u22BF','lsaquo':'\\u2039','lscr':'\\uD835\\uDCC1','Lscr':'\\u2112','lsh':'\\u21B0','Lsh':'\\u21B0','lsim':'\\u2272','lsime':'\\u2A8D','lsimg':'\\u2A8F','lsqb':'[','lsquo':'\\u2018','lsquor':'\\u201A','lstrok':'\\u0142','Lstrok':'\\u0141','lt':'<','Lt':'\\u226A','LT':'<','ltcc':'\\u2AA6','ltcir':'\\u2A79','ltdot':'\\u22D6','lthree':'\\u22CB','ltimes':'\\u22C9','ltlarr':'\\u2976','ltquest':'\\u2A7B','ltri':'\\u25C3','ltrie':'\\u22B4','ltrif':'\\u25C2','ltrPar':'\\u2996','lurdshar':'\\u294A','luruhar':'\\u2966','lvertneqq':'\\u2268\\uFE00','lvnE':'\\u2268\\uFE00','macr':'\\xAF','male':'\\u2642','malt':'\\u2720','maltese':'\\u2720','map':'\\u21A6','Map':'\\u2905','mapsto':'\\u21A6','mapstodown':'\\u21A7','mapstoleft':'\\u21A4','mapstoup':'\\u21A5','marker':'\\u25AE','mcomma':'\\u2A29','mcy':'\\u043C','Mcy':'\\u041C','mdash':'\\u2014','mDDot':'\\u223A','measuredangle':'\\u2221','MediumSpace':'\\u205F','Mellintrf':'\\u2133','mfr':'\\uD835\\uDD2A','Mfr':'\\uD835\\uDD10','mho':'\\u2127','micro':'\\xB5','mid':'\\u2223','midast':'*','midcir':'\\u2AF0','middot':'\\xB7','minus':'\\u2212','minusb':'\\u229F','minusd':'\\u2238','minusdu':'\\u2A2A','MinusPlus':'\\u2213','mlcp':'\\u2ADB','mldr':'\\u2026','mnplus':'\\u2213','models':'\\u22A7','mopf':'\\uD835\\uDD5E','Mopf':'\\uD835\\uDD44','mp':'\\u2213','mscr':'\\uD835\\uDCC2','Mscr':'\\u2133','mstpos':'\\u223E','mu':'\\u03BC','Mu':'\\u039C','multimap':'\\u22B8','mumap':'\\u22B8','nabla':'\\u2207','nacute':'\\u0144','Nacute':'\\u0143','nang':'\\u2220\\u20D2','nap':'\\u2249','napE':'\\u2A70\\u0338','napid':'\\u224B\\u0338','napos':'\\u0149','napprox':'\\u2249','natur':'\\u266E','natural':'\\u266E','naturals':'\\u2115','nbsp':'\\xA0','nbump':'\\u224E\\u0338','nbumpe':'\\u224F\\u0338','ncap':'\\u2A43','ncaron':'\\u0148','Ncaron':'\\u0147','ncedil':'\\u0146','Ncedil':'\\u0145','ncong':'\\u2247','ncongdot':'\\u2A6D\\u0338','ncup':'\\u2A42','ncy':'\\u043D','Ncy':'\\u041D','ndash':'\\u2013','ne':'\\u2260','nearhk':'\\u2924','nearr':'\\u2197','neArr':'\\u21D7','nearrow':'\\u2197','nedot':'\\u2250\\u0338','NegativeMediumSpace':'\\u200B','NegativeThickSpace':'\\u200B','NegativeThinSpace':'\\u200B','NegativeVeryThinSpace':'\\u200B','nequiv':'\\u2262','nesear':'\\u2928','nesim':'\\u2242\\u0338','NestedGreaterGreater':'\\u226B','NestedLessLess':'\\u226A','NewLine':'\\n','nexist':'\\u2204','nexists':'\\u2204','nfr':'\\uD835\\uDD2B','Nfr':'\\uD835\\uDD11','nge':'\\u2271','ngE':'\\u2267\\u0338','ngeq':'\\u2271','ngeqq':'\\u2267\\u0338','ngeqslant':'\\u2A7E\\u0338','nges':'\\u2A7E\\u0338','nGg':'\\u22D9\\u0338','ngsim':'\\u2275','ngt':'\\u226F','nGt':'\\u226B\\u20D2','ngtr':'\\u226F','nGtv':'\\u226B\\u0338','nharr':'\\u21AE','nhArr':'\\u21CE','nhpar':'\\u2AF2','ni':'\\u220B','nis':'\\u22FC','nisd':'\\u22FA','niv':'\\u220B','njcy':'\\u045A','NJcy':'\\u040A','nlarr':'\\u219A','nlArr':'\\u21CD','nldr':'\\u2025','nle':'\\u2270','nlE':'\\u2266\\u0338','nleftarrow':'\\u219A','nLeftarrow':'\\u21CD','nleftrightarrow':'\\u21AE','nLeftrightarrow':'\\u21CE','nleq':'\\u2270','nleqq':'\\u2266\\u0338','nleqslant':'\\u2A7D\\u0338','nles':'\\u2A7D\\u0338','nless':'\\u226E','nLl':'\\u22D8\\u0338','nlsim':'\\u2274','nlt':'\\u226E','nLt':'\\u226A\\u20D2','nltri':'\\u22EA','nltrie':'\\u22EC','nLtv':'\\u226A\\u0338','nmid':'\\u2224','NoBreak':'\\u2060','NonBreakingSpace':'\\xA0','nopf':'\\uD835\\uDD5F','Nopf':'\\u2115','not':'\\xAC','Not':'\\u2AEC','NotCongruent':'\\u2262','NotCupCap':'\\u226D','NotDoubleVerticalBar':'\\u2226','NotElement':'\\u2209','NotEqual':'\\u2260','NotEqualTilde':'\\u2242\\u0338','NotExists':'\\u2204','NotGreater':'\\u226F','NotGreaterEqual':'\\u2271','NotGreaterFullEqual':'\\u2267\\u0338','NotGreaterGreater':'\\u226B\\u0338','NotGreaterLess':'\\u2279','NotGreaterSlantEqual':'\\u2A7E\\u0338','NotGreaterTilde':'\\u2275','NotHumpDownHump':'\\u224E\\u0338','NotHumpEqual':'\\u224F\\u0338','notin':'\\u2209','notindot':'\\u22F5\\u0338','notinE':'\\u22F9\\u0338','notinva':'\\u2209','notinvb':'\\u22F7','notinvc':'\\u22F6','NotLeftTriangle':'\\u22EA','NotLeftTriangleBar':'\\u29CF\\u0338','NotLeftTriangleEqual':'\\u22EC','NotLess':'\\u226E','NotLessEqual':'\\u2270','NotLessGreater':'\\u2278','NotLessLess':'\\u226A\\u0338','NotLessSlantEqual':'\\u2A7D\\u0338','NotLessTilde':'\\u2274','NotNestedGreaterGreater':'\\u2AA2\\u0338','NotNestedLessLess':'\\u2AA1\\u0338','notni':'\\u220C','notniva':'\\u220C','notnivb':'\\u22FE','notnivc':'\\u22FD','NotPrecedes':'\\u2280','NotPrecedesEqual':'\\u2AAF\\u0338','NotPrecedesSlantEqual':'\\u22E0','NotReverseElement':'\\u220C','NotRightTriangle':'\\u22EB','NotRightTriangleBar':'\\u29D0\\u0338','NotRightTriangleEqual':'\\u22ED','NotSquareSubset':'\\u228F\\u0338','NotSquareSubsetEqual':'\\u22E2','NotSquareSuperset':'\\u2290\\u0338','NotSquareSupersetEqual':'\\u22E3','NotSubset':'\\u2282\\u20D2','NotSubsetEqual':'\\u2288','NotSucceeds':'\\u2281','NotSucceedsEqual':'\\u2AB0\\u0338','NotSucceedsSlantEqual':'\\u22E1','NotSucceedsTilde':'\\u227F\\u0338','NotSuperset':'\\u2283\\u20D2','NotSupersetEqual':'\\u2289','NotTilde':'\\u2241','NotTildeEqual':'\\u2244','NotTildeFullEqual':'\\u2247','NotTildeTilde':'\\u2249','NotVerticalBar':'\\u2224','npar':'\\u2226','nparallel':'\\u2226','nparsl':'\\u2AFD\\u20E5','npart':'\\u2202\\u0338','npolint':'\\u2A14','npr':'\\u2280','nprcue':'\\u22E0','npre':'\\u2AAF\\u0338','nprec':'\\u2280','npreceq':'\\u2AAF\\u0338','nrarr':'\\u219B','nrArr':'\\u21CF','nrarrc':'\\u2933\\u0338','nrarrw':'\\u219D\\u0338','nrightarrow':'\\u219B','nRightarrow':'\\u21CF','nrtri':'\\u22EB','nrtrie':'\\u22ED','nsc':'\\u2281','nsccue':'\\u22E1','nsce':'\\u2AB0\\u0338','nscr':'\\uD835\\uDCC3','Nscr':'\\uD835\\uDCA9','nshortmid':'\\u2224','nshortparallel':'\\u2226','nsim':'\\u2241','nsime':'\\u2244','nsimeq':'\\u2244','nsmid':'\\u2224','nspar':'\\u2226','nsqsube':'\\u22E2','nsqsupe':'\\u22E3','nsub':'\\u2284','nsube':'\\u2288','nsubE':'\\u2AC5\\u0338','nsubset':'\\u2282\\u20D2','nsubseteq':'\\u2288','nsubseteqq':'\\u2AC5\\u0338','nsucc':'\\u2281','nsucceq':'\\u2AB0\\u0338','nsup':'\\u2285','nsupe':'\\u2289','nsupE':'\\u2AC6\\u0338','nsupset':'\\u2283\\u20D2','nsupseteq':'\\u2289','nsupseteqq':'\\u2AC6\\u0338','ntgl':'\\u2279','ntilde':'\\xF1','Ntilde':'\\xD1','ntlg':'\\u2278','ntriangleleft':'\\u22EA','ntrianglelefteq':'\\u22EC','ntriangleright':'\\u22EB','ntrianglerighteq':'\\u22ED','nu':'\\u03BD','Nu':'\\u039D','num':'#','numero':'\\u2116','numsp':'\\u2007','nvap':'\\u224D\\u20D2','nvdash':'\\u22AC','nvDash':'\\u22AD','nVdash':'\\u22AE','nVDash':'\\u22AF','nvge':'\\u2265\\u20D2','nvgt':'>\\u20D2','nvHarr':'\\u2904','nvinfin':'\\u29DE','nvlArr':'\\u2902','nvle':'\\u2264\\u20D2','nvlt':'<\\u20D2','nvltrie':'\\u22B4\\u20D2','nvrArr':'\\u2903','nvrtrie':'\\u22B5\\u20D2','nvsim':'\\u223C\\u20D2','nwarhk':'\\u2923','nwarr':'\\u2196','nwArr':'\\u21D6','nwarrow':'\\u2196','nwnear':'\\u2927','oacute':'\\xF3','Oacute':'\\xD3','oast':'\\u229B','ocir':'\\u229A','ocirc':'\\xF4','Ocirc':'\\xD4','ocy':'\\u043E','Ocy':'\\u041E','odash':'\\u229D','odblac':'\\u0151','Odblac':'\\u0150','odiv':'\\u2A38','odot':'\\u2299','odsold':'\\u29BC','oelig':'\\u0153','OElig':'\\u0152','ofcir':'\\u29BF','ofr':'\\uD835\\uDD2C','Ofr':'\\uD835\\uDD12','ogon':'\\u02DB','ograve':'\\xF2','Ograve':'\\xD2','ogt':'\\u29C1','ohbar':'\\u29B5','ohm':'\\u03A9','oint':'\\u222E','olarr':'\\u21BA','olcir':'\\u29BE','olcross':'\\u29BB','oline':'\\u203E','olt':'\\u29C0','omacr':'\\u014D','Omacr':'\\u014C','omega':'\\u03C9','Omega':'\\u03A9','omicron':'\\u03BF','Omicron':'\\u039F','omid':'\\u29B6','ominus':'\\u2296','oopf':'\\uD835\\uDD60','Oopf':'\\uD835\\uDD46','opar':'\\u29B7','OpenCurlyDoubleQuote':'\\u201C','OpenCurlyQuote':'\\u2018','operp':'\\u29B9','oplus':'\\u2295','or':'\\u2228','Or':'\\u2A54','orarr':'\\u21BB','ord':'\\u2A5D','order':'\\u2134','orderof':'\\u2134','ordf':'\\xAA','ordm':'\\xBA','origof':'\\u22B6','oror':'\\u2A56','orslope':'\\u2A57','orv':'\\u2A5B','oS':'\\u24C8','oscr':'\\u2134','Oscr':'\\uD835\\uDCAA','oslash':'\\xF8','Oslash':'\\xD8','osol':'\\u2298','otilde':'\\xF5','Otilde':'\\xD5','otimes':'\\u2297','Otimes':'\\u2A37','otimesas':'\\u2A36','ouml':'\\xF6','Ouml':'\\xD6','ovbar':'\\u233D','OverBar':'\\u203E','OverBrace':'\\u23DE','OverBracket':'\\u23B4','OverParenthesis':'\\u23DC','par':'\\u2225','para':'\\xB6','parallel':'\\u2225','parsim':'\\u2AF3','parsl':'\\u2AFD','part':'\\u2202','PartialD':'\\u2202','pcy':'\\u043F','Pcy':'\\u041F','percnt':'%','period':'.','permil':'\\u2030','perp':'\\u22A5','pertenk':'\\u2031','pfr':'\\uD835\\uDD2D','Pfr':'\\uD835\\uDD13','phi':'\\u03C6','Phi':'\\u03A6','phiv':'\\u03D5','phmmat':'\\u2133','phone':'\\u260E','pi':'\\u03C0','Pi':'\\u03A0','pitchfork':'\\u22D4','piv':'\\u03D6','planck':'\\u210F','planckh':'\\u210E','plankv':'\\u210F','plus':'+','plusacir':'\\u2A23','plusb':'\\u229E','pluscir':'\\u2A22','plusdo':'\\u2214','plusdu':'\\u2A25','pluse':'\\u2A72','PlusMinus':'\\xB1','plusmn':'\\xB1','plussim':'\\u2A26','plustwo':'\\u2A27','pm':'\\xB1','Poincareplane':'\\u210C','pointint':'\\u2A15','popf':'\\uD835\\uDD61','Popf':'\\u2119','pound':'\\xA3','pr':'\\u227A','Pr':'\\u2ABB','prap':'\\u2AB7','prcue':'\\u227C','pre':'\\u2AAF','prE':'\\u2AB3','prec':'\\u227A','precapprox':'\\u2AB7','preccurlyeq':'\\u227C','Precedes':'\\u227A','PrecedesEqual':'\\u2AAF','PrecedesSlantEqual':'\\u227C','PrecedesTilde':'\\u227E','preceq':'\\u2AAF','precnapprox':'\\u2AB9','precneqq':'\\u2AB5','precnsim':'\\u22E8','precsim':'\\u227E','prime':'\\u2032','Prime':'\\u2033','primes':'\\u2119','prnap':'\\u2AB9','prnE':'\\u2AB5','prnsim':'\\u22E8','prod':'\\u220F','Product':'\\u220F','profalar':'\\u232E','profline':'\\u2312','profsurf':'\\u2313','prop':'\\u221D','Proportion':'\\u2237','Proportional':'\\u221D','propto':'\\u221D','prsim':'\\u227E','prurel':'\\u22B0','pscr':'\\uD835\\uDCC5','Pscr':'\\uD835\\uDCAB','psi':'\\u03C8','Psi':'\\u03A8','puncsp':'\\u2008','qfr':'\\uD835\\uDD2E','Qfr':'\\uD835\\uDD14','qint':'\\u2A0C','qopf':'\\uD835\\uDD62','Qopf':'\\u211A','qprime':'\\u2057','qscr':'\\uD835\\uDCC6','Qscr':'\\uD835\\uDCAC','quaternions':'\\u210D','quatint':'\\u2A16','quest':'?','questeq':'\\u225F','quot':'\"','QUOT':'\"','rAarr':'\\u21DB','race':'\\u223D\\u0331','racute':'\\u0155','Racute':'\\u0154','radic':'\\u221A','raemptyv':'\\u29B3','rang':'\\u27E9','Rang':'\\u27EB','rangd':'\\u2992','range':'\\u29A5','rangle':'\\u27E9','raquo':'\\xBB','rarr':'\\u2192','rArr':'\\u21D2','Rarr':'\\u21A0','rarrap':'\\u2975','rarrb':'\\u21E5','rarrbfs':'\\u2920','rarrc':'\\u2933','rarrfs':'\\u291E','rarrhk':'\\u21AA','rarrlp':'\\u21AC','rarrpl':'\\u2945','rarrsim':'\\u2974','rarrtl':'\\u21A3','Rarrtl':'\\u2916','rarrw':'\\u219D','ratail':'\\u291A','rAtail':'\\u291C','ratio':'\\u2236','rationals':'\\u211A','rbarr':'\\u290D','rBarr':'\\u290F','RBarr':'\\u2910','rbbrk':'\\u2773','rbrace':'}','rbrack':']','rbrke':'\\u298C','rbrksld':'\\u298E','rbrkslu':'\\u2990','rcaron':'\\u0159','Rcaron':'\\u0158','rcedil':'\\u0157','Rcedil':'\\u0156','rceil':'\\u2309','rcub':'}','rcy':'\\u0440','Rcy':'\\u0420','rdca':'\\u2937','rdldhar':'\\u2969','rdquo':'\\u201D','rdquor':'\\u201D','rdsh':'\\u21B3','Re':'\\u211C','real':'\\u211C','realine':'\\u211B','realpart':'\\u211C','reals':'\\u211D','rect':'\\u25AD','reg':'\\xAE','REG':'\\xAE','ReverseElement':'\\u220B','ReverseEquilibrium':'\\u21CB','ReverseUpEquilibrium':'\\u296F','rfisht':'\\u297D','rfloor':'\\u230B','rfr':'\\uD835\\uDD2F','Rfr':'\\u211C','rHar':'\\u2964','rhard':'\\u21C1','rharu':'\\u21C0','rharul':'\\u296C','rho':'\\u03C1','Rho':'\\u03A1','rhov':'\\u03F1','RightAngleBracket':'\\u27E9','rightarrow':'\\u2192','Rightarrow':'\\u21D2','RightArrow':'\\u2192','RightArrowBar':'\\u21E5','RightArrowLeftArrow':'\\u21C4','rightarrowtail':'\\u21A3','RightCeiling':'\\u2309','RightDoubleBracket':'\\u27E7','RightDownTeeVector':'\\u295D','RightDownVector':'\\u21C2','RightDownVectorBar':'\\u2955','RightFloor':'\\u230B','rightharpoondown':'\\u21C1','rightharpoonup':'\\u21C0','rightleftarrows':'\\u21C4','rightleftharpoons':'\\u21CC','rightrightarrows':'\\u21C9','rightsquigarrow':'\\u219D','RightTee':'\\u22A2','RightTeeArrow':'\\u21A6','RightTeeVector':'\\u295B','rightthreetimes':'\\u22CC','RightTriangle':'\\u22B3','RightTriangleBar':'\\u29D0','RightTriangleEqual':'\\u22B5','RightUpDownVector':'\\u294F','RightUpTeeVector':'\\u295C','RightUpVector':'\\u21BE','RightUpVectorBar':'\\u2954','RightVector':'\\u21C0','RightVectorBar':'\\u2953','ring':'\\u02DA','risingdotseq':'\\u2253','rlarr':'\\u21C4','rlhar':'\\u21CC','rlm':'\\u200F','rmoust':'\\u23B1','rmoustache':'\\u23B1','rnmid':'\\u2AEE','roang':'\\u27ED','roarr':'\\u21FE','robrk':'\\u27E7','ropar':'\\u2986','ropf':'\\uD835\\uDD63','Ropf':'\\u211D','roplus':'\\u2A2E','rotimes':'\\u2A35','RoundImplies':'\\u2970','rpar':')','rpargt':'\\u2994','rppolint':'\\u2A12','rrarr':'\\u21C9','Rrightarrow':'\\u21DB','rsaquo':'\\u203A','rscr':'\\uD835\\uDCC7','Rscr':'\\u211B','rsh':'\\u21B1','Rsh':'\\u21B1','rsqb':']','rsquo':'\\u2019','rsquor':'\\u2019','rthree':'\\u22CC','rtimes':'\\u22CA','rtri':'\\u25B9','rtrie':'\\u22B5','rtrif':'\\u25B8','rtriltri':'\\u29CE','RuleDelayed':'\\u29F4','ruluhar':'\\u2968','rx':'\\u211E','sacute':'\\u015B','Sacute':'\\u015A','sbquo':'\\u201A','sc':'\\u227B','Sc':'\\u2ABC','scap':'\\u2AB8','scaron':'\\u0161','Scaron':'\\u0160','sccue':'\\u227D','sce':'\\u2AB0','scE':'\\u2AB4','scedil':'\\u015F','Scedil':'\\u015E','scirc':'\\u015D','Scirc':'\\u015C','scnap':'\\u2ABA','scnE':'\\u2AB6','scnsim':'\\u22E9','scpolint':'\\u2A13','scsim':'\\u227F','scy':'\\u0441','Scy':'\\u0421','sdot':'\\u22C5','sdotb':'\\u22A1','sdote':'\\u2A66','searhk':'\\u2925','searr':'\\u2198','seArr':'\\u21D8','searrow':'\\u2198','sect':'\\xA7','semi':';','seswar':'\\u2929','setminus':'\\u2216','setmn':'\\u2216','sext':'\\u2736','sfr':'\\uD835\\uDD30','Sfr':'\\uD835\\uDD16','sfrown':'\\u2322','sharp':'\\u266F','shchcy':'\\u0449','SHCHcy':'\\u0429','shcy':'\\u0448','SHcy':'\\u0428','ShortDownArrow':'\\u2193','ShortLeftArrow':'\\u2190','shortmid':'\\u2223','shortparallel':'\\u2225','ShortRightArrow':'\\u2192','ShortUpArrow':'\\u2191','shy':'\\xAD','sigma':'\\u03C3','Sigma':'\\u03A3','sigmaf':'\\u03C2','sigmav':'\\u03C2','sim':'\\u223C','simdot':'\\u2A6A','sime':'\\u2243','simeq':'\\u2243','simg':'\\u2A9E','simgE':'\\u2AA0','siml':'\\u2A9D','simlE':'\\u2A9F','simne':'\\u2246','simplus':'\\u2A24','simrarr':'\\u2972','slarr':'\\u2190','SmallCircle':'\\u2218','smallsetminus':'\\u2216','smashp':'\\u2A33','smeparsl':'\\u29E4','smid':'\\u2223','smile':'\\u2323','smt':'\\u2AAA','smte':'\\u2AAC','smtes':'\\u2AAC\\uFE00','softcy':'\\u044C','SOFTcy':'\\u042C','sol':'/','solb':'\\u29C4','solbar':'\\u233F','sopf':'\\uD835\\uDD64','Sopf':'\\uD835\\uDD4A','spades':'\\u2660','spadesuit':'\\u2660','spar':'\\u2225','sqcap':'\\u2293','sqcaps':'\\u2293\\uFE00','sqcup':'\\u2294','sqcups':'\\u2294\\uFE00','Sqrt':'\\u221A','sqsub':'\\u228F','sqsube':'\\u2291','sqsubset':'\\u228F','sqsubseteq':'\\u2291','sqsup':'\\u2290','sqsupe':'\\u2292','sqsupset':'\\u2290','sqsupseteq':'\\u2292','squ':'\\u25A1','square':'\\u25A1','Square':'\\u25A1','SquareIntersection':'\\u2293','SquareSubset':'\\u228F','SquareSubsetEqual':'\\u2291','SquareSuperset':'\\u2290','SquareSupersetEqual':'\\u2292','SquareUnion':'\\u2294','squarf':'\\u25AA','squf':'\\u25AA','srarr':'\\u2192','sscr':'\\uD835\\uDCC8','Sscr':'\\uD835\\uDCAE','ssetmn':'\\u2216','ssmile':'\\u2323','sstarf':'\\u22C6','star':'\\u2606','Star':'\\u22C6','starf':'\\u2605','straightepsilon':'\\u03F5','straightphi':'\\u03D5','strns':'\\xAF','sub':'\\u2282','Sub':'\\u22D0','subdot':'\\u2ABD','sube':'\\u2286','subE':'\\u2AC5','subedot':'\\u2AC3','submult':'\\u2AC1','subne':'\\u228A','subnE':'\\u2ACB','subplus':'\\u2ABF','subrarr':'\\u2979','subset':'\\u2282','Subset':'\\u22D0','subseteq':'\\u2286','subseteqq':'\\u2AC5','SubsetEqual':'\\u2286','subsetneq':'\\u228A','subsetneqq':'\\u2ACB','subsim':'\\u2AC7','subsub':'\\u2AD5','subsup':'\\u2AD3','succ':'\\u227B','succapprox':'\\u2AB8','succcurlyeq':'\\u227D','Succeeds':'\\u227B','SucceedsEqual':'\\u2AB0','SucceedsSlantEqual':'\\u227D','SucceedsTilde':'\\u227F','succeq':'\\u2AB0','succnapprox':'\\u2ABA','succneqq':'\\u2AB6','succnsim':'\\u22E9','succsim':'\\u227F','SuchThat':'\\u220B','sum':'\\u2211','Sum':'\\u2211','sung':'\\u266A','sup':'\\u2283','Sup':'\\u22D1','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','supdot':'\\u2ABE','supdsub':'\\u2AD8','supe':'\\u2287','supE':'\\u2AC6','supedot':'\\u2AC4','Superset':'\\u2283','SupersetEqual':'\\u2287','suphsol':'\\u27C9','suphsub':'\\u2AD7','suplarr':'\\u297B','supmult':'\\u2AC2','supne':'\\u228B','supnE':'\\u2ACC','supplus':'\\u2AC0','supset':'\\u2283','Supset':'\\u22D1','supseteq':'\\u2287','supseteqq':'\\u2AC6','supsetneq':'\\u228B','supsetneqq':'\\u2ACC','supsim':'\\u2AC8','supsub':'\\u2AD4','supsup':'\\u2AD6','swarhk':'\\u2926','swarr':'\\u2199','swArr':'\\u21D9','swarrow':'\\u2199','swnwar':'\\u292A','szlig':'\\xDF','Tab':'\\t','target':'\\u2316','tau':'\\u03C4','Tau':'\\u03A4','tbrk':'\\u23B4','tcaron':'\\u0165','Tcaron':'\\u0164','tcedil':'\\u0163','Tcedil':'\\u0162','tcy':'\\u0442','Tcy':'\\u0422','tdot':'\\u20DB','telrec':'\\u2315','tfr':'\\uD835\\uDD31','Tfr':'\\uD835\\uDD17','there4':'\\u2234','therefore':'\\u2234','Therefore':'\\u2234','theta':'\\u03B8','Theta':'\\u0398','thetasym':'\\u03D1','thetav':'\\u03D1','thickapprox':'\\u2248','thicksim':'\\u223C','ThickSpace':'\\u205F\\u200A','thinsp':'\\u2009','ThinSpace':'\\u2009','thkap':'\\u2248','thksim':'\\u223C','thorn':'\\xFE','THORN':'\\xDE','tilde':'\\u02DC','Tilde':'\\u223C','TildeEqual':'\\u2243','TildeFullEqual':'\\u2245','TildeTilde':'\\u2248','times':'\\xD7','timesb':'\\u22A0','timesbar':'\\u2A31','timesd':'\\u2A30','tint':'\\u222D','toea':'\\u2928','top':'\\u22A4','topbot':'\\u2336','topcir':'\\u2AF1','topf':'\\uD835\\uDD65','Topf':'\\uD835\\uDD4B','topfork':'\\u2ADA','tosa':'\\u2929','tprime':'\\u2034','trade':'\\u2122','TRADE':'\\u2122','triangle':'\\u25B5','triangledown':'\\u25BF','triangleleft':'\\u25C3','trianglelefteq':'\\u22B4','triangleq':'\\u225C','triangleright':'\\u25B9','trianglerighteq':'\\u22B5','tridot':'\\u25EC','trie':'\\u225C','triminus':'\\u2A3A','TripleDot':'\\u20DB','triplus':'\\u2A39','trisb':'\\u29CD','tritime':'\\u2A3B','trpezium':'\\u23E2','tscr':'\\uD835\\uDCC9','Tscr':'\\uD835\\uDCAF','tscy':'\\u0446','TScy':'\\u0426','tshcy':'\\u045B','TSHcy':'\\u040B','tstrok':'\\u0167','Tstrok':'\\u0166','twixt':'\\u226C','twoheadleftarrow':'\\u219E','twoheadrightarrow':'\\u21A0','uacute':'\\xFA','Uacute':'\\xDA','uarr':'\\u2191','uArr':'\\u21D1','Uarr':'\\u219F','Uarrocir':'\\u2949','ubrcy':'\\u045E','Ubrcy':'\\u040E','ubreve':'\\u016D','Ubreve':'\\u016C','ucirc':'\\xFB','Ucirc':'\\xDB','ucy':'\\u0443','Ucy':'\\u0423','udarr':'\\u21C5','udblac':'\\u0171','Udblac':'\\u0170','udhar':'\\u296E','ufisht':'\\u297E','ufr':'\\uD835\\uDD32','Ufr':'\\uD835\\uDD18','ugrave':'\\xF9','Ugrave':'\\xD9','uHar':'\\u2963','uharl':'\\u21BF','uharr':'\\u21BE','uhblk':'\\u2580','ulcorn':'\\u231C','ulcorner':'\\u231C','ulcrop':'\\u230F','ultri':'\\u25F8','umacr':'\\u016B','Umacr':'\\u016A','uml':'\\xA8','UnderBar':'_','UnderBrace':'\\u23DF','UnderBracket':'\\u23B5','UnderParenthesis':'\\u23DD','Union':'\\u22C3','UnionPlus':'\\u228E','uogon':'\\u0173','Uogon':'\\u0172','uopf':'\\uD835\\uDD66','Uopf':'\\uD835\\uDD4C','uparrow':'\\u2191','Uparrow':'\\u21D1','UpArrow':'\\u2191','UpArrowBar':'\\u2912','UpArrowDownArrow':'\\u21C5','updownarrow':'\\u2195','Updownarrow':'\\u21D5','UpDownArrow':'\\u2195','UpEquilibrium':'\\u296E','upharpoonleft':'\\u21BF','upharpoonright':'\\u21BE','uplus':'\\u228E','UpperLeftArrow':'\\u2196','UpperRightArrow':'\\u2197','upsi':'\\u03C5','Upsi':'\\u03D2','upsih':'\\u03D2','upsilon':'\\u03C5','Upsilon':'\\u03A5','UpTee':'\\u22A5','UpTeeArrow':'\\u21A5','upuparrows':'\\u21C8','urcorn':'\\u231D','urcorner':'\\u231D','urcrop':'\\u230E','uring':'\\u016F','Uring':'\\u016E','urtri':'\\u25F9','uscr':'\\uD835\\uDCCA','Uscr':'\\uD835\\uDCB0','utdot':'\\u22F0','utilde':'\\u0169','Utilde':'\\u0168','utri':'\\u25B5','utrif':'\\u25B4','uuarr':'\\u21C8','uuml':'\\xFC','Uuml':'\\xDC','uwangle':'\\u29A7','vangrt':'\\u299C','varepsilon':'\\u03F5','varkappa':'\\u03F0','varnothing':'\\u2205','varphi':'\\u03D5','varpi':'\\u03D6','varpropto':'\\u221D','varr':'\\u2195','vArr':'\\u21D5','varrho':'\\u03F1','varsigma':'\\u03C2','varsubsetneq':'\\u228A\\uFE00','varsubsetneqq':'\\u2ACB\\uFE00','varsupsetneq':'\\u228B\\uFE00','varsupsetneqq':'\\u2ACC\\uFE00','vartheta':'\\u03D1','vartriangleleft':'\\u22B2','vartriangleright':'\\u22B3','vBar':'\\u2AE8','Vbar':'\\u2AEB','vBarv':'\\u2AE9','vcy':'\\u0432','Vcy':'\\u0412','vdash':'\\u22A2','vDash':'\\u22A8','Vdash':'\\u22A9','VDash':'\\u22AB','Vdashl':'\\u2AE6','vee':'\\u2228','Vee':'\\u22C1','veebar':'\\u22BB','veeeq':'\\u225A','vellip':'\\u22EE','verbar':'|','Verbar':'\\u2016','vert':'|','Vert':'\\u2016','VerticalBar':'\\u2223','VerticalLine':'|','VerticalSeparator':'\\u2758','VerticalTilde':'\\u2240','VeryThinSpace':'\\u200A','vfr':'\\uD835\\uDD33','Vfr':'\\uD835\\uDD19','vltri':'\\u22B2','vnsub':'\\u2282\\u20D2','vnsup':'\\u2283\\u20D2','vopf':'\\uD835\\uDD67','Vopf':'\\uD835\\uDD4D','vprop':'\\u221D','vrtri':'\\u22B3','vscr':'\\uD835\\uDCCB','Vscr':'\\uD835\\uDCB1','vsubne':'\\u228A\\uFE00','vsubnE':'\\u2ACB\\uFE00','vsupne':'\\u228B\\uFE00','vsupnE':'\\u2ACC\\uFE00','Vvdash':'\\u22AA','vzigzag':'\\u299A','wcirc':'\\u0175','Wcirc':'\\u0174','wedbar':'\\u2A5F','wedge':'\\u2227','Wedge':'\\u22C0','wedgeq':'\\u2259','weierp':'\\u2118','wfr':'\\uD835\\uDD34','Wfr':'\\uD835\\uDD1A','wopf':'\\uD835\\uDD68','Wopf':'\\uD835\\uDD4E','wp':'\\u2118','wr':'\\u2240','wreath':'\\u2240','wscr':'\\uD835\\uDCCC','Wscr':'\\uD835\\uDCB2','xcap':'\\u22C2','xcirc':'\\u25EF','xcup':'\\u22C3','xdtri':'\\u25BD','xfr':'\\uD835\\uDD35','Xfr':'\\uD835\\uDD1B','xharr':'\\u27F7','xhArr':'\\u27FA','xi':'\\u03BE','Xi':'\\u039E','xlarr':'\\u27F5','xlArr':'\\u27F8','xmap':'\\u27FC','xnis':'\\u22FB','xodot':'\\u2A00','xopf':'\\uD835\\uDD69','Xopf':'\\uD835\\uDD4F','xoplus':'\\u2A01','xotime':'\\u2A02','xrarr':'\\u27F6','xrArr':'\\u27F9','xscr':'\\uD835\\uDCCD','Xscr':'\\uD835\\uDCB3','xsqcup':'\\u2A06','xuplus':'\\u2A04','xutri':'\\u25B3','xvee':'\\u22C1','xwedge':'\\u22C0','yacute':'\\xFD','Yacute':'\\xDD','yacy':'\\u044F','YAcy':'\\u042F','ycirc':'\\u0177','Ycirc':'\\u0176','ycy':'\\u044B','Ycy':'\\u042B','yen':'\\xA5','yfr':'\\uD835\\uDD36','Yfr':'\\uD835\\uDD1C','yicy':'\\u0457','YIcy':'\\u0407','yopf':'\\uD835\\uDD6A','Yopf':'\\uD835\\uDD50','yscr':'\\uD835\\uDCCE','Yscr':'\\uD835\\uDCB4','yucy':'\\u044E','YUcy':'\\u042E','yuml':'\\xFF','Yuml':'\\u0178','zacute':'\\u017A','Zacute':'\\u0179','zcaron':'\\u017E','Zcaron':'\\u017D','zcy':'\\u0437','Zcy':'\\u0417','zdot':'\\u017C','Zdot':'\\u017B','zeetrf':'\\u2128','ZeroWidthSpace':'\\u200B','zeta':'\\u03B6','Zeta':'\\u0396','zfr':'\\uD835\\uDD37','Zfr':'\\u2128','zhcy':'\\u0436','ZHcy':'\\u0416','zigrarr':'\\u21DD','zopf':'\\uD835\\uDD6B','Zopf':'\\u2124','zscr':'\\uD835\\uDCCF','Zscr':'\\uD835\\uDCB5','zwj':'\\u200D','zwnj':'\\u200C'};\n\tvar decodeMapLegacy = {'aacute':'\\xE1','Aacute':'\\xC1','acirc':'\\xE2','Acirc':'\\xC2','acute':'\\xB4','aelig':'\\xE6','AElig':'\\xC6','agrave':'\\xE0','Agrave':'\\xC0','amp':'&','AMP':'&','aring':'\\xE5','Aring':'\\xC5','atilde':'\\xE3','Atilde':'\\xC3','auml':'\\xE4','Auml':'\\xC4','brvbar':'\\xA6','ccedil':'\\xE7','Ccedil':'\\xC7','cedil':'\\xB8','cent':'\\xA2','copy':'\\xA9','COPY':'\\xA9','curren':'\\xA4','deg':'\\xB0','divide':'\\xF7','eacute':'\\xE9','Eacute':'\\xC9','ecirc':'\\xEA','Ecirc':'\\xCA','egrave':'\\xE8','Egrave':'\\xC8','eth':'\\xF0','ETH':'\\xD0','euml':'\\xEB','Euml':'\\xCB','frac12':'\\xBD','frac14':'\\xBC','frac34':'\\xBE','gt':'>','GT':'>','iacute':'\\xED','Iacute':'\\xCD','icirc':'\\xEE','Icirc':'\\xCE','iexcl':'\\xA1','igrave':'\\xEC','Igrave':'\\xCC','iquest':'\\xBF','iuml':'\\xEF','Iuml':'\\xCF','laquo':'\\xAB','lt':'<','LT':'<','macr':'\\xAF','micro':'\\xB5','middot':'\\xB7','nbsp':'\\xA0','not':'\\xAC','ntilde':'\\xF1','Ntilde':'\\xD1','oacute':'\\xF3','Oacute':'\\xD3','ocirc':'\\xF4','Ocirc':'\\xD4','ograve':'\\xF2','Ograve':'\\xD2','ordf':'\\xAA','ordm':'\\xBA','oslash':'\\xF8','Oslash':'\\xD8','otilde':'\\xF5','Otilde':'\\xD5','ouml':'\\xF6','Ouml':'\\xD6','para':'\\xB6','plusmn':'\\xB1','pound':'\\xA3','quot':'\"','QUOT':'\"','raquo':'\\xBB','reg':'\\xAE','REG':'\\xAE','sect':'\\xA7','shy':'\\xAD','sup1':'\\xB9','sup2':'\\xB2','sup3':'\\xB3','szlig':'\\xDF','thorn':'\\xFE','THORN':'\\xDE','times':'\\xD7','uacute':'\\xFA','Uacute':'\\xDA','ucirc':'\\xFB','Ucirc':'\\xDB','ugrave':'\\xF9','Ugrave':'\\xD9','uml':'\\xA8','uuml':'\\xFC','Uuml':'\\xDC','yacute':'\\xFD','Yacute':'\\xDD','yen':'\\xA5','yuml':'\\xFF'};\n\tvar decodeMapNumeric = {'0':'\\uFFFD','128':'\\u20AC','130':'\\u201A','131':'\\u0192','132':'\\u201E','133':'\\u2026','134':'\\u2020','135':'\\u2021','136':'\\u02C6','137':'\\u2030','138':'\\u0160','139':'\\u2039','140':'\\u0152','142':'\\u017D','145':'\\u2018','146':'\\u2019','147':'\\u201C','148':'\\u201D','149':'\\u2022','150':'\\u2013','151':'\\u2014','152':'\\u02DC','153':'\\u2122','154':'\\u0161','155':'\\u203A','156':'\\u0153','158':'\\u017E','159':'\\u0178'};\n\tvar invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar has = function(object, propertyName) {\n\t\treturn hasOwnProperty.call(object, propertyName);\n\t};\n\n\tvar contains = function(array, value) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tif (array[index] == value) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar result = {};\n\t\tvar key;\n\t\tfor (key in defaults) {\n\t\t\t// A `hasOwnProperty` check is not needed here, since only recognized\n\t\t\t// option names are used anyway. Any others are ignored.\n\t\t\tresult[key] = has(options, key) ? options[key] : defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n\n\t// Modified version of `ucs2encode`; see https://mths.be/punycode.\n\tvar codePointToSymbol = function(codePoint, strict) {\n\t\tvar output = '';\n\t\tif ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {\n\t\t\t// See issue #4:\n\t\t\t// \u201COtherwise, if the number is in the range 0xD800 to 0xDFFF or is\n\t\t\t// greater than 0x10FFFF, then this is a parse error. Return a U+FFFD\n\t\t\t// REPLACEMENT CHARACTER.\u201D\n\t\t\tif (strict) {\n\t\t\t\tparseError('character reference outside the permissible Unicode range');\n\t\t\t}\n\t\t\treturn '\\uFFFD';\n\t\t}\n\t\tif (has(decodeMapNumeric, codePoint)) {\n\t\t\tif (strict) {\n\t\t\t\tparseError('disallowed character reference');\n\t\t\t}\n\t\t\treturn decodeMapNumeric[codePoint];\n\t\t}\n\t\tif (strict && contains(invalidReferenceCodePoints, codePoint)) {\n\t\t\tparseError('disallowed character reference');\n\t\t}\n\t\tif (codePoint > 0xFFFF) {\n\t\t\tcodePoint -= 0x10000;\n\t\t\toutput += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t}\n\t\toutput += stringFromCharCode(codePoint);\n\t\treturn output;\n\t};\n\n\tvar hexEscape = function(codePoint) {\n\t\treturn '&#x' + codePoint.toString(16).toUpperCase() + ';';\n\t};\n\n\tvar decEscape = function(codePoint) {\n\t\treturn '&#' + codePoint + ';';\n\t};\n\n\tvar parseError = function(message) {\n\t\tthrow Error('Parse error: ' + message);\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar encode = function(string, options) {\n\t\toptions = merge(options, encode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidRawCodePoint.test(string)) {\n\t\t\tparseError('forbidden code point');\n\t\t}\n\t\tvar encodeEverything = options.encodeEverything;\n\t\tvar useNamedReferences = options.useNamedReferences;\n\t\tvar allowUnsafeSymbols = options.allowUnsafeSymbols;\n\t\tvar escapeCodePoint = options.decimal ? decEscape : hexEscape;\n\n\t\tvar escapeBmpSymbol = function(symbol) {\n\t\t\treturn escapeCodePoint(symbol.charCodeAt(0));\n\t\t};\n\n\t\tif (encodeEverything) {\n\t\t\t// Encode ASCII symbols.\n\t\t\tstring = string.replace(regexAsciiWhitelist, function(symbol) {\n\t\t\t\t// Use named references if requested & possible.\n\t\t\t\tif (useNamedReferences && has(encodeMap, symbol)) {\n\t\t\t\t\treturn '&' + encodeMap[symbol] + ';';\n\t\t\t\t}\n\t\t\t\treturn escapeBmpSymbol(symbol);\n\t\t\t});\n\t\t\t// Shorten a few escapes that represent two symbols, of which at least one\n\t\t\t// is within the ASCII range.\n\t\t\tif (useNamedReferences) {\n\t\t\t\tstring = string\n\t\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t\t.replace(/<\\u20D2/g, '<⃒')\n\t\t\t\t\t.replace(/fj/g, 'fj');\n\t\t\t}\n\t\t\t// Encode non-ASCII symbols.\n\t\t\tif (useNamedReferences) {\n\t\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Note: any remaining non-ASCII symbols are handled outside of the `if`.\n\t\t} else if (useNamedReferences) {\n\t\t\t// Apply named character references.\n\t\t\t// Encode `<>\"'&` using named character references.\n\t\t\tif (!allowUnsafeSymbols) {\n\t\t\t\tstring = string.replace(regexEscape, function(string) {\n\t\t\t\t\treturn '&' + encodeMap[string] + ';'; // no need to check `has()` here\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Shorten escapes that represent two symbols, of which at least one is\n\t\t\t// `<>\"'&`.\n\t\t\tstring = string\n\t\t\t\t.replace(/>\\u20D2/g, '>⃒')\n\t\t\t\t.replace(/<\\u20D2/g, '<⃒');\n\t\t\t// Encode non-ASCII symbols that can be replaced with a named reference.\n\t\t\tstring = string.replace(regexEncodeNonAscii, function(string) {\n\t\t\t\t// Note: there is no need to check `has(encodeMap, string)` here.\n\t\t\t\treturn '&' + encodeMap[string] + ';';\n\t\t\t});\n\t\t} else if (!allowUnsafeSymbols) {\n\t\t\t// Encode `<>\"'&` using hexadecimal escapes, now that they\u2019re not handled\n\t\t\t// using named character references.\n\t\t\tstring = string.replace(regexEscape, escapeBmpSymbol);\n\t\t}\n\t\treturn string\n\t\t\t// Encode astral symbols.\n\t\t\t.replace(regexAstralSymbols, function($0) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tvar high = $0.charCodeAt(0);\n\t\t\t\tvar low = $0.charCodeAt(1);\n\t\t\t\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\t\t\t\treturn escapeCodePoint(codePoint);\n\t\t\t})\n\t\t\t// Encode any remaining BMP symbols that are not printable ASCII symbols\n\t\t\t// using a hexadecimal escape.\n\t\t\t.replace(regexBmpWhitelist, escapeBmpSymbol);\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tencode.options = {\n\t\t'allowUnsafeSymbols': false,\n\t\t'encodeEverything': false,\n\t\t'strict': false,\n\t\t'useNamedReferences': false,\n\t\t'decimal' : false\n\t};\n\n\tvar decode = function(html, options) {\n\t\toptions = merge(options, decode.options);\n\t\tvar strict = options.strict;\n\t\tif (strict && regexInvalidEntity.test(html)) {\n\t\t\tparseError('malformed character reference');\n\t\t}\n\t\treturn html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {\n\t\t\tvar codePoint;\n\t\t\tvar semicolon;\n\t\t\tvar decDigits;\n\t\t\tvar hexDigits;\n\t\t\tvar reference;\n\t\t\tvar next;\n\n\t\t\tif ($1) {\n\t\t\t\treference = $1;\n\t\t\t\t// Note: there is no need to check `has(decodeMap, reference)`.\n\t\t\t\treturn decodeMap[reference];\n\t\t\t}\n\n\t\t\tif ($2) {\n\t\t\t\t// Decode named character references without trailing `;`, e.g. `&`.\n\t\t\t\t// This is only a parse error if it gets converted to `&`, or if it is\n\t\t\t\t// followed by `=` in an attribute context.\n\t\t\t\treference = $2;\n\t\t\t\tnext = $3;\n\t\t\t\tif (next && options.isAttributeValue) {\n\t\t\t\t\tif (strict && next == '=') {\n\t\t\t\t\t\tparseError('`&` did not start a character reference');\n\t\t\t\t\t}\n\t\t\t\t\treturn $0;\n\t\t\t\t} else {\n\t\t\t\t\tif (strict) {\n\t\t\t\t\t\tparseError(\n\t\t\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Note: there is no need to check `has(decodeMapLegacy, reference)`.\n\t\t\t\t\treturn decodeMapLegacy[reference] + (next || '');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($4) {\n\t\t\t\t// Decode decimal escapes, e.g. `𝌆`.\n\t\t\t\tdecDigits = $4;\n\t\t\t\tsemicolon = $5;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(decDigits, 10);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\tif ($6) {\n\t\t\t\t// Decode hexadecimal escapes, e.g. `𝌆`.\n\t\t\t\thexDigits = $6;\n\t\t\t\tsemicolon = $7;\n\t\t\t\tif (strict && !semicolon) {\n\t\t\t\t\tparseError('character reference was not terminated by a semicolon');\n\t\t\t\t}\n\t\t\t\tcodePoint = parseInt(hexDigits, 16);\n\t\t\t\treturn codePointToSymbol(codePoint, strict);\n\t\t\t}\n\n\t\t\t// If we\u2019re still here, `if ($7)` is implied; it\u2019s an ambiguous\n\t\t\t// ampersand for sure. https://mths.be/notes/ambiguous-ampersands\n\t\t\tif (strict) {\n\t\t\t\tparseError(\n\t\t\t\t\t'named character reference was not terminated by a semicolon'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn $0;\n\t\t});\n\t};\n\t// Expose default options (so they can be overridden globally).\n\tdecode.options = {\n\t\t'isAttributeValue': false,\n\t\t'strict': false\n\t};\n\n\tvar escape = function(string) {\n\t\treturn string.replace(regexEscape, function($0) {\n\t\t\t// Note: there is no need to check `has(escapeMap, $0)` here.\n\t\t\treturn escapeMap[$0];\n\t\t});\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar he = {\n\t\t'version': '1.2.0',\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'escape': escape,\n\t\t'unescape': decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn he;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = he;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in he) {\n\t\t\t\thas(he, key) && (freeExports[key] = he[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.he = he;\n\t}\n\n}(this));\n", "import type {\n IAllowedValues,\n IRenderOptions,\n} from \"types/state-machine-cat.mjs\";\n\nconst ALLOWED_VALUES: IAllowedValues = Object.freeze({\n inputType: {\n default: \"smcat\",\n values: [{ name: \"smcat\" }, { name: \"json\" }, { name: \"scxml\" }],\n },\n outputType: {\n default: \"svg\",\n values: [\n { name: \"ast\" },\n { name: \"dot\" },\n { name: \"eps\" },\n { name: \"json\" },\n { name: \"oldeps\" },\n { name: \"oldps\" },\n { name: \"oldps2\" },\n { name: \"oldsvg\" },\n { name: \"pdf\" },\n { name: \"png\" },\n { name: \"ps\" },\n { name: \"ps2\" },\n { name: \"scjson\" },\n { name: \"scxml\" },\n { name: \"smcat\" },\n { name: \"svg\" },\n ],\n },\n engine: {\n default: \"dot\",\n values: [\n { name: \"dot\" },\n { name: \"circo\" },\n { name: \"fdp\" },\n { name: \"neato\" },\n { name: \"osage\" },\n { name: \"twopi\" },\n ],\n },\n direction: {\n default: \"top-down\",\n values: [\n { name: \"top-down\" },\n { name: \"bottom-top\" },\n { name: \"left-right\" },\n { name: \"right-left\" },\n ],\n },\n desugar: {\n default: false,\n values: [{ name: true }, { name: false }],\n },\n});\n\nexport function getOptionValue(\n pOptions: IRenderOptions | null,\n pOptionName: keyof IAllowedValues,\n): string | boolean {\n // eslint-disable-next-line security/detect-object-injection\n return pOptions?.[pOptionName] ?? ALLOWED_VALUES[pOptionName].default;\n}\n\nexport function getAllowedValues(): IAllowedValues {\n return ALLOWED_VALUES;\n}\n\nexport default {\n getAllowedValues,\n getOptionValue,\n};\n", "import Ajv from \"ajv\";\nimport type {\n IRenderOptions,\n IStateMachine,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"../options.mjs\";\nimport { parse as parseSmCat } from \"./smcat/parse.mjs\";\nimport { parse as parseSCXML } from \"./scxml/index.mjs\";\nimport $schema from \"./smcat-ast.schema.mjs\";\n\n// @ts-expect-error using Ajv as a class/ constructor is as per the ajv documentation, but tsc seems to thing differently\nconst ajv = new Ajv();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction validateAgainstSchema(pSchema: typeof $schema, pObject: any): void {\n if (!ajv.validate(pSchema, pObject)) {\n throw new Error(\n `The provided JSON is not a valid state-machine-cat AST: ${ajv.errorsText()}.\\n`,\n );\n }\n}\n\nexport default {\n getAST(\n pScript: string | IStateMachine,\n pOptions: IRenderOptions,\n ): IStateMachine {\n let lReturnValue = pScript;\n\n if (options.getOptionValue(pOptions, \"inputType\") === \"smcat\") {\n lReturnValue = parseSmCat(pScript as string);\n } else if (options.getOptionValue(pOptions, \"inputType\") === \"scxml\") {\n // @ts-expect-error inputType scxml => it's a string\n lReturnValue = parseSCXML(pScript);\n } else if (typeof pScript === \"string\") {\n // json\n lReturnValue = JSON.parse(pScript);\n }\n\n validateAgainstSchema($schema, lReturnValue);\n\n // @ts-expect-error by here lReturnValue is bound to be an IStateMachine\n return lReturnValue;\n },\n};\n", "export class Counter {\n #lHWM = 0;\n\n constructor(pStart: number = 0) {\n this.#lHWM = pStart;\n }\n\n next(): number {\n // eslint-disable-next-line no-plusplus\n return ++this.#lHWM;\n }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n IState,\n IStateMachine,\n ITransition,\n StateType,\n} from \"types/state-machine-cat.mjs\";\n\ninterface IFlattenedState extends Omit {\n statemachine: boolean;\n parent: string;\n}\n\nfunction flattenStatesToMap(\n pStates: IState[],\n pMap: Map,\n pParent: string = \"\",\n): void {\n pStates\n .filter((pState) => Boolean(pState.statemachine))\n .forEach((pState) => {\n // @ts-expect-error ts2345 - typescript doesn't detect that one line above we\n // ensure pState.statemachine is not undefined\n if (Object.hasOwn(pState.statemachine, \"states\")) {\n // @ts-expect-error TS doesn't detect that after the call in the filter\n // the .statemachine is guaranteed to exist\n flattenStatesToMap(pState.statemachine.states, pMap, pState.name);\n }\n });\n\n pStates.forEach((pState) =>\n pMap.set(pState.name, {\n name: pState.name,\n type: pState.type,\n statemachine: Boolean(pState.statemachine),\n parent: pParent,\n }),\n );\n}\n\nfunction flattenTransitions(pStateMachine: IStateMachine): ITransition[] {\n let lTransitions: ITransition[] = [];\n\n if (Object.hasOwn(pStateMachine, \"transitions\")) {\n // @ts-expect-error TS doesn't detect that after the call in the if the\n // .transitions is guaranteed to exist\n lTransitions = structuredClone(pStateMachine.transitions);\n }\n if (Object.hasOwn(pStateMachine, \"states\")) {\n pStateMachine.states\n .filter((pState) => Boolean(pState.statemachine))\n .forEach((pState) => {\n lTransitions = lTransitions.concat(\n // @ts-expect-error TS doesn't detect that after the call in the filter\n // the .statemachine is guaranteed to exist\n flattenTransitions(pState.statemachine),\n );\n });\n }\n return lTransitions;\n}\n\nexport default class StateMachineModel {\n #flattenedTransitions: ITransition[];\n #flattenedStates: Map;\n\n constructor(pStateMachine: IStateMachine) {\n this.#flattenedStates = new Map();\n flattenStatesToMap(pStateMachine.states ?? [], this.#flattenedStates);\n this.#flattenedTransitions = flattenTransitions(pStateMachine);\n }\n\n get flattenedTransitions(): ITransition[] {\n return this.#flattenedTransitions;\n }\n\n findStateByName(pName: string): IFlattenedState | undefined {\n return this.#flattenedStates.get(pName);\n }\n\n findStatesByTypes(pTypes: StateType[]): any[] {\n return Array.from(this.#flattenedStates.values()).filter((pState) =>\n pTypes.includes(pState.type),\n );\n }\n\n findExternalSelfTransitions(pStateName: string): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) =>\n pTransition.from === pStateName &&\n pTransition.to === pStateName &&\n pTransition.type !== \"internal\",\n );\n }\n\n findTransitionsByFrom(pFromStateName: string): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) => pTransition.from === pFromStateName,\n );\n }\n\n findTransitionsByTo(pToStateName: string): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) => pTransition.to === pToStateName,\n );\n }\n\n getMaximumTransitionId(): number {\n return Math.max(...this.#flattenedTransitions.map(({ id }) => id));\n }\n\n findTransitionsToSiblings(\n pStateName: string,\n pExcludeIds: Set,\n ): ITransition[] {\n return this.#flattenedTransitions.filter(\n (pTransition) =>\n !pExcludeIds.has(pTransition.id) &&\n pTransition.from === pStateName &&\n this.#flattenedStates.get(pTransition.to)?.parent ===\n this.#flattenedStates.get(pStateName)?.parent,\n );\n }\n}\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n IState,\n IStateMachine,\n StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\n\nconst TRIGGER_RE_AS_A_STRING =\n \"^(entry|activity|exit)\\\\s*/\\\\s*([^\\\\n$]*)(\\\\n|$)\";\n/* eslint security/detect-non-literal-regexp:0 */\nconst TRIGGER_RE = new RegExp(TRIGGER_RE_AS_A_STRING);\n\nfunction stateExists(pKnownStateNames: string[], pName: string): boolean {\n return pKnownStateNames.includes(pName);\n}\n\ntype RegExp2StateType = {\n re: RegExp;\n stateType: import(\"../../types/state-machine-cat.mjs\").StateType;\n};\n\nconst RE2STATE_TYPE: RegExp2StateType[] = [\n {\n re: /initial/,\n stateType: \"initial\",\n },\n {\n re: /final/,\n stateType: \"final\",\n },\n {\n re: /parallel/,\n stateType: \"parallel\",\n },\n {\n re: /(deep.*history)|(history.*deep)/,\n stateType: \"deephistory\",\n },\n {\n re: /history/,\n stateType: \"history\",\n },\n {\n re: /^\\^.*/,\n stateType: \"choice\",\n },\n {\n re: /^].*/,\n stateType: \"forkjoin\",\n },\n];\n\nfunction matches(pName: string) {\n return (pEntry: RegExp2StateType): boolean => pEntry.re.test(pName);\n}\n\nfunction getStateType(pName: string): StateType {\n return (RE2STATE_TYPE.find(matches(pName)) || { stateType: \"regular\" })\n .stateType;\n}\n\nfunction initState(pName: string): IState {\n return {\n name: pName,\n type: getStateType(pName),\n };\n}\n\nfunction isComposite(pState: IState): boolean {\n return Boolean(pState.statemachine);\n}\n\nfunction getAlreadyDeclaredStates(pStateMachine: IStateMachine): string[] {\n const lStates = pStateMachine?.states ?? [];\n\n return lStates.filter(isComposite).reduce(\n (pAllStateNames, pThisState) =>\n pAllStateNames.concat(\n // cast: because of the isComposite, we now pThisState has a .statemachine\n // attribute and it won't be undefined\n getAlreadyDeclaredStates(pThisState.statemachine as IStateMachine),\n ),\n lStates.map(({ name }) => name),\n );\n}\n\nfunction extractUndeclaredStates(\n pStateMachine: IStateMachine,\n pKnownStateNames: string[],\n): IState[] {\n pKnownStateNames =\n pKnownStateNames ?? getAlreadyDeclaredStates(pStateMachine);\n\n pStateMachine.states = pStateMachine?.states ?? [];\n const lTransitions = pStateMachine?.transitions ?? [];\n\n pStateMachine.states.filter(isComposite).forEach((pState) => {\n // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n pState.statemachine.states = extractUndeclaredStates(\n // @ts-expect-error isComposite guarantees the statemachine attribute exists, TS doesn't understand that yet, though\n pState.statemachine,\n pKnownStateNames,\n );\n });\n\n lTransitions.forEach((pTransition) => {\n if (!stateExists(pKnownStateNames, pTransition.from)) {\n pKnownStateNames.push(pTransition.from);\n pStateMachine.states.push(initState(pTransition.from));\n }\n if (!stateExists(pKnownStateNames, pTransition.to)) {\n pKnownStateNames.push(pTransition.to);\n pStateMachine.states.push(initState(pTransition.to));\n }\n });\n return pStateMachine.states;\n}\n\nfunction classifyForkJoin(\n pInComingCount: number,\n pOutGoingCount: number,\n): StateType {\n let lReturnValue: StateType = \"junction\";\n\n if (pInComingCount <= 1 && pOutGoingCount > 1) {\n lReturnValue = \"fork\";\n }\n if (pInComingCount > 1 && pOutGoingCount <= 1) {\n lReturnValue = \"join\";\n }\n\n return lReturnValue;\n}\n\nfunction classifyForkJoins(\n pStateMachine: IStateMachine,\n pFlattenedStateMachineModel = new StateMachineModel(pStateMachine),\n): IStateMachine {\n // TODO: mutates parameter\n pStateMachine.states = pStateMachine.states.map((pState) => {\n if (pState.type === \"forkjoin\" && !pState.typeExplicitlySet) {\n const lInComingCount = pFlattenedStateMachineModel.findTransitionsByTo(\n pState.name,\n ).length;\n const lOutGoingCount = pFlattenedStateMachineModel.findTransitionsByFrom(\n pState.name,\n ).length;\n\n pState.type = classifyForkJoin(lInComingCount, lOutGoingCount);\n }\n if (pState.statemachine) {\n pState.statemachine = classifyForkJoins(\n pState.statemachine,\n pFlattenedStateMachineModel,\n );\n }\n return pState;\n });\n\n return pStateMachine;\n}\n\nfunction stateEqual(pStateOne: IState, pStateTwo: IState): boolean {\n return pStateOne.name === pStateTwo.name;\n}\n\nfunction uniq(\n pArray: Array,\n pEqualFunction: (a: SomeType, b: SomeType) => boolean,\n) {\n return pArray.reduce((pBag: SomeType[], pMarble: SomeType) => {\n const lMarbleIndex = pBag.findIndex((pBagItem) =>\n pEqualFunction(pBagItem, pMarble),\n );\n\n if (lMarbleIndex > -1) {\n // ensures the _last_ marble we find is in the bag on that position\n pBag[lMarbleIndex] = pMarble;\n return pBag;\n }\n return pBag.concat(pMarble);\n }, []);\n}\n\nfunction parseTransitionExpression(pString: string): {\n event?: string;\n cond?: string;\n action?: string;\n} {\n // eslint-disable-next-line security/detect-unsafe-regex\n const lTransitionExpressionRe = /([^[/]+)?(\\[[^\\]]+\\])?[^/]*(\\/.+)?/;\n const lReturnValue: { event?: string; cond?: string; action?: string } = {};\n\n // @ts-expect-error match has no fallback because lTransitionExpressionRe will match\n // any string (every part is optional)\n const lMatchResult: RegExpMatchArray = lTransitionExpressionRe.exec(pString);\n const lEventPos = 1;\n const lConditionPos = 2;\n const lActionPos = 3;\n\n if (lMatchResult[lEventPos]) {\n lReturnValue.event = lMatchResult[lEventPos].trim();\n }\n if (lMatchResult[lConditionPos]) {\n lReturnValue.cond = lMatchResult[lConditionPos].slice(1, -1).trim();\n }\n if (lMatchResult[lActionPos]) {\n lReturnValue.action = lMatchResult[lActionPos]\n .slice(1, lMatchResult[lActionPos].length)\n .trim();\n }\n\n return lReturnValue;\n}\n\nfunction setIf(\n pObject: { [name: string]: string },\n pProperty: string,\n pValue: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pCondition: (pX: any) => boolean = Boolean,\n) {\n if (pCondition(pValue)) {\n pObject[pProperty] = pValue;\n }\n}\n\nfunction setIfNotEmpty(\n pObject: { [name: string]: string },\n pProperty: string,\n pValue: string,\n) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setIf(pObject, pProperty, pValue, (pX: Array) => pX && pX.length > 0);\n}\n\nfunction extractAction(pActivityCandidate: string): {\n type: string;\n body: string;\n} {\n const lMatch = TRIGGER_RE.exec(pActivityCandidate);\n const lTypePos = 1;\n const lBodyPos = 2;\n\n if (lMatch) {\n return {\n type: lMatch[lTypePos],\n body: lMatch[lBodyPos],\n };\n }\n return {\n type: \"activity\",\n body: pActivityCandidate,\n };\n}\n\nfunction extractActions(pString: string): { type: string; body: string }[] {\n return pString\n .split(/\\n\\s*/g)\n .map((pActivityCandidate) => pActivityCandidate.trim())\n .map(extractAction);\n}\n\nexport default {\n initState,\n extractUndeclaredStates,\n classifyForkJoins,\n getStateType,\n stateEqual,\n uniq,\n parseTransitionExpression,\n extractActions,\n setIf,\n setIfNotEmpty,\n};\n", "// @generated by Peggy 4.2.0.\n//\n// https://peggyjs.org/\n\nimport parserHelpers from \"../parser-helpers.mjs\";\n\n\nfunction peg$subclass(child, parent) {\n function C() { this.constructor = child; }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = \"SyntaxError\";\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || \" \";\n if (str.length > targetLength) { return str; }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n var str = \"Error: \" + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n + peg$padEnd(\"\", hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class: function(expectation) {\n var escapedParts = expectation.parts.map(function(part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n },\n\n any: function() {\n return \"any character\";\n },\n\n end: function() {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { program: peg$parseprogram };\n var peg$startRuleFunction = peg$parseprogram;\n\n var peg$c0 = \",\";\n var peg$c1 = \";\";\n var peg$c2 = \"[\";\n var peg$c3 = \"]\";\n var peg$c4 = \":\";\n var peg$c5 = \"{\";\n var peg$c6 = \"}\";\n var peg$c7 = \"=\";\n var peg$c8 = \"label\";\n var peg$c9 = \"color\";\n var peg$c10 = \"class\";\n var peg$c11 = \"active\";\n var peg$c12 = \"type\";\n var peg$c13 = \"regular\";\n var peg$c14 = \"initial\";\n var peg$c15 = \"terminate\";\n var peg$c16 = \"final\";\n var peg$c17 = \"parallel\";\n var peg$c18 = \"history\";\n var peg$c19 = \"deephistory\";\n var peg$c20 = \"choice\";\n var peg$c21 = \"forkjoin\";\n var peg$c22 = \"fork\";\n var peg$c23 = \"join\";\n var peg$c24 = \"junction\";\n var peg$c25 = \"width\";\n var peg$c26 = \"external\";\n var peg$c27 = \"internal\";\n var peg$c28 = \"->\";\n var peg$c29 = \"=>>\";\n var peg$c30 = \"=>\";\n var peg$c31 = \">>\";\n var peg$c32 = \":>\";\n var peg$c33 = \"--\";\n var peg$c34 = \"==\";\n var peg$c35 = \"<-\";\n var peg$c36 = \"<<=\";\n var peg$c37 = \"<=\";\n var peg$c38 = \"<<\";\n var peg$c39 = \"<:\";\n var peg$c40 = \"#\";\n var peg$c41 = \".\";\n var peg$c42 = \"\\\"\";\n var peg$c43 = \"\\\\\\\"\";\n var peg$c44 = \"/*\";\n var peg$c45 = \"*/\";\n var peg$c46 = \"//\";\n\n var peg$r0 = /^[0-9]/;\n var peg$r1 = /^[a-zA-Z0-9_\\- ]/;\n var peg$r2 = /^[,;{]/;\n var peg$r3 = /^[;{]/;\n var peg$r4 = /^[^;, \"\\t\\n\\r=\\-><:{[]/;\n var peg$r5 = /^[ \\t]/;\n var peg$r6 = /^[\\r\\n]/;\n var peg$r7 = /^[^\\r\\n]/;\n\n var peg$e0 = peg$otherExpectation(\"statemachine\");\n var peg$e1 = peg$literalExpectation(\",\", false);\n var peg$e2 = peg$literalExpectation(\";\", false);\n var peg$e3 = peg$otherExpectation(\"state\");\n var peg$e4 = peg$literalExpectation(\"[\", false);\n var peg$e5 = peg$literalExpectation(\"]\", false);\n var peg$e6 = peg$literalExpectation(\":\", false);\n var peg$e7 = peg$literalExpectation(\"{\", false);\n var peg$e8 = peg$literalExpectation(\"}\", false);\n var peg$e9 = peg$otherExpectation(\"extended state attributes\");\n var peg$e10 = peg$otherExpectation(\"extended state attribute\");\n var peg$e11 = peg$literalExpectation(\"=\", false);\n var peg$e12 = peg$otherExpectation(\"state attribute name\");\n var peg$e13 = peg$literalExpectation(\"label\", true);\n var peg$e14 = peg$literalExpectation(\"color\", true);\n var peg$e15 = peg$otherExpectation(\"class attribute\");\n var peg$e16 = peg$literalExpectation(\"class\", true);\n var peg$e17 = peg$otherExpectation(\"state flag\");\n var peg$e18 = peg$literalExpectation(\"active\", true);\n var peg$e19 = peg$otherExpectation(\"state type\");\n var peg$e20 = peg$literalExpectation(\"type\", true);\n var peg$e21 = peg$otherExpectation(\"state type type\");\n var peg$e22 = peg$literalExpectation(\"regular\", false);\n var peg$e23 = peg$literalExpectation(\"initial\", false);\n var peg$e24 = peg$literalExpectation(\"terminate\", false);\n var peg$e25 = peg$literalExpectation(\"final\", false);\n var peg$e26 = peg$literalExpectation(\"parallel\", false);\n var peg$e27 = peg$literalExpectation(\"history\", false);\n var peg$e28 = peg$literalExpectation(\"deephistory\", false);\n var peg$e29 = peg$literalExpectation(\"choice\", false);\n var peg$e30 = peg$literalExpectation(\"forkjoin\", false);\n var peg$e31 = peg$literalExpectation(\"fork\", false);\n var peg$e32 = peg$literalExpectation(\"join\", false);\n var peg$e33 = peg$literalExpectation(\"junction\", false);\n var peg$e34 = peg$otherExpectation(\"transition\");\n var peg$e35 = peg$otherExpectation(\"extended transition attributes\");\n var peg$e36 = peg$otherExpectation(\"extended transition attribute\");\n var peg$e37 = peg$otherExpectation(\"transition attribute name\");\n var peg$e38 = peg$otherExpectation(\"transition type name\");\n var peg$e39 = peg$otherExpectation(\"numeric transition attribute name\");\n var peg$e40 = peg$literalExpectation(\"width\", true);\n var peg$e41 = peg$otherExpectation(\"transition type value\");\n var peg$e42 = peg$literalExpectation(\"external\", false);\n var peg$e43 = peg$literalExpectation(\"internal\", false);\n var peg$e44 = peg$otherExpectation(\"left to right arrow\");\n var peg$e45 = peg$literalExpectation(\"->\", false);\n var peg$e46 = peg$literalExpectation(\"=>>\", false);\n var peg$e47 = peg$literalExpectation(\"=>\", false);\n var peg$e48 = peg$literalExpectation(\">>\", false);\n var peg$e49 = peg$literalExpectation(\":>\", false);\n var peg$e50 = peg$literalExpectation(\"--\", false);\n var peg$e51 = peg$literalExpectation(\"==\", false);\n var peg$e52 = peg$otherExpectation(\"right to left arrow\");\n var peg$e53 = peg$literalExpectation(\"<-\", false);\n var peg$e54 = peg$literalExpectation(\"<<=\", false);\n var peg$e55 = peg$literalExpectation(\"<=\", false);\n var peg$e56 = peg$literalExpectation(\"<<\", false);\n var peg$e57 = peg$literalExpectation(\"<:\", false);\n var peg$e58 = peg$literalExpectation(\"#\", false);\n var peg$e59 = peg$literalExpectation(\".\", false);\n var peg$e60 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$e61 = peg$otherExpectation(\"double quoted string\");\n var peg$e62 = peg$literalExpectation(\"\\\"\", false);\n var peg$e63 = peg$literalExpectation(\"\\\\\\\"\", false);\n var peg$e64 = peg$anyExpectation();\n var peg$e65 = peg$otherExpectation(\"valid class string\");\n var peg$e66 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"_\", \"-\", \" \"], false, false);\n var peg$e67 = peg$classExpectation([\",\", \";\", \"{\"], false, false);\n var peg$e68 = peg$classExpectation([\";\", \"{\"], false, false);\n var peg$e69 = peg$otherExpectation(\"identifier\");\n var peg$e70 = peg$classExpectation([\";\", \",\", \" \", \"\\\"\", \"\\t\", \"\\n\", \"\\r\", \"=\", \"-\", \">\", \"<\", \":\", \"{\", \"[\"], true, false);\n var peg$e71 = peg$otherExpectation(\"whitespace\");\n var peg$e72 = peg$classExpectation([\" \", \"\\t\"], false, false);\n var peg$e73 = peg$otherExpectation(\"line end\");\n var peg$e74 = peg$classExpectation([\"\\r\", \"\\n\"], false, false);\n var peg$e75 = peg$literalExpectation(\"/*\", false);\n var peg$e76 = peg$literalExpectation(\"*/\", false);\n var peg$e77 = peg$literalExpectation(\"//\", false);\n var peg$e78 = peg$classExpectation([\"\\r\", \"\\n\"], true, false);\n var peg$e79 = peg$otherExpectation(\"comment\");\n\n var peg$f0 = function(statemachine) {\n statemachine.states = parserHelpers.extractUndeclaredStates(statemachine);\n return parserHelpers.classifyForkJoins(statemachine);\n };\n var peg$f1 = function(states, transitions) {\n let lStateMachine = {};\n parserHelpers.setIf(lStateMachine, 'states', states);\n parserHelpers.setIfNotEmpty(lStateMachine, 'transitions', transitions);\n\n return lStateMachine;\n };\n var peg$f2 = function(state) {return state};\n var peg$f3 = function(state) {return state};\n var peg$f4 = function(states) {\n return parserHelpers.uniq(states[0].concat(states[1]), parserHelpers.stateEqual);\n };\n var peg$f5 = function(notes, id, attrs) {return attrs};\n var peg$f6 = function(notes, id, extended_state_attributes, act) {return act};\n var peg$f7 = function(notes, id, extended_state_attributes, actions, sm) {return sm;};\n var peg$f8 = function(notes, id, extended_state_attributes, actions, statemachine) {\n let lState = parserHelpers.initState(id);\n (extended_state_attributes || []).forEach(\n pExtendedAttribute => parserHelpers.setIf(lState, pExtendedAttribute.name, pExtendedAttribute.value)\n );\n parserHelpers.setIf(lState, 'typeExplicitlySet', (extended_state_attributes || []).some(pExtendedAttribute => pExtendedAttribute.typeExplicitlySet));\n parserHelpers.setIf(lState, 'statemachine', statemachine);\n parserHelpers.setIfNotEmpty(lState, 'note', notes);\n\n if (actions) {\n parserHelpers.setIfNotEmpty(\n lState,\n 'actions',\n parserHelpers.extractActions(actions)\n );\n }\n\n return lState;\n };\n var peg$f9 = function(name, value) {\n return {name, value};\n };\n var peg$f10 = function(name, value) {\n return {name, value}\n };\n var peg$f11 = function(name) {\n return {name, value:true}\n };\n var peg$f12 = function(name, value) {\n return {name, value, typeExplicitlySet:true}\n };\n var peg$f13 = function(name) {\n return name.toLowerCase();\n };\n var peg$f14 = function(name) {\n return name.toLowerCase();\n };\n var peg$f15 = function(name) {\n return name.toLowerCase();\n };\n var peg$f16 = function(name) {\n return name.toLowerCase();\n };\n var peg$f17 = function(notes, trans, attrs) {return attrs};\n var peg$f18 = function(notes, trans, extended_attributes, lbl) {return lbl};\n var peg$f19 = function(notes, trans, extended_attributes, label) {\n if (label) {\n trans.label = label;\n trans = Object.assign(\n trans,\n parserHelpers.parseTransitionExpression(label),\n );\n }\n (extended_attributes || []).forEach(\n pExtendedAttribute => parserHelpers.setIf(trans, pExtendedAttribute.name, pExtendedAttribute.value)\n );\n parserHelpers.setIfNotEmpty(trans, 'note', notes);\n\n trans.id=options.counter.next();\n return trans;\n };\n var peg$f20 = function(from_, to) {\n return {\n from: from_,\n to: to\n }\n };\n var peg$f21 = function(to, from_) {\n return {\n from: from_,\n to: to\n }\n };\n var peg$f22 = function(name, value) {\n return {name, value};\n };\n var peg$f23 = function(name, value) {\n return {name, value};\n };\n var peg$f24 = function(name, value) {\n return {name, value};\n };\n var peg$f25 = function(name, value) {\n return {name, value};\n };\n var peg$f26 = function(name) {\n return name.toLowerCase();\n };\n var peg$f27 = function(name) {\n return name.toLowerCase();\n };\n var peg$f28 = function(name) {\n return name\n };\n var peg$f29 = function(com) {\n return com.join(\"\").trim()\n };\n var peg$f30 = function(digits) { return parseFloat(digits.join(\"\")); };\n var peg$f31 = function(digits) { return parseInt(digits.join(\"\"), 10); };\n var peg$f32 = function(s) {return s.join(\"\").replace(/\\\\\\\"/g, \"\\\"\")};\n var peg$f33 = function(c) {return c};\n var peg$f34 = function(s) {return s.join(\"\")};\n var peg$f35 = function(c) {return c};\n var peg$f36 = function(s) {return s.join(\"\").trim()};\n var peg$f37 = function(s) {return s.join(\"\").trim()};\n var peg$f38 = function(c) {return c};\n var peg$f39 = function(c) {return c};\n var peg$f40 = function(chars) {return chars.join(\"\")};\n var peg$currPos = options.peg$currPos | 0;\n var peg$savedPos = peg$currPos;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = peg$currPos;\n var peg$maxFailExpected = options.peg$maxFailExpected || [];\n var peg$silentFails = options.peg$silentFails | 0;\n\n var peg$result;\n\n if (options.startRule) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parseprogram() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parsestatemachine();\n s3 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f0(s2);\n\n return s0;\n }\n\n function peg$parsestatemachine() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsestates();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = [];\n s3 = peg$parsetransition();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsetransition();\n }\n peg$savedPos = s0;\n s0 = peg$f1(s1, s2);\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n\n return s0;\n }\n\n function peg$parsestates() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parsestate();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s3 = peg$f2(s4);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parsestate();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s3 = peg$f2(s4);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n s3 = peg$currPos;\n s4 = peg$parsestate();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s3;\n s3 = peg$f3(s4);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f4(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsestate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsenote();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsenote();\n }\n s2 = peg$parse_();\n s3 = peg$parseidentifier();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s6 = peg$c2;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parseextended_state_attributes();\n if (input.charCodeAt(peg$currPos) === 93) {\n s8 = peg$c3;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s5;\n s5 = peg$f5(s1, s3, s7);\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n s6 = peg$parse_();\n s7 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s8 = peg$c4;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse_();\n s10 = peg$parsestring();\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n peg$savedPos = s7;\n s7 = peg$f6(s1, s3, s5, s10);\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n s8 = peg$parse_();\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s10 = peg$c5;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n s12 = peg$parsestatemachine();\n if (s12 !== peg$FAILED) {\n s13 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 125) {\n s14 = peg$c6;\n peg$currPos++;\n } else {\n s14 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s14 !== peg$FAILED) {\n peg$savedPos = s9;\n s9 = peg$f7(s1, s3, s5, s7, s12);\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n s10 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f8(s1, s3, s5, s7, s9);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_attributes() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n s1 = peg$parseextended_state_attribute();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseextended_state_attribute();\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n\n return s0;\n }\n\n function peg$parseextended_state_attribute() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_state_string_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parsequotedstring();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f9(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseclass_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseclass_string();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f10(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_state_boolean_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f11(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_state_type_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseextended_state_type_attribute_type();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f12(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_string_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c8) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n if (s1 === peg$FAILED) {\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c9) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f13(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n\n return s0;\n }\n\n function peg$parseclass_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c10) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f14(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_boolean_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 6);\n if (s1.toLowerCase() === peg$c11) {\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f15(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_type_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 4);\n if (s1.toLowerCase() === peg$c12) {\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f16(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n\n return s0;\n }\n\n function peg$parseextended_state_type_attribute_type() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 7) === peg$c13) {\n s0 = peg$c13;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c14) {\n s0 = peg$c14;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 9) === peg$c15) {\n s0 = peg$c15;\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 5) === peg$c16) {\n s0 = peg$c16;\n peg$currPos += 5;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c17) {\n s0 = peg$c17;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c18) {\n s0 = peg$c18;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 11) === peg$c19) {\n s0 = peg$c19;\n peg$currPos += 11;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c20) {\n s0 = peg$c20;\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c21) {\n s0 = peg$c21;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c22) {\n s0 = peg$c22;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c23) {\n s0 = peg$c23;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c24) {\n s0 = peg$c24;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n\n return s0;\n }\n\n function peg$parsetransition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsenote();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsenote();\n }\n s2 = peg$parsetransitionbase();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s4 = peg$c2;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseextended_transition_attributes();\n if (input.charCodeAt(peg$currPos) === 93) {\n s6 = peg$c3;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s3;\n s3 = peg$f17(s1, s2, s5);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s5 = peg$c4;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parsetransitionstring();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n peg$savedPos = s4;\n s4 = peg$f18(s1, s2, s3, s7);\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (input.charCodeAt(peg$currPos) === 59) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f19(s1, s2, s3, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e34); }\n }\n\n return s0;\n }\n\n function peg$parsetransitionbase() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parsefwdarrowtoken();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseidentifier();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f20(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parsebckarrowtoken();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseidentifier();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f21(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_attributes() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n s1 = peg$parseextended_transition_attribute();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseextended_transition_attribute();\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e35); }\n\n return s0;\n }\n\n function peg$parseextended_transition_attribute() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_transition_string_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parsequotedstring();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f22(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseclass_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseclass_string();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f23(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_transition_type_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parseextended_transition_type_value();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f24(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = peg$parseextended_transition_numeric_attribute_name();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n s6 = peg$parsepositive_number();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n peg$savedPos = s0;\n s0 = peg$f25(s2, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e36); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_string_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c9) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f26(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e37); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_type_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 4);\n if (s1.toLowerCase() === peg$c12) {\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e20); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f27(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e38); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_numeric_attribute_name() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 5);\n if (s1.toLowerCase() === peg$c25) {\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e40); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f28(s1);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e39); }\n }\n\n return s0;\n }\n\n function peg$parseextended_transition_type_value() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 8) === peg$c26) {\n s0 = peg$c26;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e42); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c27) {\n s0 = peg$c27;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e43); }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e41); }\n }\n\n return s0;\n }\n\n function peg$parsefwdarrowtoken() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c28) {\n s0 = peg$c28;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e45); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s0 = peg$c29;\n peg$currPos += 3;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e46); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c30) {\n s0 = peg$c30;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e47); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c31) {\n s0 = peg$c31;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e48); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c32) {\n s0 = peg$c32;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e49); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c33) {\n s0 = peg$c33;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e50); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c34) {\n s0 = peg$c34;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e51); }\n }\n }\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e44); }\n }\n\n return s0;\n }\n\n function peg$parsebckarrowtoken() {\n var s0, s1;\n\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c35) {\n s0 = peg$c35;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e53); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c36) {\n s0 = peg$c36;\n peg$currPos += 3;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e54); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c37) {\n s0 = peg$c37;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e55); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c38) {\n s0 = peg$c38;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e56); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c39) {\n s0 = peg$c39;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e57); }\n }\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e52); }\n }\n\n return s0;\n }\n\n function peg$parsenote() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 35) {\n s2 = peg$c40;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e58); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseslcomtok();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseslcomtok();\n }\n peg$savedPos = s0;\n s0 = peg$f29(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepositive_number() {\n var s0;\n\n s0 = peg$parsepositive_real();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecardinal();\n }\n\n return s0;\n }\n\n function peg$parsepositive_real() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsecardinal();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s3 = peg$c41;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e59); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsecardinal();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f30(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecardinal() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e60); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e60); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f31(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsetransitionstring() {\n var s0;\n\n s0 = peg$parsequotedstring();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunquotedtransitionstring();\n }\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0;\n\n s0 = peg$parsequotedstring();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunquotedstring();\n }\n\n return s0;\n }\n\n function peg$parsequotedstring() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsestringcontent();\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f32(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e61); }\n }\n\n return s0;\n }\n\n function peg$parsestringcontent() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c43) {\n s3 = peg$c43;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e63); }\n }\n if (s3 === peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f33(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c43) {\n s3 = peg$c43;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e63); }\n }\n if (s3 === peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f33(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseclass_string() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseclass_stringcontent();\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f34(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e65); }\n }\n\n return s0;\n }\n\n function peg$parseclass_stringcontent() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e66); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f35(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c42;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e62); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e66); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f35(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseunquotedtransitionstring() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsetransitionnonsep();\n peg$savedPos = s0;\n s1 = peg$f36(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseunquotedstring() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenonsep();\n peg$savedPos = s0;\n s1 = peg$f37(s1);\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsenonsep() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r2.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e67); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f38(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r2.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e67); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f38(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsetransitionnonsep() {\n var s0, s1, s2, s3;\n\n s0 = [];\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r3.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e68); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f39(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$currPos;\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = input.charAt(peg$currPos);\n if (peg$r3.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e68); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = undefined;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f39(s3);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r4.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e70); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r4.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e70); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f40(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsequotedstring();\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e69); }\n }\n\n return s0;\n }\n\n function peg$parsewhitespace() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = input.charAt(peg$currPos);\n if (peg$r5.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e72); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e71); }\n }\n\n return s0;\n }\n\n function peg$parselineend() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = input.charAt(peg$currPos);\n if (peg$r6.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e74); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e73); }\n }\n\n return s0;\n }\n\n function peg$parsemlcomstart() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c44) {\n s0 = peg$c44;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e75); }\n }\n\n return s0;\n }\n\n function peg$parsemlcomend() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c45) {\n s0 = peg$c45;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e76); }\n }\n\n return s0;\n }\n\n function peg$parsemlcomtok() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c45) {\n s2 = peg$c45;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e76); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e64); }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsemlcomment() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsemlcomstart();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsemlcomtok();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsemlcomtok();\n }\n s3 = peg$parsemlcomend();\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseslcomstart() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c46) {\n s0 = peg$c46;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e77); }\n }\n\n return s0;\n }\n\n function peg$parseslcomtok() {\n var s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r7.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e78); }\n }\n\n return s0;\n }\n\n function peg$parseslcomment() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseslcomstart();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseslcomtok();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseslcomtok();\n }\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecomment() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$parseslcomment();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemlcomment();\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e79); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parselineend();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parselineend();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos\n });\n }\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nconst peg$allowedStartRules = [\n \"program\"\n];\n\nexport {\n peg$allowedStartRules as StartRules,\n peg$SyntaxError as SyntaxError,\n peg$parse as parse\n};\n", "import type { IStateMachine } from \"types/state-machine-cat.mjs\";\nimport { Counter } from \"../../counter.mjs\";\nimport { parse as pegParse } from \"./smcat-parser.mjs\";\n\nexport function parse(pScript: string): IStateMachine {\n return pegParse(pScript, { counter: new Counter() });\n}\n", "/* eslint-disable security/detect-object-injection */\nimport fastxml from \"fast-xml-parser\";\nimport he from \"he\";\nimport traverse from \"neotraverse\";\nimport { Counter } from \"../../counter.mjs\";\nimport parserHelpers from \"../parser-helpers.mjs\";\nimport utl from \"../../transform/utl.mjs\";\nimport { castArray } from \"./utl.mjs\";\nimport { normalizeMachine } from \"./normalize-machine.mjs\";\n\nconst formatLabel = utl.formatLabel;\n\nfunction extractActions(pState, pActionType) {\n return castArray(pState[pActionType]).map((pAction) => ({\n type: pActionType === \"onexit\" ? \"exit\" : \"entry\",\n body: he.decode(pAction).trim(),\n }));\n}\n\nfunction extractActionsFromInvokes(pInvokeTriggers) {\n return castArray(pInvokeTriggers).map((pInvokeTrigger) => {\n const lId = he.decode(pInvokeTrigger.id || \"\").trim();\n\n return {\n type: \"activity\",\n body: lId || he.decode(pInvokeTrigger || \"\").trim(),\n };\n });\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @returns {any[]}\n */\nfunction deriveActions(pState) {\n let lReturnValue = [];\n\n if (pState.onentry) {\n lReturnValue = lReturnValue.concat(extractActions(pState, \"onentry\"));\n }\n if (pState.invoke) {\n lReturnValue = lReturnValue.concat(\n extractActionsFromInvokes(pState.invoke),\n );\n }\n if (pState.onexit) {\n lReturnValue = lReturnValue.concat(extractActions(pState, \"onexit\"));\n }\n return lReturnValue;\n}\n\n/**\n * @param {import(\"../../..\").StateType} pType\n * @param {import(\"./scxml\").ISCXMLHistoryState} pState\n * @param {any} pState\n * @returns {import(\"../../..\").StateType}\n */\nfunction deriveStateType(pType, pState) {\n return pType === \"history\" && pState.type === \"deep\" ? \"deephistory\" : pType;\n}\n\n/**\n * @param {import(\"../../../types/state-machine-cat\").StateType} pType\n * @returns {(any) => import(\"../../..\").IState}\n */\nfunction mapState(pType) {\n return (pState) => {\n /** @type {import(\"../../../types/state-machine-cat\").IState} */\n const lReturnValue = {\n name: pState.id,\n type: deriveStateType(pType, pState),\n };\n\n if (parserHelpers.getStateType(pState.id) !== lReturnValue.type) {\n lReturnValue.typeExplicitlySet = true;\n }\n if (pState.onentry || pState.onexit || pState.invoke) {\n lReturnValue.actions = deriveActions(pState);\n }\n if (\n Object.keys(pState).some((pKey) =>\n [\"initial\", \"state\", \"history\", \"parallel\", \"final\"].includes(pKey),\n )\n ) {\n // recursion, so ...\n // eslint-disable-next-line no-use-before-define\n lReturnValue.statemachine = mapMachine(pState);\n }\n return lReturnValue;\n };\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{event?: string; cond?: string; action?: string; type?: string;}}\n */\nfunction extractTransitionAttributesFromObject(pTransition) {\n const lReturnValue = {};\n\n if (pTransition.event) {\n // SCXML uses spaces to distinguish multiple events\n // the smcat ast uses linebreaks\n lReturnValue.event = pTransition.event.split(/\\s+/).join(\"\\n\");\n }\n if (pTransition.cond) {\n lReturnValue.cond = pTransition.cond;\n }\n if (pTransition[\"#text\"]) {\n lReturnValue.action = he.decode(pTransition[\"#text\"]).trim();\n }\n\n if (pTransition.type) {\n lReturnValue.type = pTransition.type;\n }\n\n return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {{action?: string; label?: string;event?: string; cond?: string; type?: string}}\n */\nfunction extractTransitionAttributes(pTransition) {\n const lReturnValue = {};\n\n if (typeof pTransition === \"string\") {\n lReturnValue.action = he.decode(pTransition).trim();\n } else {\n Object.assign(\n lReturnValue,\n extractTransitionAttributesFromObject(pTransition),\n );\n }\n\n const lLabel = formatLabel(\n lReturnValue.event,\n lReturnValue.cond,\n lReturnValue.action,\n );\n\n if (lLabel) {\n lReturnValue.label = lLabel;\n }\n\n return lReturnValue;\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState} pState\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n */\nfunction reduceTransition(pState, pCounter) {\n /**\n * @param {import(\"./scxml\").ISCXMLTransition[]} pAllTransitions\n * @param {import(\"./scxml\").ISCXMLTransition} pTransition\n * @returns {import(\"../../..\").ITransition}\n */\n return (pAllTransitions, pTransition) => {\n // in SCXML spaces denote references to multiple states\n // => split into multiple transitions\n const lTargets = (pTransition?.target ?? pState.id).split(/\\s+/);\n const lTransitionAttributes = extractTransitionAttributes(pTransition);\n\n return pAllTransitions.concat(\n lTargets.map((pTarget) => ({\n id: pCounter.next(),\n from: pState.id,\n // a 'target-less transition' is typically\n // a self-transition\n to: pTarget,\n ...lTransitionAttributes,\n })),\n );\n };\n}\n\n/**\n * @param {import(\"./scxml\").INormalizedSCXMLState[]} pStates\n * @param {import(\"../../counter.mjs\").Counter} pCounter\n * @returns {import(\"../../../types/state-machine-cat\").ITransition[]}\n */\nfunction extractTransitions(pStates, pCounter) {\n return pStates\n .filter((pState) => Object.hasOwn(pState, \"transition\"))\n .reduce((pAllTransitions, pThisState) => {\n const lTransitionAsArray = castArray(pThisState.transition);\n return pAllTransitions.concat(\n lTransitionAsArray.reduce(reduceTransition(pThisState, pCounter), []),\n );\n }, []);\n}\n\n/**\n * @param {any} pSCXMLStateMachine\n * @returns {import(\"../../..\").IStateMachine}\n */\nfunction mapMachine(pSCXMLStateMachine) {\n const lNormalizedMachine = normalizeMachine(pSCXMLStateMachine);\n const lReturnValue = {\n states: lNormalizedMachine.initial\n .map(mapState(\"initial\"))\n .concat(lNormalizedMachine.state.map(mapState(\"regular\")))\n .concat(lNormalizedMachine.parallel.map(mapState(\"parallel\")))\n .concat(lNormalizedMachine.history.map(mapState(\"history\")))\n .concat(lNormalizedMachine.final.map(mapState(\"final\"))),\n };\n const lCounter = new Counter();\n\n const lTransitions = extractTransitions(lNormalizedMachine.initial, lCounter)\n .concat(extractTransitions(lNormalizedMachine.state, lCounter))\n .concat(extractTransitions(lNormalizedMachine.parallel, lCounter));\n\n if (lTransitions.length > 0) {\n lReturnValue.transitions = lTransitions;\n }\n\n return lReturnValue;\n}\n\n/**\n * This funky looking replace exists to make the output of the fast-xml-parser\n * backwards compatible with its version 3 that in case of conflicts between\n * attribute names and tag names gave preference to the attribute name (version 4\n * does the opposite). The previous behaviour was undocumented and for fast-xml-parser\n * likely a kind of edge case (normal people probably don't pass an empty attributeNamePrefix).\n *\n * @param {any} pObject\n * @param {string} pAttributeNamePrefix\n * @returns {any} the object, but\n * - with attributes that have the same name as tags in the same parent removed,\n * - attributes that don't have an equally named tag get their key renamed back\n * to the one without the pAttributeNamePrefix\n */\nfunction deDuplicateAttributesAndTags(pObject, pAttributeNamePrefix) {\n // - 'traverse' relies on the 'this' property a 'normal' function provides,\n // so this is not an arrow function.\n // - while it looks iffy to have a map function without a return statement\n // it's canonical traverse use (as per https://github.com/ljharb/js-traverse/blob/v0.6.7/README.md)\n // eslint-disable-next-line array-callback-return\n return traverse(pObject).map(function deDuplicate() {\n if (this.key?.startsWith(pAttributeNamePrefix)) {\n const pUnPrefixedAttributeName = this.key.slice(\n pAttributeNamePrefix.length,\n );\n if (this.parent.keys.includes(pUnPrefixedAttributeName)) {\n this.remove();\n } else {\n this.parent.node[pUnPrefixedAttributeName] = this.node;\n this.remove();\n }\n }\n });\n}\n\n/**\n * Parses SCXML into a state machine AST.\n *\n * @param {string} pSCXMLString The SCXML to parse\n * @returns {import(\"../../../types/state-machine-cat\").IStateMachine} state machine AST\n */\nexport function parse(pSCXMLString) {\n const lTrimmedSCXMLString = pSCXMLString.trim();\n const lAttributeNamePrefix = \"@_\";\n /** @type {import(\"./scxml\").ISCXMLAsJSON} */\n let lXMLAsJSON = {};\n\n const lXMLParser = new fastxml.XMLParser({\n attributeNamePrefix: lAttributeNamePrefix,\n ignoreAttributes: false,\n parseTagValue: true,\n processEntities: false,\n tagValueProcessor: (_pTagName, pTagValue) => he.decode(pTagValue),\n stopNodes: [\"*.onentry\", \"*.onexit\", \"*.transition\"],\n });\n\n try {\n lXMLAsJSON = deDuplicateAttributesAndTags(\n lXMLParser.parse(lTrimmedSCXMLString, true),\n lAttributeNamePrefix,\n );\n } catch (pError) {\n throw new Error(\"That doesn't look like valid xml ...\\n\");\n }\n return mapMachine(\n lXMLAsJSON?.scxml ?? {\n xmlns: \"http://www.w3.org/2005/07/scxml\",\n version: \"1.0\",\n },\n );\n}\n", "// src/index.ts\nvar to_string = (obj) => Object.prototype.toString.call(obj);\nvar is_typed_array = (value) => ArrayBuffer.isView(value) && !(value instanceof DataView);\nvar is_date = (obj) => to_string(obj) === \"[object Date]\";\nvar is_regexp = (obj) => to_string(obj) === \"[object RegExp]\";\nvar is_error = (obj) => to_string(obj) === \"[object Error]\";\nvar is_boolean = (obj) => to_string(obj) === \"[object Boolean]\";\nvar is_number = (obj) => to_string(obj) === \"[object Number]\";\nvar is_string = (obj) => to_string(obj) === \"[object String]\";\nvar is_array = Array.isArray;\nvar gopd = Object.getOwnPropertyDescriptor;\nvar is_property_enumerable = Object.prototype.propertyIsEnumerable;\nvar get_own_property_symbols = Object.getOwnPropertySymbols;\nvar has_own_property = Object.prototype.hasOwnProperty;\nfunction own_enumerable_keys(obj) {\n const res = Object.keys(obj);\n const symbols = get_own_property_symbols(obj);\n for (let i = 0; i < symbols.length; i++) {\n if (is_property_enumerable.call(obj, symbols[i])) {\n res.push(symbols[i]);\n }\n }\n return res;\n}\nfunction is_writable(object, key) {\n return !gopd(object, key)?.writable;\n}\nfunction copy(src, options) {\n if (typeof src === \"object\" && src !== null) {\n let dst;\n if (is_array(src)) {\n dst = [];\n } else if (is_date(src)) {\n dst = new Date(src.getTime ? src.getTime() : src);\n } else if (is_regexp(src)) {\n dst = new RegExp(src);\n } else if (is_error(src)) {\n dst = { message: src.message };\n } else if (is_boolean(src) || is_number(src) || is_string(src)) {\n dst = Object(src);\n } else if (is_typed_array(src)) {\n return src.slice();\n } else {\n dst = Object.create(Object.getPrototypeOf(src));\n }\n const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n for (const key of iterator_function(src)) {\n dst[key] = src[key];\n }\n return dst;\n }\n return src;\n}\nvar empty_null = {\n includeSymbols: false,\n immutable: false\n};\nfunction walk(root, cb, options = empty_null) {\n const path = [];\n const parents = [];\n let alive = true;\n const iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;\n const immutable = !!options.immutable;\n return function walker(node_) {\n const node = immutable ? copy(node_, options) : node_;\n const modifiers = {};\n let keep_going = true;\n const state = {\n node,\n node_,\n path: [].concat(path),\n parent: parents[parents.length - 1],\n parents,\n key: path[path.length - 1],\n isRoot: path.length === 0,\n level: path.length,\n circular: void 0,\n isLeaf: false,\n notLeaf: true,\n notRoot: true,\n isFirst: false,\n isLast: false,\n update: function(x, stopHere = false) {\n if (!state.isRoot) {\n state.parent.node[state.key] = x;\n }\n state.node = x;\n if (stopHere) {\n keep_going = false;\n }\n },\n delete: function(stopHere) {\n delete state.parent.node[state.key];\n if (stopHere) {\n keep_going = false;\n }\n },\n remove: function(stopHere) {\n if (is_array(state.parent.node)) {\n state.parent.node.splice(state.key, 1);\n } else {\n delete state.parent.node[state.key];\n }\n if (stopHere) {\n keep_going = false;\n }\n },\n keys: null,\n before: function(f) {\n modifiers.before = f;\n },\n after: function(f) {\n modifiers.after = f;\n },\n pre: function(f) {\n modifiers.pre = f;\n },\n post: function(f) {\n modifiers.post = f;\n },\n stop: function() {\n alive = false;\n },\n block: function() {\n keep_going = false;\n }\n };\n if (!alive) {\n return state;\n }\n function update_state() {\n if (typeof state.node === \"object\" && state.node !== null) {\n if (!state.keys || state.node_ !== state.node) {\n state.keys = iterator_function(state.node);\n }\n state.isLeaf = state.keys.length === 0;\n for (let i = 0; i < parents.length; i++) {\n if (parents[i].node_ === node_) {\n state.circular = parents[i];\n break;\n }\n }\n } else {\n state.isLeaf = true;\n state.keys = null;\n }\n state.notLeaf = !state.isLeaf;\n state.notRoot = !state.isRoot;\n }\n update_state();\n const ret = cb.call(state, state.node);\n if (ret !== void 0 && state.update) {\n state.update(ret);\n }\n if (modifiers.before) {\n modifiers.before.call(state, state.node);\n }\n if (!keep_going) {\n return state;\n }\n if (typeof state.node === \"object\" && state.node !== null && !state.circular) {\n parents.push(state);\n update_state();\n for (const [index, key] of Object.entries(state.keys ?? [])) {\n path.push(key);\n if (modifiers.pre) {\n modifiers.pre.call(state, state.node[key], key);\n }\n const child = walker(state.node[key]);\n if (immutable && has_own_property.call(state.node, key) && !is_writable(state.node, key)) {\n state.node[key] = child.node;\n }\n child.isLast = state.keys?.length ? +index === state.keys.length - 1 : false;\n child.isFirst = +index === 0;\n if (modifiers.post) {\n modifiers.post.call(state, child);\n }\n path.pop();\n }\n parents.pop();\n }\n if (modifiers.after) {\n modifiers.after.call(state, state.node);\n }\n return state;\n }(root).node;\n}\nvar Traverse = class {\n // ! Have to keep these public as legacy mode requires them\n #value;\n #options;\n constructor(obj, options = empty_null) {\n this.#value = obj;\n this.#options = options;\n }\n /**\n * Get the element at the array `path`.\n */\n get(paths) {\n let node = this.#value;\n for (let i = 0; node && i < paths.length; i++) {\n const key = paths[i];\n if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n return void 0;\n }\n node = node[key];\n }\n return node;\n }\n /**\n * Return whether the element at the array `path` exists.\n */\n has(paths) {\n let node = this.#value;\n for (let i = 0; node && i < paths.length; i++) {\n const key = paths[i];\n if (!has_own_property.call(node, key) || !this.#options.includeSymbols && typeof key === \"symbol\") {\n return false;\n }\n node = node[key];\n }\n return true;\n }\n /**\n * Set the element at the array `path` to `value`.\n */\n set(path, value) {\n let node = this.#value;\n let i = 0;\n for (i = 0; i < path.length - 1; i++) {\n const key = path[i];\n if (!has_own_property.call(node, key)) {\n node[key] = {};\n }\n node = node[key];\n }\n node[path[i]] = value;\n return value;\n }\n /**\n * Execute `fn` for each node in the object and return a new object with the results of the walk. To update nodes in the result use `this.update(value)`.\n */\n map(cb) {\n return walk(this.#value, cb, {\n immutable: true,\n includeSymbols: !!this.#options.includeSymbols\n });\n }\n /**\n * Execute `fn` for each node in the object but unlike `.map()`, when `this.update()` is called it updates the object in-place.\n */\n forEach(cb) {\n this.#value = walk(this.#value, cb, this.#options);\n return this.#value;\n }\n /**\n * For each node in the object, perform a [left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function)) with the return value of `fn(acc, node)`.\n *\n * If `init` isn't specified, `init` is set to the root object for the first step and the root element is skipped.\n */\n reduce(cb, init) {\n const skip = arguments.length === 1;\n let acc = skip ? this.#value : init;\n this.forEach(function(x) {\n if (!this.isRoot || !skip) {\n acc = cb.call(this, acc, x);\n }\n });\n return acc;\n }\n /**\n * Return an `Array` of every possible non-cyclic path in the object.\n * Paths are `Array`s of string keys.\n */\n paths() {\n const acc = [];\n this.forEach(function() {\n acc.push(this.path);\n });\n return acc;\n }\n /**\n * Return an `Array` of every node in the object.\n */\n nodes() {\n const acc = [];\n this.forEach(function() {\n acc.push(this.node);\n });\n return acc;\n }\n /**\n * Create a deep clone of the object.\n */\n clone() {\n const parents = [];\n const nodes = [];\n const options = this.#options;\n if (is_typed_array(this.#value)) {\n return this.#value.slice();\n }\n return function clone(src) {\n for (let i = 0; i < parents.length; i++) {\n if (parents[i] === src) {\n return nodes[i];\n }\n }\n if (typeof src === \"object\" && src !== null) {\n const dst = copy(src, options);\n parents.push(src);\n nodes.push(dst);\n const iteratorFunction = options.includeSymbols ? own_enumerable_keys : Object.keys;\n for (const key of iteratorFunction(src)) {\n dst[key] = clone(src[key]);\n }\n parents.pop();\n nodes.pop();\n return dst;\n }\n return src;\n }(this.#value);\n }\n};\nvar traverse = (obj, options) => {\n return new Traverse(obj, options);\n};\ntraverse.get = (obj, paths, options) => {\n return new Traverse(obj, options).get(paths);\n};\ntraverse.set = (obj, path, value, options) => {\n return new Traverse(obj, options).set(path, value);\n};\ntraverse.has = (obj, paths, options) => {\n return new Traverse(obj, options).has(paths);\n};\ntraverse.map = (obj, cb, options) => {\n return new Traverse(obj, options).map(cb);\n};\ntraverse.forEach = (obj, cb, options) => {\n return new Traverse(obj, options).forEach(cb);\n};\ntraverse.reduce = (obj, cb, init, options) => {\n return new Traverse(obj, options).reduce(cb, init);\n};\ntraverse.paths = (obj, options) => {\n return new Traverse(obj, options).paths();\n};\ntraverse.nodes = (obj, options) => {\n return new Traverse(obj, options).nodes();\n};\ntraverse.clone = (obj, options) => {\n return new Traverse(obj, options).clone();\n};\nvar src_default = traverse;\nexport {\n Traverse,\n src_default as default\n};\n", "function formatLabel(\n pEvent?: string,\n pCond?: string,\n pActions?: string,\n): string {\n let lReturnValue = \"\";\n\n if (pEvent) {\n lReturnValue += pEvent;\n }\n if (pCond) {\n lReturnValue += ` [${pCond}]`;\n }\n if (pActions) {\n lReturnValue += `/ ${pActions}`;\n }\n return lReturnValue.trim();\n}\n\nexport default {\n formatLabel,\n};\n", "export function castArray(pAThing: unknown): Array {\n return Array.isArray(pAThing) ? pAThing : [pAThing];\n}\n", "import { castArray } from \"./utl.mjs\";\nimport type { INormalizedSCXMLMachine, ISCXMLInitialState } from \"./scxml.js\";\n\nfunction normalizeInitialFromObject(\n pInitialObject: Partial,\n pId: string,\n): ISCXMLInitialState {\n const lReturnValue = {\n // ensure the 'initial' state has a unique name\n id: pId ? `${pId}.initial` : \"initial\",\n };\n\n if (pInitialObject.transition) {\n Object.assign(lReturnValue, {\n transition: [pInitialObject.transition],\n });\n }\n\n return lReturnValue;\n}\n\nfunction normalizeInitialFromString(pString: string): ISCXMLInitialState {\n return {\n id: \"initial\",\n transition: [\n {\n target: pString,\n },\n ],\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalizeInitial(pMachine: any): ISCXMLInitialState[] {\n const lReturnValue = [];\n\n if (pMachine.initial) {\n if (typeof pMachine.initial === \"string\") {\n lReturnValue.push(normalizeInitialFromString(pMachine.initial));\n } else {\n lReturnValue.push(\n normalizeInitialFromObject(pMachine.initial, pMachine.id),\n );\n }\n }\n return lReturnValue;\n}\n\n/**\n * Massages SCXML-as-json to be uniform:\n *\n * @param pMachine SCXML-as-json state machine\n * @returns Still an SCXML-as-json state machine,\n * but more consistent and easier to use\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nexport function normalizeMachine(pMachine: any): INormalizedSCXMLMachine {\n return {\n ...pMachine,\n initial: normalizeInitial(pMachine),\n state: castArray(pMachine?.state ?? []),\n parallel: castArray(pMachine?.parallel ?? []),\n history: castArray(pMachine?.history ?? []),\n final: castArray(pMachine?.final ?? []),\n };\n}\n", "export default {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n title: \"state-machine-cat abstract syntax tree schema\",\n $ref: \"#/definitions/StateMachineType\",\n $id: \"org.js.state-machine-cat/v7.4.0\",\n definitions: {\n StateType: {\n type: \"string\",\n enum: [\n \"regular\",\n \"initial\",\n \"terminate\",\n \"final\",\n \"parallel\",\n \"history\",\n \"deephistory\",\n \"choice\",\n \"forkjoin\",\n \"fork\",\n \"join\",\n \"junction\",\n ],\n },\n TransitionType: {\n type: \"string\",\n enum: [\"internal\", \"external\"],\n },\n NoteType: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n ActionTypeType: {\n type: \"string\",\n enum: [\"entry\", \"activity\", \"exit\"],\n },\n ActionType: {\n type: \"object\",\n required: [\"type\", \"body\"],\n additionalProperties: false,\n properties: {\n type: { $ref: \"#/definitions/ActionTypeType\" },\n body: { type: \"string\" },\n },\n },\n ClassType: {\n type: \"string\",\n pattern: \"^[a-zA-Z0-9_\\\\- ]*$\",\n },\n StateMachineType: {\n type: \"object\",\n additionalProperties: false,\n required: [\"states\"],\n properties: {\n states: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"name\", \"type\"],\n additionalProperties: false,\n properties: {\n name: {\n description:\n \"The name and identifier of the state. Unique within the root state machine.\",\n type: \"string\",\n },\n type: {\n description:\n \"What kind of state (or pseudo state) this state is. E.g. 'regular' for normal states or 'initial', 'final', 'choice' etc for pseudo states. Most UML (pseudo-) states are supported.\",\n $ref: \"#/definitions/StateType\",\n },\n label: {\n description:\n \"The display label of the state. If it's not present, most renderers will use the states' name in stead.\",\n type: \"string\",\n },\n color: {\n description:\n 'Color to use for rendering the state. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n type: \"string\",\n },\n class: {\n description:\n \"Class name to give the state in dot and svg output.\",\n $ref: \"#/definitions/ClassType\",\n },\n active: {\n description:\n \"If true the state is considered to be active and rendered as such.\",\n type: \"boolean\",\n },\n typeExplicitlySet: {\n description:\n \"The default parser derives the `type` from the `name` with inband signaling. The user can override that behavior by explicitly setting the `type`. This attribute is there to express that (and make sure that on next parses & processing it doesn't get accidentily re-derived from the name again).\",\n type: \"boolean\",\n },\n isComposite: {\n description:\n \"convenience, derived attribute - set to true if there's a state machine inside the state; false in all other cases. For internal use - @deprecated\",\n type: \"boolean\",\n },\n actions: {\n type: \"array\",\n description:\n \"A series of actions and their types. The type describe when the action takes place (on entry, exit, or otherwise ('activity'))\",\n items: { $ref: \"#/definitions/ActionType\" },\n },\n note: {\n description:\n \"Comments related to this state. Some renderers will use the note attribute to render a note (i.e. as a post-it) attached to the state.\",\n $ref: \"#/definitions/NoteType\",\n },\n statemachine: {\n description: \"state machine nested within the state.\",\n $ref: \"#/definitions/StateMachineType\",\n },\n },\n },\n },\n transitions: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"from\", \"to\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"number\",\n },\n from: {\n description:\n \"The name of the state this transition transitions from\",\n type: \"string\",\n },\n to: {\n description:\n \"The name of the state this transition transitions to\",\n type: \"string\",\n },\n label: {\n description:\n \"A display label to represent this transition. Parsers can parse this label into events conditions and actions.\",\n type: \"string\",\n },\n event: {\n description: \"Event triggering the transition\",\n type: \"string\",\n },\n cond: {\n description: \"Condition for the transition to occur.\",\n type: \"string\",\n },\n action: {\n description: \"Action to execute when the transition occurs.\",\n type: \"string\",\n },\n note: {\n description: \"Comments related to this transition\",\n $ref: \"#/definitions/NoteType\",\n },\n color: {\n description:\n 'Color to use for rendering the transition. Accepts all css color names (\"blue\") and hex notation - with (\"#0000FF77\") or without (\"#0000FF\") transparency.',\n type: \"string\",\n },\n width: {\n description:\n \"The line width to use for rendering the transition\",\n type: \"number\",\n minimum: 0,\n maximum: 30,\n },\n class: {\n description:\n \"Class name to give the state in dot and svg output.\",\n $ref: \"#/definitions/ClassType\",\n },\n type: {\n description:\n \"Whether the transition is external (default) or internal. See https://www.w3.org/TR/scxml/#transition for details.\",\n $ref: \"#/definitions/TransitionType\",\n },\n },\n },\n },\n },\n },\n },\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n IStateMachine,\n ITransition,\n StateType,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../state-machine-model.mjs\";\nimport { Counter } from \"../counter.mjs\";\nimport utl from \"./utl.mjs\";\n\ntype ITransitionMap = {\n [stateName: string]: ITransition[];\n};\n\nfunction fuseTransitionAttribute(\n pIncomingThing: string | undefined,\n pOutgoingThing: string,\n pJoinChar: string,\n): string {\n return pIncomingThing\n ? `${pIncomingThing}${pJoinChar}${pOutgoingThing}`\n : pOutgoingThing;\n}\n\nfunction fuseIncomingToOutgoing(\n pIncomingTransition: ITransition,\n pOutgoingTransition: ITransition,\n pCounter: Counter,\n): ITransition {\n // in:\n // a => ]: event [condition]/ action;\n // ] => b: event_to_b [condition_to_b]/ action to b;\n //\n // out:\n // a => b: event [condition]/ action\\naction to b;\n //\n // events and conditions are illegal on transitions outgoing\n // from forks, so we ignore them\n const lReturnValue = {\n ...pIncomingTransition,\n ...pOutgoingTransition,\n from: pIncomingTransition.from,\n to: pOutgoingTransition.to,\n id: pCounter.next(),\n };\n\n if (pOutgoingTransition.action) {\n lReturnValue.action = fuseTransitionAttribute(\n pIncomingTransition.action,\n pOutgoingTransition.action,\n \"\\n\",\n );\n }\n if (lReturnValue.event || lReturnValue.cond || lReturnValue.action) {\n lReturnValue.label = utl.formatLabel(\n lReturnValue.event,\n lReturnValue.cond,\n lReturnValue.action,\n );\n }\n\n return lReturnValue;\n}\n\nfunction fuseTransitions(\n pTransitions: ITransition[],\n pPseudoStateNames: string[],\n pOutgoingTransitionMap: ITransitionMap,\n pCounter: Counter,\n): ITransition[] {\n return pTransitions.reduce(\n (pAll: ITransition[], pTransition: ITransition) => {\n pPseudoStateNames.forEach((pStateName, pIndex) => {\n if (\n pStateName === pTransition.to &&\n pOutgoingTransitionMap[pStateName]\n ) {\n pAll = pAll.concat(\n pOutgoingTransitionMap[pStateName].map((pOutgoingTransition) =>\n fuseIncomingToOutgoing(\n pTransition,\n pOutgoingTransition,\n pCounter,\n ),\n ),\n );\n } else {\n pAll = pIndex === 0 ? pAll.concat(pTransition) : pAll;\n }\n });\n return pAll;\n },\n [],\n );\n}\n\nfunction deSugarPseudoStates(\n pMachine: IStateMachine,\n pPseudoStateNames: string[],\n pOutgoingTransitionMap: ITransitionMap,\n pCounter: Counter,\n): IStateMachine {\n const lMachine = structuredClone(pMachine);\n\n if (lMachine.transitions && pPseudoStateNames.length > 0) {\n lMachine.transitions = fuseTransitions(\n lMachine.transitions,\n pPseudoStateNames,\n pOutgoingTransitionMap,\n pCounter,\n );\n }\n\n lMachine.states = lMachine.states.map((pState) =>\n pState.statemachine\n ? {\n ...pState,\n statemachine: deSugarPseudoStates(\n pState.statemachine,\n pPseudoStateNames,\n pOutgoingTransitionMap,\n pCounter,\n ),\n }\n : pState,\n );\n\n return lMachine;\n}\n\nfunction removeStatesCascading(\n pMachine: IStateMachine,\n pStateNames: string[],\n): IStateMachine {\n const lMachine = structuredClone(pMachine);\n\n if (lMachine.transitions) {\n lMachine.transitions = lMachine.transitions.filter(\n (pTransition) =>\n !pStateNames.some(\n (pJunctionStateName) =>\n pJunctionStateName === pTransition.from ||\n pJunctionStateName === pTransition.to,\n ),\n );\n }\n\n lMachine.states = lMachine.states\n .filter((pState) => !pStateNames.includes(pState.name))\n .map((pState) =>\n pState.statemachine\n ? {\n ...pState,\n statemachine: removeStatesCascading(\n pState.statemachine,\n pStateNames,\n ),\n }\n : pState,\n );\n return lMachine;\n}\n\n/**\n * Takes a state machine and replaces all forks with transitions from its\n * respective inputs and outputs\n *\n * e.g.\n * ```smcat\n * a => ];\n * b => ];\n * ] => c;\n * ] => d;\n * ```\n *\n * will become\n * ```smcat\n * a => c;\n * a => d;\n * b => c;\n * b => d;\n * ```\n */\nexport default (\n pMachine: IStateMachine,\n pDesugarableStates: StateType[] = [\"fork\", \"junction\", \"choice\"],\n): IStateMachine => {\n const lModel = new StateMachineModel(pMachine);\n\n const lPseudoStateNames = lModel\n .findStatesByTypes(pDesugarableStates)\n .map(({ name }) => name);\n\n const lOutgoingTransitionMap: ITransitionMap = lPseudoStateNames.reduce(\n (pAll, pStateName) => {\n pAll[pStateName] = lModel.findTransitionsByFrom(pStateName);\n return pAll;\n },\n {},\n );\n const lMaximumTransitionId = lModel.getMaximumTransitionId();\n\n const lMachine = deSugarPseudoStates(\n pMachine,\n lPseudoStateNames,\n lOutgoingTransitionMap,\n new Counter(lMaximumTransitionId),\n );\n\n return removeStatesCascading(lMachine, lPseudoStateNames);\n};\n", "import type {\n IActionType,\n IState,\n IStateMachine,\n IRenderOptions,\n ITransition,\n} from \"../../types/state-machine-cat.mjs\";\n\nconst NAME_QUOTABLE = /[;,{[ ]/;\nconst ACTIONS_QUOTABLE = /[;,{}]/;\nconst LABEL_QUOTABLE = /[;{]/;\n\nconst RENDERABLE_STATE_ATTRIBUTES = [\n \"label\",\n \"type\",\n \"color\",\n \"active\",\n \"class\",\n];\n\nconst RENDERABLE_TRANSITION_ATTRIBUTES = [\"type\", \"color\", \"class\"];\n\nfunction quoteIfNecessary(pRegExp: RegExp, pString: string): string {\n return pRegExp.test(pString) ? `\"${pString}\"` : pString;\n}\n\nfunction stateHasExtendedAttributes(pState: IState): boolean {\n return (\n Object.hasOwn(pState, \"label\") ||\n Object.hasOwn(pState, \"typeExplicitlySet\") ||\n Object.hasOwn(pState, \"color\") ||\n Object.hasOwn(pState, \"active\") ||\n Object.hasOwn(pState, \"class\")\n );\n}\n\nfunction note(pNote: string[], pIndent: string = \"\"): string {\n return pNote.map((pNoteLine) => `${pIndent}# ${pNoteLine}`).join(\"\\n\");\n}\n\nfunction extendedAttribute(pKey: string, pValue: string): string {\n if (pKey === \"type\") {\n // looks a lot like the default return, but this guy's without quotes\n return `${pKey}=${pValue}`;\n }\n if (pKey === \"active\") {\n return pValue ? pKey : \"\";\n }\n return `${pKey}=\"${pValue}\"`;\n}\n\nfunction extendedStateAttributes(pState: IState): string {\n return Object.entries(pState)\n .filter(([pKey]) => RENDERABLE_STATE_ATTRIBUTES.includes(pKey))\n .filter(([pKey]) => pKey !== \"type\" || pState.typeExplicitlySet)\n .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n .join(\" \");\n}\n\nfunction actions(pActions: IActionType[]): string {\n return pActions\n .map(\n (pAction) =>\n `${pAction.type === \"activity\" ? \"\" : `${pAction.type}/ `}${pAction.body}`,\n )\n .map((pAction) => quoteIfNecessary(ACTIONS_QUOTABLE, pAction))\n .join(\"\\n \");\n}\n\nfunction state(pState: IState, pIndent: string = \"\"): string {\n let lReturnValue = pIndent + quoteIfNecessary(NAME_QUOTABLE, pState.name);\n if (pState.note) {\n lReturnValue = `${note(pState.note, pIndent)}\\n${lReturnValue}`;\n }\n if (stateHasExtendedAttributes(pState)) {\n lReturnValue += ` [${extendedStateAttributes(pState)}]`;\n }\n if (pState.actions) {\n lReturnValue += `: ${actions(pState.actions)}`;\n }\n if (pState.statemachine) {\n lReturnValue += \" {\\n\";\n // eslint-disable-next-line no-use-before-define\n lReturnValue += renderSmcat(pState.statemachine, null, `${pIndent} `);\n lReturnValue += `${pIndent}}`;\n }\n\n return lReturnValue;\n}\n\nfunction states(pStates: IState[], pIndent: string = \"\"): string {\n return pStates\n .map((pState) => state(pState, pIndent))\n .join(\",\\n\")\n .concat(pStates.length > 0 ? \";\\n\\n\" : \"\");\n}\n\nfunction transitionHasExtendedAttributes(pTransition: ITransition): boolean {\n return Object.entries(pTransition).some(([pKey]) =>\n RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey),\n );\n}\n\nfunction extendedTransitionAttributes(pTransition: ITransition): string {\n return (\n Object.entries(pTransition)\n .filter(([pKey]) => RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey))\n // lazily re-using the extendedStateAttribute function, even though it does\n // a little more than necessary\n .map(([pKey, pValue]) => extendedAttribute(pKey, pValue))\n .join(\" \")\n );\n}\n\nfunction transition(pTransition: ITransition, pIndent: string = \"\"): string {\n let lReturnValue = `${pIndent}${quoteIfNecessary(NAME_QUOTABLE, pTransition.from)} => ${quoteIfNecessary(\n NAME_QUOTABLE,\n pTransition.to,\n )}`;\n if (pTransition.note) {\n lReturnValue = `${note(pTransition.note, pIndent)}\\n${lReturnValue}`;\n }\n if (transitionHasExtendedAttributes(pTransition)) {\n lReturnValue += ` [${extendedTransitionAttributes(pTransition)}]`;\n }\n if (pTransition.label) {\n lReturnValue += `: ${quoteIfNecessary(LABEL_QUOTABLE, pTransition.label)}`;\n }\n return lReturnValue;\n}\n\nfunction transitions(\n pTransitions: ITransition[],\n pIndent: string = \"\",\n): string {\n return pTransitions\n .map((pTransition) => `${transition(pTransition, pIndent)};\\n`)\n .join(\"\");\n}\n\nexport default function renderSmcat(\n pStateMachine: IStateMachine,\n _pOptions: IRenderOptions | null = {},\n pIndent: string = \"\",\n): string {\n return (\n states(pStateMachine.states, pIndent) +\n transitions(pStateMachine.transitions || [], pIndent)\n );\n}\n", "/* eslint-disable max-params */\n/* eslint-disable max-lines */\n/* eslint-disable no-use-before-define */\n/* eslint-disable complexity */\nimport he from \"he\";\nimport type {\n IStateMachine,\n IRenderOptions,\n IState,\n ITransition,\n StateType,\n IActionType,\n} from \"../../../types/state-machine-cat.mjs\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport {\n buildGraphAttributes,\n buildNodeAttributes,\n buildEdgeAttributes,\n} from \"./attributebuilder.mjs\";\nimport {\n escapeLabelString,\n formatActionType,\n getTransitionPorts,\n isCompositeSelf,\n isVertical,\n type IStateNormalized,\n noteToLabel,\n normalizeState,\n stateNote,\n} from \"./utl.mjs\";\n\nfunction initial(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction regularStateActions(pActions: IActionType[], pIndent: string): string {\n return pActions\n .map((pAction) =>\n he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n )\n .map((pActionString, pIndex) => {\n let lReturnValue = `${pActionString}`;\n if (pIndex === 0) {\n lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\n// TODO: regularStateActions and compositeStateActions differ by the 'cellpadding' attribute\n// - would it hurt to add it to the composite, so we can have just one function?\n// - if not - parametrize?\nfunction compositeStateActions(\n pActions: IActionType[],\n pIndent: string,\n): string {\n return pActions\n .map((pAction) =>\n he.escape(`${formatActionType(pAction.type)}${pAction.body}`),\n )\n .map((pActionString, pIndex) => {\n let lReturnValue = `${pActionString}`;\n if (pIndex === 0) {\n lReturnValue = `
${lReturnValue}`;\n }\n return `\\n${pIndent} ${lReturnValue}`;\n })\n .join(\"\");\n}\n\nfunction atomicRegular(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=1 style=rounded\" : \"\";\n // eslint-disable-next-line no-magic-numbers\n const lCellPadding = (pState.actions?.length ?? 0) > 0 ? 2 : 7;\n const lActions = regularStateActions(pState?.actions ?? [], pIndent);\n\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `\n${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n return `${pIndent} \"${pState.name}\" [margin=0 class=\"${pState.class}\" label= <${lLabelTag}\n${pIndent} >${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction compositeRegular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n // eslint-disable-next-line no-nested-ternary\n const lPenWidth = pState.isParallelArea\n ? \"1.0\"\n : pState.active\n ? \"3.0\"\n : \"2.0\";\n const lStyle = pState.isParallelArea ? \"dashed\" : \"rounded\";\n const lActions = compositeStateActions(pState?.actions ?? [], pIndent);\n const lLabel = pState.active ? `${pState.label}` : pState.label;\n const lLabelTag = `${pIndent} \n${pIndent} ${lActions}\n${pIndent}
${lLabel}
`;\n\n const lSelfTransitionHelperPoints = pModel\n .findExternalSelfTransitions(pState.name)\n .map(\n (pTransition) =>\n `${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [shape=point style=invis width=0 height=0 fixedsize=true]\\n`,\n )\n .join(\"\");\n\n return `${lSelfTransitionHelperPoints}${pIndent} subgraph \"cluster_${pState.name}\" {\n${pIndent} class=\"${pState.class}\" label= <\n${lLabelTag}\n${pIndent} > style=${lStyle} penwidth=${lPenWidth}${pState.colorAttribute}${pState.fontColorAttribute}\n${pIndent} \"${pState.name}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n${states(pState?.statemachine?.states ?? [], `${pIndent} `, pOptions, pModel, pRenderedTransitions)}\n${pIndent} }${pState.noteText}`;\n}\n\nfunction regular(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n if (pState.statemachine) {\n return compositeRegular(\n pState,\n pIndent,\n pOptions,\n pModel,\n pRenderedTransitions,\n );\n }\n return atomicRegular(pState, pIndent);\n}\n\nfunction history(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction deepHistory(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle class=\"${pState.class}\" label=\"H*\"${pState.colorAttribute}${pState.fontColorAttribute}${lActiveAttribute}]${pState.noteText}`;\n}\n\nfunction choiceActions(pActions: IActionType[], pActive: boolean): string {\n return pActions\n .map((pAction) => {\n let lReturnValue = he.escape(\n `${formatActionType(pAction.type)}${pAction.body}`,\n );\n if (pActive) {\n lReturnValue = `${lReturnValue}`;\n }\n return lReturnValue;\n })\n .join(\"\\\\n\");\n}\n\nfunction choice(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lActions = choiceActions(\n pState?.actions ?? [],\n pState?.active ?? false,\n );\n const lLabelTag = lActions;\n const lDiamond = `${pIndent} \"${pState.name}\" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 label=\" \" class=\"${pState.class}\"${pState.colorAttribute}${lActiveAttribute}]`;\n const lLabelConstruct = `${pIndent} \"${pState.name}\" -> \"${pState.name}\" [color=\"#FFFFFF01\" fontcolor=\"${pState.color}\" class=\"${pState.class}\" label=<${lLabelTag}>]`;\n\n return `${lDiamond}\\n${lLabelConstruct}${pState.noteText}`;\n}\n\nfunction forkjoin(\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n): string {\n const lActiveAttribute = pState.active ? \"penwidth=3.0 \" : \"\";\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n const lSizingExtras = isVertical(lDirection) ? \" height=0.1\" : \" width=0.1\";\n\n return `${pIndent} \"${pState.name}\" [shape=rect fixedsize=true label=\" \" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}${lSizingExtras}]${pState.noteText}`;\n}\n\nfunction junction(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" penwidth=3.0\" : \"\";\n const lNote = stateNote(pState, pIndent);\n\n return `${pIndent} \"${pState.name}\" [shape=circle fixedsize=true height=0.15 label=\"\" style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\"${lActiveAttribute}]${lNote}`;\n}\n\nfunction terminate(pState: IStateNormalized, pIndent: string): string {\n const lLabelTag = `\n${pIndent} \n${pIndent} \n${pIndent} \n${pIndent}
X
${pState.label}
`;\n\n return `${pIndent} \"${pState.name}\" [label= <${lLabelTag}\n${pIndent} > class=\"${pState.class}\"]${pState.noteText}`;\n}\n\nfunction final(pState: IStateNormalized, pIndent: string): string {\n const lActiveAttribute = pState.active ? \" peripheries=2 penwidth=3.0\" : \"\";\n\n return `${pIndent} \"${pState.name}\" [shape=circle style=filled class=\"${pState.class}\" color=\"${pState.color}\" fillcolor=\"${pState.color}\" fixedsize=true height=0.15 peripheries=2 label=\"\"${lActiveAttribute}]${pState.noteText}`;\n}\n// @ts-expect-error - TS is yapping about something that just works :shrug:\nconst STATE_TYPE2FUNCTION = new Map<\n StateType,\n (\n pState: IStateNormalized,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel?: StateMachineModel,\n ) => string\n>([\n [\"initial\", initial],\n [\"regular\", regular],\n [\"history\", history],\n [\"deephistory\", deepHistory],\n [\"choice\", choice],\n [\"fork\", forkjoin],\n [\"forkjoin\", forkjoin],\n [\"join\", forkjoin],\n [\"junction\", junction],\n [\"terminate\", terminate],\n [\"final\", final],\n // parallel\n]);\n\nfunction state(\n pState: IState,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n const lState = normalizeState(pState, pOptions, pIndent);\n const lCandidateTransitions = pModel.findTransitionsToSiblings(\n pState.name,\n pRenderedTransitions,\n );\n lCandidateTransitions.forEach((pTransition) => {\n pRenderedTransitions.add(pTransition.id);\n });\n const lTransitions = transitions(\n lCandidateTransitions,\n pIndent,\n pOptions,\n pModel,\n );\n\n return (\n // eslint-disable-next-line prefer-template\n (STATE_TYPE2FUNCTION.get(pState.type) ?? regular)(\n lState,\n pIndent,\n pOptions,\n pModel,\n pRenderedTransitions,\n ) +\n lTransitions +\n \"\\n\"\n );\n}\n\nfunction states(\n pStates: IState[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pRenderedTransitions: Set,\n): string {\n return pStates\n .map((pState) =>\n state(pState, pIndent, pOptions, pModel, pRenderedTransitions),\n )\n .join(\"\");\n}\n\n// eslint-disable-next-line max-statements, max-lines-per-function\nfunction transition(\n pTransition: ITransition,\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n // TODO: should also be he.escape'd?\n const lLabel = `${escapeLabelString(pTransition.label ?? \" \")}`;\n // using a default color (`pTransition.color ?? \"black\"`) makes the output\n // look more consistent and easier to check, but it also blocks the 'inheritance'\n //\n const lColorAttribute = pTransition.color\n ? ` color=\"${pTransition.color}\"`\n : \"\";\n const lFontColorAttribute = pTransition.color\n ? ` fontcolor=\"${pTransition.color}\"`\n : \"\";\n const lPenWidth = pTransition.width ? ` penwidth=${pTransition.width}` : \"\";\n const lClass = pTransition.class\n ? // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type + \" \" : \" \"}${pTransition.class}`\n : // eslint-disable-next-line prefer-template\n `transition${pTransition.type ? \" \" + pTransition.type : \"\"}`;\n // for transitions to/ from composite states put the _cluster_ as the head\n // instead of the state itself\n const lTail = pModel.findStateByName(pTransition.from)?.statemachine\n ? ` ltail=\"cluster_${pTransition.from}\"`\n : \"\";\n const lHead = pModel.findStateByName(pTransition.to)?.statemachine\n ? ` lhead=\"cluster_${pTransition.to}\"`\n : \"\";\n const lTransitionName = `tr_${pTransition.from}_${pTransition.to}_${pTransition.id}`;\n\n if (isCompositeSelf(pModel, pTransition)) {\n // for self-transitions to/ from composite states ensure the transition leaves\n // and enters to/ from the right side of the state\n const { lTailPorts, lHeadPorts } = getTransitionPorts(\n pOptions,\n pModel,\n pTransition,\n );\n // as for composite self-transitions the transition is already split, we just\n // have to connect any note to that same split point\n let lNoteAndLine = \"\";\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lLineToNote = `\\n${pIndent} \"${lNoteName}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n lNoteAndLine = lLineToNote + lNote;\n }\n\n // the invisible 'self' node is declared with the state (so not here). If we\n // do it later than in the state the transition is guaranteed to look ugly.\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" [label=\"${lLabel}\" arrowhead=none class=\"${lClass}\"${lTailPorts}${lTail}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}\" -> \"${pTransition.to}\" [class=\"${lClass}\"${lHead}${lHeadPorts}${lColorAttribute}${lPenWidth}]`;\n return lTransitionFrom + lTransitionTo + lNoteAndLine;\n }\n\n // to attach a note, split the transition in half, reconnect them via an\n // in-between point and connect the note to that in-between point as well\n if (pTransition.note) {\n const lNoteName = `note_${lTransitionName}`;\n const lNoteNodeName = `i_${lNoteName}`;\n const lNoteNode = `\\n${pIndent} \"${lNoteNodeName}\" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]`;\n const lTransitionFrom = `\\n${pIndent} \"${pTransition.from}\" -> \"${lNoteNodeName}\" [arrowhead=none${lTail}${lColorAttribute}${lPenWidth}]`;\n const lTransitionTo = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${pTransition.to}\" [label=\"${lLabel}\"${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n const lLineToNote = `\\n${pIndent} \"${lNoteNodeName}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none weight=0]`;\n const lNote = `\\n${pIndent} \"${lNoteName}\" [label=\"${noteToLabel(pTransition.note)}\" shape=note fontsize=10 color=black fontcolor=black fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n return lNoteNode + lTransitionFrom + lTransitionTo + lLineToNote + lNote;\n }\n\n return `\\n${pIndent} \"${pTransition.from}\" -> \"${pTransition.to}\" [label=\"${lLabel}\" class=\"${lClass}\"${lTail}${lHead}${lColorAttribute}${lFontColorAttribute}${lPenWidth}]`;\n}\n\nfunction transitions(\n pTransitions: ITransition[],\n pIndent: string,\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n): string {\n return pTransitions\n .map((pTransition) => transition(pTransition, pIndent, pOptions, pModel))\n .join(\"\");\n}\n\n// eslint-disable-next-line max-lines-per-function\nexport default function renderDot(\n pStateMachine: IStateMachine,\n pOptions: IRenderOptions = {},\n pIndent: string = \"\",\n): string {\n const lGraphAttributes = buildGraphAttributes(\n getOptionValue(pOptions, \"engine\") as string,\n getOptionValue(pOptions, \"direction\") as string,\n pOptions?.dotGraphAttrs || [],\n );\n const lNodeAttributes = buildNodeAttributes(pOptions.dotNodeAttrs || []);\n const lEdgeAttributes = buildEdgeAttributes(pOptions.dotEdgeAttrs || []);\n const lModel = new StateMachineModel(pStateMachine);\n const lRenderedTransitions: Set = new Set();\n const lStates = states(\n pStateMachine.states,\n pIndent,\n pOptions,\n lModel,\n lRenderedTransitions,\n );\n // ideally, we render transitions together with the states. However, in graphviz\n // that only renders as we want to if we if the transition is _within_ the state.\n // In this guy 'a' is rendered within cluster_b, though\n // digraph {\n // a\n // subgraph \"cluster_b\" {\n // label=b\n // ba\n // ba -> a\n // }\n // }\n // This is documented and defined behavior in graphviz, so we will have to\n // work around that...\n // - one way is to render all transitions separately in one go which (accidentally)\n // did in the previous render engine. That is guaranteed to work, but\n // some transitions might look ugly (i.e. when attaching a note the note\n // and the intermediate node will be in the outer state)\n // - Another way would be to render the transitions in the most outer state of\n // the (to, from). This is a nice idea, but it's not guaranteed to work\n // because how the graphviz engine works. If there's a transition defined in\n // state A to substate BB of state B, it will only show up if BB is already\n // declared in the graph. If it's not, the transition will be ignored.\n // - The compromise we landed with is to\n // 1. Render transitions within a composite state if _both_ ends of the transition\n // are in that state (see the state function above). That means at least\n // comments on transitions for these will look a bit nicer.\n // 2. Render all other transitions separately (below)\n const lRemainingTransitions = transitions(\n lModel.flattenedTransitions.filter(\n (pTransition) => !lRenderedTransitions.has(pTransition.id),\n ),\n pIndent,\n pOptions,\n lModel,\n );\n\n return `digraph \"state transitions\" {\n ${lGraphAttributes}\n node [${lNodeAttributes}]\n edge [${lEdgeAttributes}]\n\n${lStates}${lRemainingTransitions}\n}\n`;\n}\n", "/* eslint-disable security/detect-object-injection */\ninterface INameValuePair {\n name: string;\n value: string | number;\n}\nconst GENERIC_GRAPH_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: '\"Helvetica\"' },\n { name: \"fontsize\", value: \"12\" },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst GRAPH_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n dot: [\n { name: \"splines\", value: \"true\" },\n { name: \"ordering\", value: \"out\" },\n { name: \"compound\", value: \"true\" },\n { name: \"overlap\", value: \"scale\" },\n { name: \"nodesep\", value: \"0.3\" },\n { name: \"ranksep\", value: \"0.1\" },\n ],\n fdp: [{ name: \"K\", value: \"0.9\" }],\n osage: [{ name: \"pack\", value: \"42\" }],\n neato: [{ name: \"epsilon\", value: \"0.9\" }],\n};\n\nconst DIRECTION_ATTRIBUTES: { [engine: string]: INameValuePair[] } = {\n \"bottom-top\": [{ name: \"rankdir\", value: \"BT\" }],\n \"left-right\": [{ name: \"rankdir\", value: \"LR\" }],\n \"right-left\": [{ name: \"rankdir\", value: \"RL\" }],\n};\n\nconst NODE_ATTRIBUTES: INameValuePair[] = [\n { name: \"shape\", value: \"plaintext\" },\n { name: \"style\", value: \"filled\" },\n { name: \"fillcolor\", value: '\"#FFFFFF01\"' },\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 12 },\n { name: \"penwidth\", value: \"2.0\" },\n];\n\nconst EDGE_ATTRIBUTES: INameValuePair[] = [\n { name: \"fontname\", value: \"Helvetica\" },\n { name: \"fontsize\", value: 10 },\n];\n\nfunction toNameValueString(pAttribute: INameValuePair): string {\n return `${pAttribute.name}=${pAttribute.value}`;\n}\n\nexport function buildGraphAttributes(\n pEngine: string,\n pDirection: string,\n pDotGraphAttributes?: INameValuePair[],\n): string {\n return GENERIC_GRAPH_ATTRIBUTES.concat(GRAPH_ATTRIBUTES[pEngine] || [])\n .concat(DIRECTION_ATTRIBUTES[pDirection] || [])\n .concat(pDotGraphAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildNodeAttributes(\n pDotNodeAttributes?: INameValuePair[],\n): string {\n return NODE_ATTRIBUTES.concat(pDotNodeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport function buildEdgeAttributes(\n pDotEdgeAttributes?: INameValuePair[],\n): string {\n return EDGE_ATTRIBUTES.concat(pDotEdgeAttributes || [])\n .map(toNameValueString)\n .join(\" \");\n}\n\nexport default {\n buildGraphAttributes,\n buildNodeAttributes,\n buildEdgeAttributes,\n};\n", "import he from \"he\";\nimport { getOptionValue } from \"../../options.mjs\";\nimport type {\n dotAttributesType,\n IRenderOptions,\n IState,\n ITransition,\n} from \"../../../types/state-machine-cat.mjs\";\nimport type StateMachineModel from \"../../state-machine-model.mjs\";\n\n// eslint-disable-next-line complexity\nfunction getStateColor(\n pState: IState,\n pNodeAttributes?: dotAttributesType,\n): string {\n const lNodeColor = (pNodeAttributes || []).find(\n (pAttribute) => pAttribute.name === \"color\",\n )?.value;\n\n if (\n lNodeColor &&\n !pState.color &&\n [\n \"initial\",\n \"fork\",\n \"join\",\n \"junction\",\n \"forkjoin\",\n \"terminate\",\n \"final\",\n ].includes(pState.type)\n ) {\n return lNodeColor;\n }\n return pState.color ?? \"black\";\n}\n\nexport function escapeString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \"\\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\"\\\\l\");\n}\n\nexport function escapeLabelString(pString: string): string {\n return pString\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\n\\s*/g, \" \\\\l\")\n .replace(/\"/g, '\\\\\"')\n .concat(\" \\\\l\");\n}\n\n// TODO integrate this into the normalization\n\nexport function isVertical(pDirection: string): boolean {\n const lDirection = pDirection || \"top-down\";\n\n return lDirection === \"top-down\" || lDirection === \"bottom-top\";\n}\n\nexport function isCompositeSelf(\n pStateMachineModel: StateMachineModel,\n pTransition: ITransition,\n): boolean {\n return (\n pTransition.from === pTransition.to &&\n (pStateMachineModel.findStateByName(pTransition.from)?.statemachine ??\n false) &&\n pTransition.type !== \"internal\"\n );\n}\n\nexport interface IStateNormalized extends IState {\n colorAttribute: string;\n fontColorAttribute: string;\n class: string;\n label: string;\n noteText: string;\n isParallelArea: boolean;\n}\n\nexport function noteToLabel(pNote: string[]): string {\n return pNote.map(escapeString).join(\"\");\n}\n\nexport function stateNote(pState: IState, pIndent: string): string {\n if (pState.note) {\n const lNoteName = `note_${pState.name}`;\n let lReturnValue = `\\n${pIndent} \"${lNoteName}\" [color=black fontcolor=black label=\"${noteToLabel(pState.note)}\" shape=note fontsize=10 fillcolor=\"#ffffcc\" penwidth=1.0]`;\n\n lReturnValue += `\\n${pIndent} \"${pState.name}\" -> \"${lNoteName}\" [style=dashed arrowtail=none arrowhead=none]`;\n\n return lReturnValue;\n }\n return \"\";\n}\n\n// eslint-disable-next-line complexity\nexport function normalizeState(\n pState: IState & Partial,\n pOptions: IRenderOptions,\n pIndent: string,\n): IStateNormalized {\n const lReturnValue = structuredClone(pState) as IStateNormalized;\n\n // TODO: this is kludgy\n // we use these in regular, composite and history states\n lReturnValue.colorAttribute = pState.color ? ` color=\"${pState.color}\"` : \"\";\n lReturnValue.fontColorAttribute = pState.color\n ? ` fontcolor=\"${pState.color}\"`\n : \"\";\n // we use these in initial, fork, join, junction, forkjoin, terminal and final states\n lReturnValue.color = getStateColor(pState, pOptions.dotNodeAttrs);\n\n lReturnValue.class = pState.class\n ? `state ${pState.type} ${pState.class}`\n : `state ${pState.type}`;\n lReturnValue.label = he.escape(pState.label ?? pState.name);\n lReturnValue.noteText = stateNote(pState, pIndent);\n if (\n !pState.isParallelArea &&\n pState.type === \"parallel\" &&\n (pState.statemachine?.states ?? []).length > 0\n ) {\n // @ts-expect-error as lReturnValue is a clone of pStates statemachine && states\n // are bound to exist on there as well.\n lReturnValue.statemachine.states = pState.statemachine.states.map(\n (pChildState) => ({\n ...pChildState,\n isParallelArea: pChildState.type === \"regular\",\n }),\n );\n }\n\n return lReturnValue;\n}\n\nexport function formatActionType(pString: string): string {\n return pString === \"activity\" ? \"\" : `${pString}/ `;\n}\n\nexport function getTransitionPorts(\n pOptions: IRenderOptions,\n pModel: StateMachineModel,\n pTransition: ITransition,\n) {\n let lTailPorts = ' tailport=\"n\" headport=\"n\"';\n let lHeadPorts = ' tailport=\"n\"';\n const lDirection = getOptionValue(pOptions, \"direction\") as string;\n if (isVertical(lDirection)) {\n lTailPorts = ' tailport=\"e\" headport=\"e\"';\n lHeadPorts = ' tailport=\"w\"';\n } else if (pModel.findStateByName(pTransition.from)?.parent ?? false) {\n lTailPorts = ' tailport=\"n\" headport=\"n\"';\n lHeadPorts = ' tailport=\"s\"';\n }\n return { lTailPorts, lHeadPorts };\n}\n", "var un=ArrayBuffer,$=Uint8Array,$e=Uint16Array,cn=Int16Array;var Ve=Int32Array,cr=function(c,_,l){if($.prototype.slice)return $.prototype.slice.call(c,_,l);(_==null||_<0)&&(_=0),(l==null||l>c.length)&&(l=c.length);var s=new $(l-_);return s.set(c.subarray(_,l)),s},Ue=function(c,_,l,s){if($.prototype.fill)return $.prototype.fill.call(c,_,l,s);for((l==null||l<0)&&(l=0),(s==null||s>c.length)&&(s=c.length);lc.length)&&(s=c.length);l2046MB)\",\"invalid block type\",\"FSE accuracy too high\",\"match distance too far back\",\"unexpected EOF\"],V=function(c,_,l){var s=new Error(_||_n[c]);if(s.code=c,Error.captureStackTrace&&Error.captureStackTrace(s,V),!l)throw s;return s},Hr=function(c,_,l){for(var s=0,d=0;s>>0},dn=function(c,_){var l=c[0]|c[1]<<8|c[2]<<16;if(l==3126568&&c[3]==253){var s=c[4],d=s>>5&1,h=s>>2&1,p=s&3,E=s>>6;s&8&&V(0);var G=6-d,j=p==3?4:p,q=Hr(c,G,j);G+=j;var U=E?1<>3);K=J+(J>>3)*(c[5]&7)}K>2145386496&&V(1);var L=new $((_==1?H||K:_?0:K)+12);return L[0]=1,L[4]=4,L[8]=8,{b:G+U,y:0,l:0,d:q,w:_&&_!=1?_:L.subarray(12),e:K,o:new Ve(L.buffer,0,3),u:H,c:h,m:Math.min(131072,K)}}else if((l>>4|c[3]<<20)==25481893)return ln(c,4)+8;V(0)},Le=function(c){for(var _=0;1<<_<=c;++_);return _-1},He=function(c,_,l){var s=(_<<3)+4,d=(c[_]&15)+5;d>l&&V(3);for(var h=1<0;){var X=Le(p+1),W=s>>3,fe=(1<>(s&7)&fe,m=(1<m&&(C-=Q)),H[++E]=--C,C==-1?(p+=C,T[--q]=E):p-=C,!C)do{var ie=s>>3;G=(c[ie]|c[ie+1]<<8)>>(s&7)&3,s+=2,E+=G}while(G==3)}(E>255||p)&&V(0);for(var B=0,R=(h>>1)+(h>>3)+3,ae=h-1,ne=0;ne<=E;++ne){var Z=H[ne];if(Z<1){K[ne]=-Z;continue}for(j=0;j=q)}}for(B&&V(0),j=0;j>3,{b:d,s:T,n:te,t:J}]},vn=function(c,_){var l=0,s=-1,d=new $(292),h=c[_],p=d.subarray(0,256),E=d.subarray(256,268),G=new $e(d.buffer,268);if(h<128){var j=He(c,_+1,6),q=j[0],U=j[1];_+=h;var H=q<<3,K=c[_];K||V(0);for(var J=0,L=0,T=U.b,te=T,X=(++_<<3)-8+Le(K);X-=T,!(X>3;if(J+=(c[W]|c[W+1]<<8)>>(X&7)&(1<>3,L+=(c[W]|c[W+1]<<8)>>(X&7)&(1<255&&V(0)}else{for(s=h-127;l>4,p[l+1]=fe&15}++_}var C=0;for(l=0;l11&&V(0),C+=m&&1<0;--l){var ne=G[l];Ue(ae,l,ne,G[l-1]=ne+E[l]*(1<E&&U>3,K=(c[H]|c[H+1]<<8|c[H+2]<<16)>>(q&7);G=(G<>2,p=h<<1,E=h+p;je(c.subarray(s,s+=c[0]|c[1]<<8),_.subarray(0,h),l),je(c.subarray(s,s+=c[2]|c[3]<<8),_.subarray(h,p),l),je(c.subarray(s,s+=c[4]|c[5]<<8),_.subarray(p,E),l),je(c.subarray(s),_.subarray(E),l)},Bn=function(c,_,l){var s,d=_.b,h=c[d],p=h>>1&3;_.l=h&1;var E=h>>3|c[d+1]<<5|c[d+2]<<13,G=(d+=3)+E;if(p==1)return d>=c.length?void 0:(_.b=d+1,l?(Ue(l,c[d],_.y,_.y+=E),l):Ue(new $(E),c[d]));if(!(G>c.length)){if(p==0)return _.b=G,l?(l.set(c.subarray(d,G),_.y),_.y+=E,l):cr(c,d,G);if(p==2){var j=c[d],q=j&3,U=j>>2&3,H=j>>4,K=0,J=0;q<2?U&1?H|=c[++d]<<4|(U&2&&c[++d]<<12):H=j>>3:(J=U,U<2?(H|=(c[++d]&63)<<4,K=c[d]>>6|c[++d]<<2):U==2?(H|=c[++d]<<4|(c[++d]&3)<<12,K=c[d]>>2|c[++d]<<6):(H|=c[++d]<<4|(c[++d]&63)<<12,K=c[d]>>6|c[++d]<<2|c[++d]<<10)),++d;var L=l?l.subarray(_.y,_.y+_.m):new $(_.m),T=L.length-H;if(q==0)L.set(c.subarray(d,d+=H),T);else if(q==1)Ue(L,c[d++],T);else{var te=_.h;if(q==2){var X=vn(c,d);K+=d-(d=X[0]),_.h=te=X[1]}else te||V(0);(J?wn:je)(c.subarray(d,d+=K),L.subarray(T),te)}var W=c[d++];if(W){W==255?W=(c[d++]|c[d++]<<8)+32512:W>127&&(W=W-128<<8|c[d++]);var fe=c[d++];fe&3&&V(0);for(var C=[pn,yn,hn],m=2;m>-1;--m){var Q=fe>>(m<<1)+2&3;if(Q==1){var k=new $([0,0,c[d++]]);C[m]={s:k.subarray(2,3),n:k.subarray(0,1),t:new $e(k.buffer,0,1),b:0}}else Q==2?(s=He(c,d,9-(m&1)),d=s[0],C[m]=s[1]):Q==3&&(_.t||V(0),C[m]=_.t[m])}var ie=_.t=C,B=ie[0],R=ie[1],ae=ie[2],ne=c[G-1];ne||V(0);var Z=(G<<3)-8+Le(ne)-ae.b,I=Z>>3,A=0,Ie=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var xe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var Oe=(c[I]|c[I+1]<<8)>>(Z&7)&(1<>3;var qe=1<>>(Z&7)&qe-1);I=(Z-=_r[Te])>>3;var he=mn[Te]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<<_r[Te])-1);I=(Z-=fr[Pe])>>3;var pe=En[Pe]+((c[I]|c[I+1]<<8|c[I+2]<<16)>>(Z&7)&(1<>3,Ie=ae.t[Ie]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,Oe=B.t[Oe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<>3,xe=R.t[xe]+((c[I]|c[I+1]<<8)>>(Z&7)&(1<3)_.o[2]=_.o[1],_.o[1]=_.o[0],_.o[0]=_e-=3;else{var Me=_e-(pe!=0);Me?(_e=Me==3?_.o[0]-1:_.o[Me],Me>1&&(_.o[2]=_.o[1]),_.o[1]=_.o[0],_.o[0]=_e):_e=_.o[0]}for(var m=0;mhe&&(Fe=he);for(var m=0;m{var c=typeof document<\"u\"?document.currentScript?.src:void 0;return function(_={}){var l,s=_,d,h,p=new Promise((e,r)=>{d=e,h=r}),E=!1,G=Object.assign({},s),j=\"./this.program\",q=(e,r)=>{throw r},U=\"\";function H(e){return U+e}var K,J,L=console.log.bind(console),T=console.error.bind(console);Object.assign(s,G),G=null;var te=s.wasmBinary,X,W=!1,fe;function C(e,r){e||pe(r)}var m,Q,k,ie,B,R,ae,ne;function Z(){var e=X.buffer;s.HEAP8=m=new Int8Array(e),s.HEAP16=k=new Int16Array(e),s.HEAPU8=Q=new Uint8Array(e),s.HEAPU16=ie=new Uint16Array(e),s.HEAP32=B=new Int32Array(e),s.HEAPU32=R=new Uint32Array(e),s.HEAPF32=ae=new Float32Array(e),s.HEAPF64=ne=new Float64Array(e)}var I=[],A=[],Ie=[],xe=!1;function Oe(){ke(I)}function Pe(){xe=!0,!s.noFSInit&&!n.initialized&&n.init(),n.ignorePermissions=!1,Ge.init(),ke(A)}function Qe(){ke(Ie)}function Te(e){A.unshift(e)}var me=0,be=null,we=null;function qe(e){return e}function _e(e){me++}function he(e){if(me--,me==0&&(be!==null&&(clearInterval(be),be=null),we)){var r=we;we=null,r()}}function pe(e){e=\"Aborted(\"+e+\")\",T(e),W=!0,e+=\". Build with -sASSERTIONS for more info.\";var r=new WebAssembly.RuntimeError(e);throw h(r),r}var Me=\"data:application/octet-stream;base64,\",Be=e=>e.startsWith(Me),Fe=e=>e.startsWith(\"file://\");function Je(){var e=\"graphvizlib.wasm\";return Be(e)?e:H(e)}var Ne;function dr(e){if(e==Ne&&te)return new Uint8Array(te);if(J)return J(e);throw\"both async and sync fetching of the wasm failed\"}function Vr(e){return te?Promise.resolve().then(()=>dr(e)):K(e).then(r=>new Uint8Array(r),()=>dr(e))}function vr(e,r,t){return Vr(e).then(o=>WebAssembly.instantiate(o,r)).then(t,o=>{T(`failed to asynchronously prepare wasm: ${o}`),pe(o)})}function qr(e,r,t,o){return!e&&typeof WebAssembly.instantiateStreaming==\"function\"&&!Be(r)&&!Fe(r)&&typeof fetch==\"function\"?fetch(r,{credentials:\"same-origin\"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(o,function(u){return T(`wasm streaming compile failed: ${u}`),T(\"falling back to ArrayBuffer instantiation\"),vr(r,t,o)})}):vr(r,t,o)}function Jr(){return{a:Jt}}function Nr(){function e(o,i){return z=o.exports,X=z.B,Z(),Te(z.C),he(\"wasm-instantiate\"),z}_e(\"wasm-instantiate\");function r(o){e(o.instance)}var t=Jr();return Ne??=Je(),qr(te,Ne,t,r).catch(h),{}}var O,N,kr={173064:(e,r)=>{var t=se(e),o=se(r);n.createPath(\"/\",S.dirname(t)),n.writeFile(S.join(\"/\",t),o)}};class Ar{name=\"ExitStatus\";constructor(r){this.message=`Program terminated with exit(${r})`,this.status=r}}var ke=e=>{for(;e.length>0;)e.shift()(s)};class et{constructor(r){this.excPtr=r,this.ptr=r-24}set_type(r){R[this.ptr+4>>2]=r}get_type(){return R[this.ptr+4>>2]}set_destructor(r){R[this.ptr+8>>2]=r}get_destructor(){return R[this.ptr+8>>2]}set_caught(r){r=r?1:0,m[this.ptr+12]=r}get_caught(){return m[this.ptr+12]!=0}set_rethrown(r){r=r?1:0,m[this.ptr+13]=r}get_rethrown(){return m[this.ptr+13]!=0}init(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)}set_adjusted_ptr(r){R[this.ptr+16>>2]=r}get_adjusted_ptr(){return R[this.ptr+16>>2]}}var hr=0,rt=0,tt=(e,r,t)=>{var o=new et(e);throw o.init(r,t),hr=e,rt++,hr},S={isAbs:e=>e.charAt(0)===\"/\",splitPath:e=>{var r=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return r.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,o=e.length-1;o>=0;o--){var i=e[o];i===\".\"?e.splice(o,1):i===\"..\"?(e.splice(o,1),t++):t&&(e.splice(o,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:e=>{var r=S.isAbs(e),t=e.substr(-1)===\"/\";return e=S.normalizeArray(e.split(\"/\").filter(o=>!!o),!r).join(\"/\"),!e&&!r&&(e=\".\"),e&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:e=>{var r=S.splitPath(e),t=r[0],o=r[1];return!t&&!o?\".\":(o&&(o=o.substr(0,o.length-1)),t+o)},basename:e=>{if(e===\"/\")return\"/\";e=S.normalize(e),e=e.replace(/\\/$/,\"\");var r=e.lastIndexOf(\"/\");return r===-1?e:e.substr(r+1)},join:(...e)=>S.normalize(e.join(\"/\")),join2:(e,r)=>S.normalize(e+\"/\"+r)},nt=()=>{if(typeof crypto==\"object\"&&typeof crypto.getRandomValues==\"function\")return e=>crypto.getRandomValues(e);pe(\"initRandomDevice\")},pr=e=>(pr=nt())(e),ge={resolve:(...e)=>{for(var r=\"\",t=!1,o=e.length-1;o>=-1&&!t;o--){var i=o>=0?e[o]:n.cwd();if(typeof i!=\"string\")throw new TypeError(\"Arguments to path.resolve must be strings\");if(!i)return\"\";r=i+\"/\"+r,t=S.isAbs(i)}return r=S.normalizeArray(r.split(\"/\").filter(a=>!!a),!t).join(\"/\"),(t?\"/\":\"\")+r||\".\"},relative:(e,r)=>{e=ge.resolve(e).substr(1),r=ge.resolve(r).substr(1);function t(F){for(var b=0;b=0&&F[Y]===\"\";Y--);return b>Y?[]:F.slice(b,Y-b+1)}for(var o=t(e.split(\"/\")),i=t(r.split(\"/\")),a=Math.min(o.length,i.length),u=a,f=0;f{for(var o=r+t,i=r;e[i]&&!(i>=o);)++i;if(i-r>16&&e.buffer&&yr)return yr.decode(e.subarray(r,i));for(var a=\"\";r>10,56320|F&1023)}}return a},Ae=[],er=e=>{for(var r=0,t=0;t=55296&&o<=57343?(r+=4,++t):r+=3}return r},rr=(e,r,t,o)=>{if(!(o>0))return 0;for(var i=t,a=t+o-1,u=0;u=55296&&f<=57343){var v=e.charCodeAt(++u);f=65536+((f&1023)<<10)|v&1023}if(f<=127){if(t>=a)break;r[t++]=f}else if(f<=2047){if(t+1>=a)break;r[t++]=192|f>>6,r[t++]=128|f&63}else if(f<=65535){if(t+2>=a)break;r[t++]=224|f>>12,r[t++]=128|f>>6&63,r[t++]=128|f&63}else{if(t+3>=a)break;r[t++]=240|f>>18,r[t++]=128|f>>12&63,r[t++]=128|f>>6&63,r[t++]=128|f&63}}return r[t]=0,t-i};function tr(e,r,t){var o=t>0?t:er(e)+1,i=new Array(o),a=rr(e,i,0,i.length);return r&&(i.length=a),i}var ot=()=>{if(!Ae.length){var e=null;if(!e)return null;Ae=tr(e,!0)}return Ae.shift()},Ge={ttys:[],init(){},shutdown(){},register(e,r){Ge.ttys[e]={input:[],output:[],ops:r},n.registerDevice(e,Ge.stream_ops)},stream_ops:{open(e){var r=Ge.ttys[e.node.rdev];if(!r)throw new n.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,o,i){if(!e.tty||!e.tty.ops.get_char)throw new n.ErrnoError(60);for(var a=0,u=0;u0&&(L(Re(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){r===null||r===10?(T(Re(e.output)),e.output=[]):r!=0&&e.output.push(r)},fsync(e){e.output&&e.output.length>0&&(T(Re(e.output)),e.output=[])}}},it=(e,r)=>{Q.fill(0,e,e+r)},nr=(e,r)=>Math.ceil(e/r)*r,Er=e=>{e=nr(e,65536);var r=jr(65536,e);return r&&it(r,e),r},g={ops_table:null,mount(e){return g.createNode(null,\"/\",16895,0)},createNode(e,r,t,o){if(n.isBlkdev(t)||n.isFIFO(t))throw new n.ErrnoError(63);g.ops_table||={dir:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,lookup:g.node_ops.lookup,mknod:g.node_ops.mknod,rename:g.node_ops.rename,unlink:g.node_ops.unlink,rmdir:g.node_ops.rmdir,readdir:g.node_ops.readdir,symlink:g.node_ops.symlink},stream:{llseek:g.stream_ops.llseek}},file:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:{llseek:g.stream_ops.llseek,read:g.stream_ops.read,write:g.stream_ops.write,allocate:g.stream_ops.allocate,mmap:g.stream_ops.mmap,msync:g.stream_ops.msync}},link:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,readlink:g.node_ops.readlink},stream:{}},chrdev:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:n.chrdev_stream_ops}};var i=n.createNode(e,r,t,o);return n.isDir(i.mode)?(i.node_ops=g.ops_table.dir.node,i.stream_ops=g.ops_table.dir.stream,i.contents={}):n.isFile(i.mode)?(i.node_ops=g.ops_table.file.node,i.stream_ops=g.ops_table.file.stream,i.usedBytes=0,i.contents=null):n.isLink(i.mode)?(i.node_ops=g.ops_table.link.node,i.stream_ops=g.ops_table.link.stream):n.isChrdev(i.mode)&&(i.node_ops=g.ops_table.chrdev.node,i.stream_ops=g.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[r]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){var o=1024*1024;r=Math.max(r,t*(t>>0),t!=0&&(r=Math.max(r,256));var i=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,r){if(e.usedBytes!=r)if(r==0)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr(e){var r={};return r.dev=n.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,n.isDir(e.mode)?r.size=4096:n.isFile(e.mode)?r.size=e.usedBytes:n.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){r.mode!==void 0&&(e.mode=r.mode),r.timestamp!==void 0&&(e.timestamp=r.timestamp),r.size!==void 0&&g.resizeFileStorage(e,r.size)},lookup(e,r){throw g.doesNotExistError},mknod(e,r,t,o){return g.createNode(e,r,t,o)},rename(e,r,t){if(n.isDir(e.mode)){var o;try{o=n.lookupNode(r,t)}catch{}if(o)for(var i in o.contents)throw new n.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp},unlink(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir(e,r){var t=n.lookupNode(e,r);for(var o in t.contents)throw new n.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir(e){var r=[\".\",\"..\"];for(var t of Object.keys(e.contents))r.push(t);return r},symlink(e,r,t){var o=g.createNode(e,r,41471,0);return o.link=t,o},readlink(e){if(!n.isLink(e.mode))throw new n.ErrnoError(28);return e.link}},stream_ops:{read(e,r,t,o,i){var a=e.node.contents;if(i>=e.node.usedBytes)return 0;var u=Math.min(e.node.usedBytes-i,o);if(u>8&&a.subarray)r.set(a.subarray(i,i+u),t);else for(var f=0;f0||t+r{var i=o?\"\":`al ${e}`;K(e).then(a=>{r(new Uint8Array(a)),i&&he(i)},a=>{if(t)t();else throw`Loading data file \"${e}\" failed.`}),i&&_e(i)},st=(e,r,t,o,i,a)=>{n.createDataFile(e,r,t,o,i,a)},ut=[],ct=(e,r,t,o)=>{typeof Browser<\"u\"&&Browser.init();var i=!1;return ut.forEach(a=>{i||a.canHandle(r)&&(a.handle(e,r,t,o),i=!0)}),i},ft=(e,r,t,o,i,a,u,f,v,F)=>{var b=r?ge.resolve(S.join2(e,r)):e,Y=`cp ${b}`;function x(w){function M(ee){F?.(),f||st(e,r,ee,o,i,v),a?.(),he(Y)}ct(w,b,M,()=>{u?.(),he(Y)})||M(w)}_e(Y),typeof t==\"string\"?at(t,x,u):x(t)},_t=e=>{var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090},t=r[e];if(typeof t>\"u\")throw new Error(`Unknown file open mode: ${e}`);return t},or=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},n={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,ErrnoError:class{name=\"ErrnoError\";constructor(e){this.errno=e}},filesystems:null,syncFSRequests:0,FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,o){e||(e=this),this.parent=e,this.mount=e.mount,this.id=n.nextInode++,this.name=r,this.mode=t,this.rdev=o}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return n.isDir(this.mode)}get isDevice(){return n.isChrdev(this.mode)}},lookupPath(e,r={}){if(e=ge.resolve(e),!e)return{path:\"\",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new n.ErrnoError(32);for(var o=e.split(\"/\").filter(Y=>!!Y),i=n.root,a=\"/\",u=0;u40)throw new n.ErrnoError(32)}}return{path:a,node:i}},getPath(e){for(var r;;){if(n.isRoot(e)){var t=e.mount.mountpoint;return r?t[t.length-1]!==\"/\"?`${t}/${r}`:t+r:t}r=r?`${e.name}/${r}`:e.name,e=e.parent}},hashName(e,r){for(var t=0,o=0;o>>0)%n.nameTable.length},hashAddNode(e){var r=n.hashName(e.parent.id,e.name);e.name_next=n.nameTable[r],n.nameTable[r]=e},hashRemoveNode(e){var r=n.hashName(e.parent.id,e.name);if(n.nameTable[r]===e)n.nameTable[r]=e.name_next;else for(var t=n.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=n.mayLookup(e);if(t)throw new n.ErrnoError(t);for(var o=n.hashName(e.id,r),i=n.nameTable[o];i;i=i.name_next){var a=i.name;if(i.parent.id===e.id&&a===r)return i}return n.lookup(e,r)},createNode(e,r,t,o){var i=new n.FSNode(e,r,t,o);return n.hashAddNode(i),i},destroyNode(e){n.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var r=[\"r\",\"w\",\"rw\"][e&3];return e&512&&(r+=\"w\"),r},nodePermissions(e,r){return n.ignorePermissions?0:r.includes(\"r\")&&!(e.mode&292)||r.includes(\"w\")&&!(e.mode&146)||r.includes(\"x\")&&!(e.mode&73)?2:0},mayLookup(e){if(!n.isDir(e.mode))return 54;var r=n.nodePermissions(e,\"x\");return r||(e.node_ops.lookup?0:2)},mayCreate(e,r){try{var t=n.lookupNode(e,r);return 20}catch{}return n.nodePermissions(e,\"wx\")},mayDelete(e,r,t){var o;try{o=n.lookupNode(e,r)}catch(a){return a.errno}var i=n.nodePermissions(e,\"wx\");if(i)return i;if(t){if(!n.isDir(o.mode))return 54;if(n.isRoot(o)||n.getPath(o)===n.cwd())return 10}else if(n.isDir(o.mode))return 31;return 0},mayOpen(e,r){return e?n.isLink(e.mode)?32:n.isDir(e.mode)&&(n.flagsToPermissionString(r)!==\"r\"||r&512)?31:n.nodePermissions(e,n.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=n.MAX_OPEN_FDS;e++)if(!n.streams[e])return e;throw new n.ErrnoError(33)},getStreamChecked(e){var r=n.getStream(e);if(!r)throw new n.ErrnoError(8);return r},getStream:e=>n.streams[e],createStream(e,r=-1){return e=Object.assign(new n.FSStream,e),r==-1&&(r=n.nextfd()),e.fd=r,n.streams[r]=e,e},closeStream(e){n.streams[e]=null},dupStream(e,r=-1){var t=n.createStream(e,r);return t.stream_ops?.dup?.(t),t},chrdev_stream_ops:{open(e){var r=n.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new n.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,r)=>e<<8|r,registerDevice(e,r){n.devices[e]={stream_ops:r}},getDevice:e=>n.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var o=t.pop();r.push(o),t.push(...o.mounts)}return r},syncfs(e,r){typeof e==\"function\"&&(r=e,e=!1),n.syncFSRequests++,n.syncFSRequests>1&&T(`warning: ${n.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=n.getMounts(n.root.mount),o=0;function i(u){return n.syncFSRequests--,r(u)}function a(u){if(u)return a.errored?void 0:(a.errored=!0,i(u));++o>=t.length&&i(null)}t.forEach(u=>{if(!u.type.syncfs)return a(null);u.type.syncfs(u,e,a)})},mount(e,r,t){var o=t===\"/\",i=!t,a;if(o&&n.root)throw new n.ErrnoError(10);if(!o&&!i){var u=n.lookupPath(t,{follow_mount:!1});if(t=u.path,a=u.node,n.isMountpoint(a))throw new n.ErrnoError(10);if(!n.isDir(a.mode))throw new n.ErrnoError(54)}var f={type:e,opts:r,mountpoint:t,mounts:[]},v=e.mount(f);return v.mount=f,f.root=v,o?n.root=v:a&&(a.mounted=f,a.mount&&a.mount.mounts.push(f)),v},unmount(e){var r=n.lookupPath(e,{follow_mount:!1});if(!n.isMountpoint(r.node))throw new n.ErrnoError(28);var t=r.node,o=t.mounted,i=n.getMounts(o);Object.keys(n.nameTable).forEach(u=>{for(var f=n.nameTable[u];f;){var v=f.name_next;i.includes(f.mount)&&n.destroyNode(f),f=v}}),t.mounted=null;var a=t.mount.mounts.indexOf(o);t.mount.mounts.splice(a,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var o=n.lookupPath(e,{parent:!0}),i=o.node,a=S.basename(e);if(!a||a===\".\"||a===\"..\")throw new n.ErrnoError(28);var u=n.mayCreate(i,a);if(u)throw new n.ErrnoError(u);if(!i.node_ops.mknod)throw new n.ErrnoError(63);return i.node_ops.mknod(i,a,r,t)},statfs(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:n.nextInode,ffree:n.nextInode-1,fsid:42,flags:2,namelen:255},t=n.lookupPath(e,{follow:!0}).node;return t?.node_ops.statfs&&Object.assign(r,t.node_ops.statfs(t.mount.opts.root)),r},create(e,r=438){return r&=4095,r|=32768,n.mknod(e,r,0)},mkdir(e,r=511){return r&=1023,r|=16384,n.mknod(e,r,0)},mkdirTree(e,r){for(var t=e.split(\"/\"),o=\"\",i=0;i\"u\"&&(t=r,r=438),r|=8192,n.mknod(e,r,t)},symlink(e,r){if(!ge.resolve(e))throw new n.ErrnoError(44);var t=n.lookupPath(r,{parent:!0}),o=t.node;if(!o)throw new n.ErrnoError(44);var i=S.basename(r),a=n.mayCreate(o,i);if(a)throw new n.ErrnoError(a);if(!o.node_ops.symlink)throw new n.ErrnoError(63);return o.node_ops.symlink(o,i,e)},rename(e,r){var t=S.dirname(e),o=S.dirname(r),i=S.basename(e),a=S.basename(r),u,f,v;if(u=n.lookupPath(e,{parent:!0}),f=u.node,u=n.lookupPath(r,{parent:!0}),v=u.node,!f||!v)throw new n.ErrnoError(44);if(f.mount!==v.mount)throw new n.ErrnoError(75);var F=n.lookupNode(f,i),b=ge.relative(e,o);if(b.charAt(0)!==\".\")throw new n.ErrnoError(28);if(b=ge.relative(r,t),b.charAt(0)!==\".\")throw new n.ErrnoError(55);var Y;try{Y=n.lookupNode(v,a)}catch{}if(F!==Y){var x=n.isDir(F.mode),w=n.mayDelete(f,i,x);if(w)throw new n.ErrnoError(w);if(w=Y?n.mayDelete(v,a,x):n.mayCreate(v,a),w)throw new n.ErrnoError(w);if(!f.node_ops.rename)throw new n.ErrnoError(63);if(n.isMountpoint(F)||Y&&n.isMountpoint(Y))throw new n.ErrnoError(10);if(v!==f&&(w=n.nodePermissions(f,\"w\"),w))throw new n.ErrnoError(w);n.hashRemoveNode(F);try{f.node_ops.rename(F,v,a),F.parent=v}catch(M){throw M}finally{n.hashAddNode(F)}}},rmdir(e){var r=n.lookupPath(e,{parent:!0}),t=r.node,o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!0);if(a)throw new n.ErrnoError(a);if(!t.node_ops.rmdir)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.rmdir(t,o),n.destroyNode(i)},readdir(e){var r=n.lookupPath(e,{follow:!0}),t=r.node;if(!t.node_ops.readdir)throw new n.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var r=n.lookupPath(e,{parent:!0}),t=r.node;if(!t)throw new n.ErrnoError(44);var o=S.basename(e),i=n.lookupNode(t,o),a=n.mayDelete(t,o,!1);if(a)throw new n.ErrnoError(a);if(!t.node_ops.unlink)throw new n.ErrnoError(63);if(n.isMountpoint(i))throw new n.ErrnoError(10);t.node_ops.unlink(t,o),n.destroyNode(i)},readlink(e){var r=n.lookupPath(e),t=r.node;if(!t)throw new n.ErrnoError(44);if(!t.node_ops.readlink)throw new n.ErrnoError(28);return t.node_ops.readlink(t)},stat(e,r){var t=n.lookupPath(e,{follow:!r}),o=t.node;if(!o)throw new n.ErrnoError(44);if(!o.node_ops.getattr)throw new n.ErrnoError(63);return o.node_ops.getattr(o)},lstat(e){return n.stat(e,!0)},chmod(e,r,t){var o;if(typeof e==\"string\"){var i=n.lookupPath(e,{follow:!t});o=i.node}else o=e;if(!o.node_ops.setattr)throw new n.ErrnoError(63);o.node_ops.setattr(o,{mode:r&4095|o.mode&-4096,timestamp:Date.now()})},lchmod(e,r){n.chmod(e,r,!0)},fchmod(e,r){var t=n.getStreamChecked(e);n.chmod(t.node,r)},chown(e,r,t,o){var i;if(typeof e==\"string\"){var a=n.lookupPath(e,{follow:!o});i=a.node}else i=e;if(!i.node_ops.setattr)throw new n.ErrnoError(63);i.node_ops.setattr(i,{timestamp:Date.now()})},lchown(e,r,t){n.chown(e,r,t,!0)},fchown(e,r,t){var o=n.getStreamChecked(e);n.chown(o.node,r,t)},truncate(e,r){if(r<0)throw new n.ErrnoError(28);var t;if(typeof e==\"string\"){var o=n.lookupPath(e,{follow:!0});t=o.node}else t=e;if(!t.node_ops.setattr)throw new n.ErrnoError(63);if(n.isDir(t.mode))throw new n.ErrnoError(31);if(!n.isFile(t.mode))throw new n.ErrnoError(28);var i=n.nodePermissions(t,\"w\");if(i)throw new n.ErrnoError(i);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate(e,r){var t=n.getStreamChecked(e);if(!(t.flags&2097155))throw new n.ErrnoError(28);n.truncate(t.node,r)},utime(e,r,t){var o=n.lookupPath(e,{follow:!0}),i=o.node;i.node_ops.setattr(i,{timestamp:Math.max(r,t)})},open(e,r,t=438){if(e===\"\")throw new n.ErrnoError(44);r=typeof r==\"string\"?_t(r):r,r&64?t=t&4095|32768:t=0;var o;if(typeof e==\"object\")o=e;else{e=S.normalize(e);try{var i=n.lookupPath(e,{follow:!(r&131072)});o=i.node}catch{}}var a=!1;if(r&64)if(o){if(r&128)throw new n.ErrnoError(20)}else o=n.mknod(e,t,0),a=!0;if(!o)throw new n.ErrnoError(44);if(n.isChrdev(o.mode)&&(r&=-513),r&65536&&!n.isDir(o.mode))throw new n.ErrnoError(54);if(!a){var u=n.mayOpen(o,r);if(u)throw new n.ErrnoError(u)}r&512&&!a&&n.truncate(o,0),r&=-131713;var f=n.createStream({node:o,path:n.getPath(o),flags:r,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1});return f.stream_ops.open&&f.stream_ops.open(f),f},close(e){if(n.isClosed(e))throw new n.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(r){throw r}finally{n.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new n.ErrnoError(70);if(t!=0&&t!=1&&t!=2)throw new n.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,o,i){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if((e.flags&2097155)===1)throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.read)throw new n.ErrnoError(28);var a=typeof i<\"u\";if(!a)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var u=e.stream_ops.read(e,r,t,o,i);return a||(e.position+=u),u},write(e,r,t,o,i,a){if(o<0||i<0)throw new n.ErrnoError(28);if(n.isClosed(e))throw new n.ErrnoError(8);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(n.isDir(e.node.mode))throw new n.ErrnoError(31);if(!e.stream_ops.write)throw new n.ErrnoError(28);e.seekable&&e.flags&1024&&n.llseek(e,0,2);var u=typeof i<\"u\";if(!u)i=e.position;else if(!e.seekable)throw new n.ErrnoError(70);var f=e.stream_ops.write(e,r,t,o,i,a);return u||(e.position+=f),f},allocate(e,r,t){if(n.isClosed(e))throw new n.ErrnoError(8);if(r<0||t<=0)throw new n.ErrnoError(28);if(!(e.flags&2097155))throw new n.ErrnoError(8);if(!n.isFile(e.node.mode)&&!n.isDir(e.node.mode))throw new n.ErrnoError(43);if(!e.stream_ops.allocate)throw new n.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap(e,r,t,o,i){if(o&2&&!(i&2)&&(e.flags&2097155)!==2)throw new n.ErrnoError(2);if((e.flags&2097155)===1)throw new n.ErrnoError(2);if(!e.stream_ops.mmap)throw new n.ErrnoError(43);if(!r)throw new n.ErrnoError(28);return e.stream_ops.mmap(e,r,t,o,i)},msync(e,r,t,o,i){return e.stream_ops.msync?e.stream_ops.msync(e,r,t,o,i):0},ioctl(e,r,t){if(!e.stream_ops.ioctl)throw new n.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||\"binary\",r.encoding!==\"utf8\"&&r.encoding!==\"binary\")throw new Error(`Invalid encoding type \"${r.encoding}\"`);var t,o=n.open(e,r.flags),i=n.stat(e),a=i.size,u=new Uint8Array(a);return n.read(o,u,0,a,0),r.encoding===\"utf8\"?t=Re(u):r.encoding===\"binary\"&&(t=u),n.close(o),t},writeFile(e,r,t={}){t.flags=t.flags||577;var o=n.open(e,t.flags,t.mode);if(typeof r==\"string\"){var i=new Uint8Array(er(r)+1),a=rr(r,i,0,i.length);n.write(o,i,0,a,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))n.write(o,r,0,r.byteLength,void 0,t.canOwn);else throw new Error(\"Unsupported data type\");n.close(o)},cwd:()=>n.currentPath,chdir(e){var r=n.lookupPath(e,{follow:!0});if(r.node===null)throw new n.ErrnoError(44);if(!n.isDir(r.node.mode))throw new n.ErrnoError(54);var t=n.nodePermissions(r.node,\"x\");if(t)throw new n.ErrnoError(t);n.currentPath=r.path},createDefaultDirectories(){n.mkdir(\"/tmp\"),n.mkdir(\"/home\"),n.mkdir(\"/home/web_user\")},createDefaultDevices(){n.mkdir(\"/dev\"),n.registerDevice(n.makedev(1,3),{read:()=>0,write:(o,i,a,u,f)=>u,llseek:()=>0}),n.mkdev(\"/dev/null\",n.makedev(1,3)),Ge.register(n.makedev(5,0),Ge.default_tty_ops),Ge.register(n.makedev(6,0),Ge.default_tty1_ops),n.mkdev(\"/dev/tty\",n.makedev(5,0)),n.mkdev(\"/dev/tty1\",n.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(r===0&&(r=pr(e).byteLength),e[--r]);n.createDevice(\"/dev\",\"random\",t),n.createDevice(\"/dev\",\"urandom\",t),n.mkdir(\"/dev/shm\"),n.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){n.mkdir(\"/proc\");var e=n.mkdir(\"/proc/self\");n.mkdir(\"/proc/self/fd\"),n.mount({mount(){var r=n.createNode(e,\"fd\",16895,73);return r.node_ops={lookup(t,o){var i=+o,a=n.getStreamChecked(i),u={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>a.path}};return u.parent=u,u}},r}},{},\"/proc/self/fd\")},createStandardStreams(e,r,t){e?n.createDevice(\"/dev\",\"stdin\",e):n.symlink(\"/dev/tty\",\"/dev/stdin\"),r?n.createDevice(\"/dev\",\"stdout\",null,r):n.symlink(\"/dev/tty\",\"/dev/stdout\"),t?n.createDevice(\"/dev\",\"stderr\",null,t):n.symlink(\"/dev/tty1\",\"/dev/stderr\");var o=n.open(\"/dev/stdin\",0),i=n.open(\"/dev/stdout\",1),a=n.open(\"/dev/stderr\",1)},staticInit(){n.nameTable=new Array(4096),n.mount(g,{},\"/\"),n.createDefaultDirectories(),n.createDefaultDevices(),n.createSpecialDirectories(),n.filesystems={MEMFS:g}},init(e,r,t){n.initialized=!0,n.createStandardStreams(e,r,t)},quit(){n.initialized=!1;for(var e=0;ethis.length-1||w<0)){var M=w%this.chunkSize,ee=w/this.chunkSize|0;return this.getter(ee)[M]}}setDataGetter(w){this.getter=w}cacheLength(){var w=new XMLHttpRequest;if(w.open(\"HEAD\",t,!1),w.send(null),!(w.status>=200&&w.status<300||w.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+w.status);var M=Number(w.getResponseHeader(\"Content-length\")),ee,le=(ee=w.getResponseHeader(\"Accept-Ranges\"))&&ee===\"bytes\",oe=(ee=w.getResponseHeader(\"Content-Encoding\"))&&ee===\"gzip\",de=1024*1024;le||(de=M);var ve=(ye,Ye)=>{if(ye>Ye)throw new Error(\"invalid range (\"+ye+\", \"+Ye+\") or no bytes requested!\");if(Ye>M-1)throw new Error(\"only \"+M+\" bytes available! programmer error!\");var re=new XMLHttpRequest;if(re.open(\"GET\",t,!1),M!==de&&re.setRequestHeader(\"Range\",\"bytes=\"+ye+\"-\"+Ye),re.responseType=\"arraybuffer\",re.overrideMimeType&&re.overrideMimeType(\"text/plain; charset=x-user-defined\"),re.send(null),!(re.status>=200&&re.status<300||re.status===304))throw new Error(\"Couldn't load \"+t+\". Status: \"+re.status);return re.response!==void 0?new Uint8Array(re.response||[]):tr(re.responseText||\"\",!0)},Se=this;Se.setDataGetter(ye=>{var Ye=ye*de,re=(ye+1)*de-1;if(re=Math.min(re,M-1),typeof Se.chunks[ye]>\"u\"&&(Se.chunks[ye]=ve(Ye,re)),typeof Se.chunks[ye]>\"u\")throw new Error(\"doXHR failed!\");return Se.chunks[ye]}),(oe||!M)&&(de=M=1,M=this.getter(0).length,de=M,L(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=M,this._chunkSize=de,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<\"u\"){if(!E)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var u=new a,f={isDevice:!1,contents:u}}else var f={isDevice:!1,url:t};var v=n.createFile(e,r,f,o,i);f.contents?v.contents=f.contents:f.url&&(v.contents=null,v.url=f.url),Object.defineProperties(v,{usedBytes:{get:function(){return this.contents.length}}});var F={},b=Object.keys(v.stream_ops);b.forEach(x=>{var w=v.stream_ops[x];F[x]=(...M)=>(n.forceLoadFile(v),w(...M))});function Y(x,w,M,ee,le){var oe=x.node.contents;if(le>=oe.length)return 0;var de=Math.min(oe.length-le,ee);if(oe.slice)for(var ve=0;ve(n.forceLoadFile(v),Y(x,w,M,ee,le)),F.mmap=(x,w,M,ee,le)=>{n.forceLoadFile(v);var oe=Er(w);if(!oe)throw new n.ErrnoError(48);return Y(x,m,oe,w,M),{ptr:oe,allocated:!0}},v.stream_ops=F,v}},se=(e,r)=>e?Re(Q,e,r):\"\",P={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(S.isAbs(r))return r;var o;if(e===-100)o=n.cwd();else{var i=P.getStreamFromFD(e);o=i.path}if(r.length==0){if(!t)throw new n.ErrnoError(44);return o}return S.join2(o,r)},doStat(e,r,t){var o=e(r);B[t>>2]=o.dev,B[t+4>>2]=o.mode,R[t+8>>2]=o.nlink,B[t+12>>2]=o.uid,B[t+16>>2]=o.gid,B[t+20>>2]=o.rdev,N=[o.size>>>0,(O=o.size,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+24>>2]=N[0],B[t+28>>2]=N[1],B[t+32>>2]=4096,B[t+36>>2]=o.blocks;var i=o.atime.getTime(),a=o.mtime.getTime(),u=o.ctime.getTime();return N=[Math.floor(i/1e3)>>>0,(O=Math.floor(i/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+40>>2]=N[0],B[t+44>>2]=N[1],R[t+48>>2]=i%1e3*1e3*1e3,N=[Math.floor(a/1e3)>>>0,(O=Math.floor(a/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+56>>2]=N[0],B[t+60>>2]=N[1],R[t+64>>2]=a%1e3*1e3*1e3,N=[Math.floor(u/1e3)>>>0,(O=Math.floor(u/1e3),+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+72>>2]=N[0],B[t+76>>2]=N[1],R[t+80>>2]=u%1e3*1e3*1e3,N=[o.ino>>>0,(O=o.ino,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[t+88>>2]=N[0],B[t+92>>2]=N[1],0},doMsync(e,r,t,o,i){if(!n.isFile(r.node.mode))throw new n.ErrnoError(43);if(o&2)return 0;var a=Q.slice(e,e+t);n.msync(r,a,i,t,o)},getStreamFromFD(e){var r=n.getStreamChecked(e);return r},varargs:void 0,getStr(e){var r=se(e);return r}};function lt(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),t&-8)return-28;var i=n.lookupPath(r,{follow:!0}),a=i.node;if(!a)return-44;var u=\"\";return t&4&&(u+=\"r\"),t&2&&(u+=\"w\"),t&1&&(u+=\"x\"),u&&n.nodePermissions(a,u)?-2:0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}var We=()=>{var e=B[+P.varargs>>2];return P.varargs+=4,e},De=We;function dt(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 0:{var i=We();if(i<0)return-28;for(;n.streams[i];)i++;var a;return a=n.dupStream(o,i),a.fd}case 1:case 2:return 0;case 3:return o.flags;case 4:{var i=We();return o.flags|=i,0}case 12:{var i=De(),u=0;return k[i+u>>1]=2,0}case 13:case 14:return 0}return-28}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function vt(e,r){try{var t=P.getStreamFromFD(e);return P.doStat(n.stat,t.path,r)}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}function ht(e,r,t){P.varargs=t;try{var o=P.getStreamFromFD(e);switch(r){case 21509:return o.tty?0:-59;case 21505:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcgets){var i=o.tty.ops.ioctl_tcgets(o),a=De();B[a>>2]=i.c_iflag||0,B[a+4>>2]=i.c_oflag||0,B[a+8>>2]=i.c_cflag||0,B[a+12>>2]=i.c_lflag||0;for(var u=0;u<32;u++)m[a+u+17]=i.c_cc[u]||0;return 0}return 0}case 21510:case 21511:case 21512:return o.tty?0:-59;case 21506:case 21507:case 21508:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tcsets){for(var a=De(),f=B[a>>2],v=B[a+4>>2],F=B[a+8>>2],b=B[a+12>>2],Y=[],u=0;u<32;u++)Y.push(m[a+u+17]);return o.tty.ops.ioctl_tcsets(o.tty,r,{c_iflag:f,c_oflag:v,c_cflag:F,c_lflag:b,c_cc:Y})}return 0}case 21519:{if(!o.tty)return-59;var a=De();return B[a>>2]=0,0}case 21520:return o.tty?-28:-59;case 21531:{var a=De();return n.ioctl(o,r,a)}case 21523:{if(!o.tty)return-59;if(o.tty.ops.ioctl_tiocgwinsz){var x=o.tty.ops.ioctl_tiocgwinsz(o.tty),a=De();k[a>>1]=x[0],k[a+2>>1]=x[1]}return 0}case 21524:return o.tty?0:-59;case 21515:return o.tty?0:-59;default:return-28}}catch(w){if(typeof n>\"u\"||w.name!==\"ErrnoError\")throw w;return-w.errno}}function pt(e,r,t,o){try{r=P.getStr(r);var i=o&256,a=o&4096;return o=o&-6401,r=P.calculateAt(e,r,a),P.doStat(i?n.lstat:n.stat,r,t)}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return-u.errno}}function yt(e,r,t,o){P.varargs=o;try{r=P.getStr(r),r=P.calculateAt(e,r);var i=o?We():0;return n.open(r,t,i).fd}catch(a){if(typeof n>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}var Ze=(e,r,t)=>rr(e,Q,r,t);function Et(e,r,t,o){try{if(r=P.getStr(r),r=P.calculateAt(e,r),o<=0)return-28;var i=n.readlink(r),a=Math.min(o,er(i)),u=m[t+a];return Ze(i,t,o+1),m[t+a]=u,a}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return-f.errno}}function mt(e){try{return e=P.getStr(e),n.rmdir(e),0}catch(r){if(typeof n>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}function wt(e,r){try{return e=P.getStr(e),P.doStat(n.stat,e,r)}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return-t.errno}}function Bt(e,r,t){try{return r=P.getStr(r),r=P.calculateAt(e,r),t===0?n.unlink(r):t===512?n.rmdir(r):pe(\"Invalid flags passed to unlinkat\"),0}catch(o){if(typeof n>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}var gt=()=>pe(\"\"),Gt=1,Ft=()=>Gt,Lt=(e,r,t)=>Q.copyWithin(e,r,r+t),ir=(e,r)=>r+2097152>>>0<4194305-!!e?(e>>>0)+r*4294967296:NaN;function It(e,r,t,o,i,a,u,f){var v=ir(i,a);try{if(isNaN(v))return 61;var F=P.getStreamFromFD(o),b=n.mmap(F,e,v,r,t),Y=b.ptr;return B[u>>2]=b.allocated,R[f>>2]=Y,0}catch(x){if(typeof n>\"u\"||x.name!==\"ErrnoError\")throw x;return-x.errno}}function xt(e,r,t,o,i,a,u){var f=ir(a,u);try{var v=P.getStreamFromFD(i);t&2&&P.doMsync(e,v,r,o,f)}catch(F){if(typeof n>\"u\"||F.name!==\"ErrnoError\")throw F;return-F.errno}}var Ot=(e,r,t,o)=>{var i=new Date().getFullYear(),a=new Date(i,0,1),u=new Date(i,6,1),f=a.getTimezoneOffset(),v=u.getTimezoneOffset(),F=Math.max(f,v);R[e>>2]=F*60,B[r>>2]=+(f!=v);var b=w=>{var M=w>=0?\"-\":\"+\",ee=Math.abs(w),le=String(Math.floor(ee/60)).padStart(2,\"0\"),oe=String(ee%60).padStart(2,\"0\");return`UTC${M}${le}${oe}`},Y=b(f),x=b(v);v{ar.length=0;for(var t;t=Q[e++];){var o=t!=105;o&=t!=112,r+=o&&r%8?4:0,ar.push(t==112?R[r>>2]:t==105?B[r>>2]:ne[r>>3]),r+=o?8:4}return ar},Mt=(e,r,t)=>{var o=bt(r,t);return kr[e](...o)},Rt=(e,r,t)=>Mt(e,r,t),Dt=()=>Date.now(),Yt=()=>2147483648,Pt=e=>{var r=X.buffer,t=(e-r.byteLength+65535)/65536|0;try{return X.grow(t),Z(),1}catch{}},Tt=e=>{var r=Q.length;e>>>=0;var t=Yt();if(e>t)return!1;for(var o=1;o<=4;o*=2){var i=r*(1+.2/o);i=Math.min(i,e+100663296);var a=Math.min(t,nr(Math.max(e,i),65536)),u=Pt(a);if(u)return!0}return!1},sr={},Zt=()=>j||\"./this.program\",ze=()=>{if(!ze.strings){var e=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",r={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:e,_:Zt()};for(var t in sr)sr[t]===void 0?delete r[t]:r[t]=sr[t];var o=[];for(var t in r)o.push(`${t}=${r[t]}`);ze.strings=o}return ze.strings},zt=(e,r)=>{for(var t=0;t{var t=0;return ze().forEach((o,i)=>{var a=r+t;R[e+i*4>>2]=a,zt(o,a),t+=o.length+1}),0},jt=(e,r)=>{var t=ze();R[e>>2]=t.length;var o=0;return t.forEach(i=>o+=i.length+1),R[r>>2]=o,0},Ut=()=>!0,Ht=e=>{fe=e,Ut()||(W=!0),q(e,new Ar(e))},Kt=(e,r)=>{fe=e,Ht(e)},Qt=Kt;function Wt(e){try{var r=P.getStreamFromFD(e);return n.close(r),0}catch(t){if(typeof n>\"u\"||t.name!==\"ErrnoError\")throw t;return t.errno}}var Ct=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.read(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}function $t(e,r,t,o,i){var a=ir(r,t);try{if(isNaN(a))return 61;var u=P.getStreamFromFD(e);return n.llseek(u,a,o),N=[u.position>>>0,(O=u.position,+Math.abs(O)>=1?O>0?+Math.floor(O/4294967296)>>>0:~~+Math.ceil((O-+(~~O>>>0))/4294967296)>>>0:0)],B[i>>2]=N[0],B[i+4>>2]=N[1],u.getdents&&a===0&&o===0&&(u.getdents=null),0}catch(f){if(typeof n>\"u\"||f.name!==\"ErrnoError\")throw f;return f.errno}}var Vt=(e,r,t,o)=>{for(var i=0,a=0;a>2],f=R[r+4>>2];r+=8;var v=n.write(e,m,u,f,o);if(v<0)return-1;if(i+=v,v>2]=a,0}catch(u){if(typeof n>\"u\"||u.name!==\"ErrnoError\")throw u;return u.errno}}n.createPreloadedFile=ft,n.staticInit(),g.doesNotExistError=new n.ErrnoError(44),g.doesNotExistError.stack=\"\";var Jt={a:tt,i:lt,f:dt,x:vt,k:ht,v:pt,h:yt,q:Et,r:mt,w:wt,s:Bt,j:gt,y:Ft,z:Lt,l:It,m:xt,o:Ot,A:Rt,c:Dt,p:Tt,t:St,u:jt,g:Qt,b:Wt,e:Xt,n:$t,d:qt},z=Nr(),Nt=()=>(Nt=z.C)(),kt=s._webidl_free=e=>(kt=s._webidl_free=z.D)(e),At=s._free=e=>(At=s._free=z.E)(e),en=s._webidl_malloc=e=>(en=s._webidl_malloc=z.F)(e),rn=s._malloc=e=>(rn=s._malloc=z.G)(e),mr=s._emscripten_bind_VoidPtr___destroy___0=e=>(mr=s._emscripten_bind_VoidPtr___destroy___0=z.H)(e),wr=s._emscripten_bind_Graphviz_Graphviz_2=(e,r)=>(wr=s._emscripten_bind_Graphviz_Graphviz_2=z.I)(e,r),Br=s._emscripten_bind_Graphviz_version_0=()=>(Br=s._emscripten_bind_Graphviz_version_0=z.J)(),gr=s._emscripten_bind_Graphviz_lastError_0=()=>(gr=s._emscripten_bind_Graphviz_lastError_0=z.K)(),Gr=s._emscripten_bind_Graphviz_createFile_2=(e,r,t)=>(Gr=s._emscripten_bind_Graphviz_createFile_2=z.L)(e,r,t),Fr=s._emscripten_bind_Graphviz_layout_3=(e,r,t,o)=>(Fr=s._emscripten_bind_Graphviz_layout_3=z.M)(e,r,t,o),Lr=s._emscripten_bind_Graphviz_acyclic_3=(e,r,t,o)=>(Lr=s._emscripten_bind_Graphviz_acyclic_3=z.N)(e,r,t,o),Ir=s._emscripten_bind_Graphviz_tred_3=(e,r,t,o)=>(Ir=s._emscripten_bind_Graphviz_tred_3=z.O)(e,r,t,o),xr=s._emscripten_bind_Graphviz_unflatten_4=(e,r,t,o,i)=>(xr=s._emscripten_bind_Graphviz_unflatten_4=z.P)(e,r,t,o,i),Or=s._emscripten_bind_Graphviz_get_layout_result_0=e=>(Or=s._emscripten_bind_Graphviz_get_layout_result_0=z.Q)(e),br=s._emscripten_bind_Graphviz_set_layout_result_1=(e,r)=>(br=s._emscripten_bind_Graphviz_set_layout_result_1=z.R)(e,r),Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=e=>(Mr=s._emscripten_bind_Graphviz_get_acyclic_outFile_0=z.S)(e),Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=(e,r)=>(Rr=s._emscripten_bind_Graphviz_set_acyclic_outFile_1=z.T)(e,r),Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=e=>(Dr=s._emscripten_bind_Graphviz_get_acyclic_num_rev_0=z.U)(e),Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=(e,r)=>(Yr=s._emscripten_bind_Graphviz_set_acyclic_num_rev_1=z.V)(e,r),Pr=s._emscripten_bind_Graphviz_get_tred_out_0=e=>(Pr=s._emscripten_bind_Graphviz_get_tred_out_0=z.W)(e),Tr=s._emscripten_bind_Graphviz_set_tred_out_1=(e,r)=>(Tr=s._emscripten_bind_Graphviz_set_tred_out_1=z.X)(e,r),Zr=s._emscripten_bind_Graphviz_get_tred_err_0=e=>(Zr=s._emscripten_bind_Graphviz_get_tred_err_0=z.Y)(e),zr=s._emscripten_bind_Graphviz_set_tred_err_1=(e,r)=>(zr=s._emscripten_bind_Graphviz_set_tred_err_1=z.Z)(e,r),Sr=s._emscripten_bind_Graphviz___destroy___0=e=>(Sr=s._emscripten_bind_Graphviz___destroy___0=z._)(e),jr=(e,r)=>(jr=z.aa)(e,r);s.UTF8ToString=se;var Ce;we=function e(){Ce||Ur(),Ce||(we=e)};function Ur(){if(me>0||(Oe(),me>0))return;function e(){Ce||(Ce=!0,s.calledRun=!0,!W&&(Pe(),d(s),Qe()))}e()}Ur();function ue(){}ue.prototype=Object.create(ue.prototype),ue.prototype.constructor=ue,ue.prototype.__class__=ue,ue.__cache__={},s.WrapperObject=ue;function Xe(e){return(e||ue).__cache__}s.getCache=Xe;function ur(e,r){var t=Xe(r),o=t[e];return o||(o=Object.create((r||ue).prototype),o.ptr=e,t[e]=o)}s.wrapPointer=ur;function tn(e,r){return ur(e.ptr,r)}s.castObject=tn,s.NULL=ur(0);function nn(e){if(!e.__destroy__)throw\"Error: Cannot destroy object. (Did you create it yourself?)\";e.__destroy__(),delete Xe(e.__class__)[e.ptr]}s.destroy=nn;function on(e,r){return e.ptr===r.ptr}s.compare=on;function an(e){return e.ptr}s.getPointer=an;function sn(e){return e.__class__}s.getClass=sn;var D={buffer:0,size:0,pos:0,temps:[],needed:0,prepare(){if(D.needed){for(var e=0;e=D.size?(C(o>0),D.needed+=o,i=s._webidl_malloc(o),D.temps.push(i)):(i=D.buffer+D.pos,D.pos+=o),i},copy(e,r,t){t/=r.BYTES_PER_ELEMENT;for(var o=0;o88?13:14;do l.push(s&255),s>>=8,d-=8;while(d>7);h=-1}}return h>-1&&l.push((s|h<\n\n`}}function On(c){return c.map(xn)}function bn(c,_){let l={images:[],files:[],..._};[...l.files,...On(l.images)].forEach(s=>c.createFile(s.path,s.data))}var $r=class c{constructor(_){this._module=_}static load(){return Cr().then(_=>new c(_))}static unload(){Xr()}version(){return this._module.Graphviz.prototype.version()}layout(_,l=\"svg\",s=\"dot\",d){if(!_)return\"\";let h=new this._module.Graphviz(d?.yInvert?1:0,d?.nop?d?.nop:0),p=\"\",E=\"\";try{bn(h,d);try{p=h.layout(_,l,s)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}acyclic(_,l=!1,s=!1){if(!_)return{acyclic:!1,num_rev:0,outFile:\"\"};let d=new this._module.Graphviz,h=!1,p=0,E=\"\",G=\"\";try{try{h=d.acyclic(_,l,s),p=d.acyclic_num_rev,E=d.acyclic_outFile}catch(j){G=j.message}G=d.lastError()||G}finally{this._module.destroy(d)}if(G)throw c.unload(),new Error(G);return{acyclic:h,num_rev:p,outFile:E}}tred(_,l=!1,s=!1){if(!_)return{out:\"\",err:\"\"};let d=new this._module.Graphviz,h=\"\",p=\"\",E=\"\";try{try{d.tred(_,l,s),h=d.tred_out,p=d.tred_err}catch(G){E=G.message}E=d.lastError()||E}finally{this._module.destroy(d)}if(!h&&E)throw c.unload(),new Error(E);return{out:h,err:p}}unflatten(_,l=0,s=!1,d=0){if(!_)return\"\";let h=new this._module.Graphviz,p=\"\",E=\"\";try{try{p=h.unflatten(_,l,s,d)}catch(G){E=G.message}E=h.lastError()||E}finally{this._module.destroy(h)}if(!p&&E)throw c.unload(),new Error(E);return p}circo(_,l=\"svg\",s){return this.layout(_,l,\"circo\",s)}dot(_,l=\"svg\",s){return this.layout(_,l,\"dot\",s)}fdp(_,l=\"svg\",s){return this.layout(_,l,\"fdp\",s)}sfdp(_,l=\"svg\",s){return this.layout(_,l,\"sfdp\",s)}neato(_,l=\"svg\",s){return this.layout(_,l,\"neato\",s)}osage(_,l=\"svg\",s){return this.layout(_,l,\"osage\",s)}patchwork(_,l=\"svg\",s){return this.layout(_,l,\"patchwork\",s)}twopi(_,l=\"svg\",s){return this.layout(_,l,\"twopi\",s)}nop(_){return this.layout(_,\"dot\",\"nop\")}nop2(_){return this.layout(_,\"dot\",\"nop2\")}};export{$r as Graphviz};\n", "import type {\n IRenderOptions,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport { type Engine, type Format, Graphviz } from \"@hpcc-js/wasm-graphviz\";\nimport options from \"../../options.mjs\";\nimport ast2dot from \"../dot/index.mjs\";\n\nconst OUTPUT_TYPE2FORMAT: { [name: string]: string } = {\n oldsvg: \"svg\",\n oldps2: \"ps2\",\n oldeps: \"eps\",\n};\nconst gGraphViz = await Graphviz.load();\n\nfunction getFormat(pOptions?: IRenderOptions): Format {\n return (OUTPUT_TYPE2FORMAT[\n options.getOptionValue(pOptions as IRenderOptions, \"outputType\") as string\n ] || \"svg\") as Format;\n}\n\nfunction getEngine(pOptions?: IRenderOptions): Engine {\n return options.getOptionValue(pOptions as IRenderOptions, \"engine\") as Engine;\n}\n\nconst renderVectorWithWasm: StringRenderFunctionType = (\n pStateMachine,\n pOptions,\n) =>\n gGraphViz.layout(\n ast2dot(pStateMachine, pOptions),\n getFormat(pOptions),\n getEngine(pOptions),\n );\n\nexport default renderVectorWithWasm;\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\nconst NAME_CHAR_FORBIDDEN_RE =\n /[\\u0000-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_NAME_CHAR_FORBIDDEN_EXTRA_RE =\n /[-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/g;\n\nfunction makeValidNameChars(pCandidateNameTail: string): string {\n return pCandidateNameTail.replace(NAME_CHAR_FORBIDDEN_RE, \"_\");\n}\n\n/**\n * if it's an invalid NameStartChar but a valid NameChar smack a '_' in front of it\n * if it's an invalid NameChar as well - run it through the makeValidNameChars replacer\n */\nfunction makeValidNameStartChar(pCandidateChar: string): string {\n let lReturnValue = makeValidNameChars(pCandidateChar);\n\n if (lReturnValue.match(START_NAME_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateChar}`;\n }\n return lReturnValue;\n}\n\n/**\n * Takes any string and returns a valid XMLName using these rules:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string '__empty'\n */\nexport default (pCandidateName: string): string => {\n pCandidateName = pCandidateName || \"\";\n\n if (pCandidateName.length === 0) {\n return `__empty`;\n }\n return makeValidNameStartChar(pCandidateName[0]).concat(\n makeValidNameChars(pCandidateName.slice(1)),\n );\n};\n", "/*\n * In the XML spec we read: https://www.w3.org/TR/xml/#NT-Name:\n *\n * NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n * [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n * Name ::= NameStartChar (NameChar)*\n *\n * This means that these characters are forbidden for NameStartChar\n * #xD7, #xF7, #x300 - #x36F, #x37E, #x2000 - #x200B, #x200E - #x206F, #x2190 - #x2BFF, #x2FF0 - #x3000,\n * #xD800 - #xF8FF, #xFDD0 - #xFDEF, #xFFFE - #xFFFF\n */\n\n/* eslint no-control-regex: 0, max-len: 0, no-misleading-character-class: 0 */\n// EVENT_CHAR_FORBIDDEN_RE === forbidden for NameStartChar, except \"-\" and [0-9]\n// The SCXML xsd doesn't seem to mention '*' (\\u002A) as an allowed character. But\n// they _are_ used in event descriptors in the SCXML spec. So we've excluded\n// them from forbidden characters\nconst EVENT_CHAR_FORBIDDEN_RE =\n /[\\u00B7\\u0300-\\u036F\\u203F-\\u2040\\u0000-\\u0029\\u002B-\\u002C\\u002F\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u00BF\\u00D7\\u00F7\\u0300-\\u036F\\u037E\\u2000-\\u200B\\u200E-\\u206F\\u2190-\\u2BFF\\u2FF0-\\u3000\\uD800-\\uF8FF\\uFDD0-\\uFDEF\\uFFFE-\\uFFFF]/g;\nconst START_EVENT_CHAR_FORBIDDEN_EXTRA_RE = /[.]/g;\n\nfunction makeValidEventChar(pCandidateEventStringTail: string): string {\n return pCandidateEventStringTail.replace(EVENT_CHAR_FORBIDDEN_RE, \"_\");\n}\n\nfunction makeValidEventStartChar(pCandidateEventStringStart: string): string {\n let lReturnValue = makeValidEventChar(pCandidateEventStringStart);\n\n if (lReturnValue.match(START_EVENT_CHAR_FORBIDDEN_EXTRA_RE)) {\n lReturnValue = `_${pCandidateEventStringStart}`;\n }\n return lReturnValue;\n}\n\nfunction makeValidEventName(pCandidateEventName: string): string {\n pCandidateEventName = pCandidateEventName.replace(/\\s+/g, \" \").trim();\n\n return makeValidEventStartChar(pCandidateEventName[0]).concat(\n makeValidEventChar(pCandidateEventName.slice(1)),\n );\n}\n/**\n * Takes any string and returns a valid SCXML events string:\n *\n * If pCandidateName is not empty:\n * For all characters in pCandidateName:\n * if it's not a valid NameChar, replace it with '_'\n * For the first character:\n * If it's a valid NameChar, but not a valid NameStartChar, add an '_' in front of the pCandidateName\n *\n * If pCandidateName is empty:\n * return the string 'empty'\n * *\n * @returns a valid SCXML events string\n */\nexport default (pCandidateEventNames?: string): string => {\n const lCandidateEventNames = pCandidateEventNames ?? \"\";\n\n if (lCandidateEventNames.length === 0) {\n return \"empty\";\n }\n\n return lCandidateEventNames\n .split(/[\\n\\r]+/)\n .filter((pCandidateEventName) => pCandidateEventName.length > 0)\n .map(makeValidEventName)\n .join(\" \");\n};\n", "/* eslint-disable security/detect-object-injection */\nimport type {\n ActionTypeType,\n IActionType,\n IRenderOptions,\n IState,\n IStateMachine,\n ITransition,\n} from \"types/state-machine-cat.mjs\";\nimport StateMachineModel from \"../../state-machine-model.mjs\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"./scjson.js\";\nimport makeValidXMLName from \"./make-valid-xml-name.mjs\";\nimport makeValidEventNames from \"./make-valid-event-names.mjs\";\n\nconst STATE_TYPE2SCXML_STATE_KIND: { [stateType: string]: string } = {\n regular: \"state\",\n initial: \"initial\",\n final: \"final\",\n terminate: \"final\",\n parallel: \"parallel\",\n history: \"history\",\n deephistory: \"history\",\n};\n\nfunction stateType2SCXMLStateKind(pStateType: string): string {\n return STATE_TYPE2SCXML_STATE_KIND[pStateType] || \"state\";\n}\n\nfunction transformTransition(pTransition: ITransition): ISCJSONTransition {\n const lReturnValue: ISCJSONTransition = {\n target: makeValidXMLName(pTransition.to),\n };\n\n if (pTransition.event) {\n lReturnValue.event = makeValidEventNames(pTransition.event);\n }\n if (pTransition.cond) {\n lReturnValue.cond = pTransition.cond;\n }\n if (pTransition.action) {\n lReturnValue.action = pTransition.action;\n }\n if (pTransition.type) {\n lReturnValue.type = pTransition.type;\n }\n return lReturnValue;\n}\n\nfunction extractTriggers(\n pTriggers: IActionType[],\n pTriggerType: ActionTypeType,\n): string[] {\n return pTriggers\n .filter((pTrigger) => pTrigger.type === pTriggerType)\n .map((pTrigger) => pTrigger.body);\n}\n\nfunction pullOutActionType(\n pReturnValue: ISCJSONState,\n pTriggersType: \"onentries\" | \"onexits\",\n pActions: IActionType[],\n pActionType: ActionTypeType,\n): void {\n const lTriggerArray: string[] = extractTriggers(pActions, pActionType);\n\n if (lTriggerArray.length > 0) {\n pReturnValue[pTriggersType] = (pReturnValue[pTriggersType] || []).concat(\n lTriggerArray,\n );\n }\n}\n\nfunction transformTriggers(pReturnValue: ISCJSONState, pState: IState): void {\n if (pState.actions) {\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"entry\");\n pullOutActionType(pReturnValue, \"onentries\", pState.actions, \"activity\");\n pullOutActionType(pReturnValue, \"onexits\", pState.actions, \"exit\");\n }\n}\n\nfunction transformTransitions(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n const lTransitions = pTransitions\n .filter((pTransition) => pTransition.from === pState.name)\n .map(transformTransition);\n\n if (lTransitions.length > 0) {\n pReturnValue.transitions = lTransitions;\n }\n}\n\nfunction transformCompositeState(\n pReturnValue: ISCJSONState,\n pState: IState,\n pTransitions: ITransition[],\n): void {\n if (pState.statemachine) {\n // recursion, so ...\n // eslint-disable-next-line no-use-before-define, no-undefined\n const lRenderedState = render(pState.statemachine, undefined, pTransitions);\n\n pReturnValue.states = (pReturnValue.states || []).concat(\n lRenderedState.states,\n );\n if (lRenderedState.initial) {\n pReturnValue.initial = lRenderedState.initial;\n }\n }\n}\n\nfunction transformState(pTransitions: ITransition[]) {\n pTransitions = pTransitions || [];\n\n return (pState: IState): ISCJSONState => {\n const lReturnValue: ISCJSONState = {\n kind: stateType2SCXMLStateKind(pState.type),\n id: makeValidXMLName(pState.name),\n };\n\n if (pState.type === \"deephistory\") {\n // as 'shallow' is the default anyway, we leave it out\n lReturnValue.type = \"deep\";\n }\n\n transformTriggers(lReturnValue, pState);\n\n transformTransitions(lReturnValue, pState, pTransitions);\n\n transformCompositeState(lReturnValue, pState, pTransitions);\n return lReturnValue;\n };\n}\n\nfunction findInitialPseudoStateName(\n pStateMachine: IStateMachine,\n): string | undefined {\n const lInitial = pStateMachine.states.filter(\n (pState) => pState.type === \"initial\",\n );\n\n if (lInitial.length > 0) {\n return lInitial[0].name;\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n}\n\nfunction findInitialStateName(\n pStateMachine: IStateMachine,\n pInitialPseudoStateName?: string,\n): string | undefined {\n let lReturnValue = pInitialPseudoStateName;\n\n if (pInitialPseudoStateName && pStateMachine.transitions) {\n const lInitialTransitions = pStateMachine.transitions.filter(\n (pTransition) => pTransition.from === pInitialPseudoStateName,\n );\n\n if (lInitialTransitions.length > 0 && !lInitialTransitions[0].action) {\n lReturnValue = lInitialTransitions[0].to;\n }\n }\n return lReturnValue;\n}\n\nexport default function render(\n pStateMachine: IStateMachine,\n _pOptions?: IRenderOptions,\n pTransitions?: ITransition[],\n): ISCJSONMachine {\n const lInitialPseudoStateName = findInitialPseudoStateName(pStateMachine);\n const lInitialStateName = findInitialStateName(\n pStateMachine,\n lInitialPseudoStateName,\n );\n const lReturnValue: ISCJSONMachine = {\n states: pStateMachine.states\n .filter((pState) => {\n if (\n lInitialStateName &&\n lInitialStateName !== lInitialPseudoStateName\n ) {\n return pState.type !== \"initial\";\n }\n return true;\n })\n .map(\n transformState(\n pTransitions ||\n new StateMachineModel(pStateMachine).flattenedTransitions,\n ),\n ),\n };\n\n if (lInitialStateName) {\n lReturnValue.initial = makeValidXMLName(lInitialStateName);\n }\n return lReturnValue;\n}\n", "import he from \"he\";\nimport type {\n ISCJSONMachine,\n ISCJSONState,\n ISCJSONTransition,\n} from \"../scjson/scjson.js\";\n\nconst INDENT_LENGTH = 4;\n\nfunction indentString(pString: string, pCount: number): string {\n const lRegex = /^(?!\\s*$)/gm;\n\n return pString.replace(lRegex, \" \".repeat(pCount));\n}\n\nfunction renderTransitionAttributes(pTransition: ISCJSONTransition): string {\n let lReturnValue = \"\";\n if (pTransition.event) {\n lReturnValue += ` event=\"${he.escape(pTransition.event)}\"`;\n }\n if (pTransition.cond) {\n lReturnValue += ` cond=\"${he.escape(pTransition.cond)}\"`;\n }\n if (pTransition.type) {\n lReturnValue += ` type=\"${he.escape(pTransition.type)}\"`;\n }\n lReturnValue += ` target=\"${he.escape(pTransition.target)}\"`;\n return lReturnValue;\n}\n\nfunction renderRegularTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n const lReturnValue = `\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderActionTransition(\n pTransition: ISCJSONTransition & { action: string },\n pDepth: number,\n): string {\n const lReturnValue = `\n\n ${he.escape(pTransition.action)}\n`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderTransition(\n pTransition: ISCJSONTransition,\n pDepth: number,\n): string {\n if (pTransition.action) {\n return renderActionTransition(\n pTransition as ISCJSONTransition & { action: string },\n pDepth,\n );\n }\n\n return renderRegularTransition(pTransition, pDepth);\n}\n\nfunction renderTransitions(\n pTransitions?: ISCJSONTransition[],\n // @ts-expect-error Yes. pDepth follows optional parameter. So What?\n pDepth: number,\n): string {\n return (pTransitions ?? [])\n .map((pTransition) => renderTransition(pTransition, pDepth))\n .join(\"\");\n}\n\nfunction renderSimpleTag(\n pOnExit: string,\n pTag: string,\n pDepth: number,\n): string {\n const lReturnValue = `\n<${pTag}>${he.escape(pOnExit)}`;\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnEntries(pOnEntries?: string[], pDepth: number): string {\n return (pOnEntries ?? [])\n .map((pOnEntry) => renderSimpleTag(pOnEntry, \"onentry\", pDepth))\n .join(\"\");\n}\n\n// @ts-expect-error Yes. pDepth follows optional parameter. So What?\nfunction renderOnExits(pOnExits?: string[], pDepth: number): string {\n return (pOnExits ?? [])\n .map((pOnExit) => renderSimpleTag(pOnExit, \"onexit\", pDepth))\n .join(\"\");\n}\n\nfunction renderStateAttributes(pState: ISCJSONState): string {\n let lReturnValue = ` id=\"${he.escape(pState.id)}\"`;\n if (pState.initial) {\n lReturnValue += ` initial=\"${he.escape(pState.initial)}\"`;\n }\n if (pState.type) {\n lReturnValue += ` type=\"${he.escape(pState.type)}\"`;\n }\n return lReturnValue;\n}\n\nfunction renderState(pState: ISCJSONState, pDepth: number): string {\n let lReturnValue = `\\n<${pState.kind}${renderStateAttributes(pState)}>`;\n // eslint-disable-next-line no-use-before-define -- recursion\n lReturnValue += renderStates(pState.states, pDepth);\n lReturnValue += renderOnEntries(pState.onentries, pDepth);\n lReturnValue += renderOnExits(pState.onexits, pDepth);\n lReturnValue += renderTransitions(pState.transitions, pDepth);\n lReturnValue += `\\n`;\n\n return indentString(lReturnValue, pDepth * INDENT_LENGTH);\n}\n\nfunction renderStates(pStates?: ISCJSONState[], pDepth = 1): string {\n return (pStates ?? []).map((pState) => renderState(pState, pDepth)).join(\"\");\n}\n\nfunction renderInitialAttribute(pInitialString?: string): string {\n return pInitialString ? `initial=\"${pInitialString}\" ` : \"\";\n}\n\nexport default function renderSCXML(pSCJSON: ISCJSONMachine): string {\n return `\n${renderStates(pSCJSON.states)}\n\n`;\n}\n", "import type { StringRenderFunctionType } from \"types/state-machine-cat.mjs\";\nimport ast2scjson from \"../scjson/index.mjs\";\nimport renderFomSCJSON from \"./render-from-scjson.mjs\";\n\nconst renderSCXML: StringRenderFunctionType = (pStateMachine) =>\n renderFomSCJSON(ast2scjson(pStateMachine));\n\nexport default renderSCXML;\n", "import type {\n OutputType,\n RenderFunctionType,\n StringRenderFunctionType,\n} from \"types/state-machine-cat.mjs\";\nimport smcatRendererAsImported from \"./smcat.mjs\";\nimport renderDot from \"./dot/index.mjs\";\nimport svg from \"./vector/vector-with-wasm.mjs\";\nimport scjson from \"./scjson/index.mjs\";\nimport scxml from \"./scxml/index.mjs\";\n\n// tsc doesn't recognize the function that smcat/index.js exports as\n// StringRenderFunctionType, so we hack around it\nconst smcat = smcatRendererAsImported as StringRenderFunctionType;\n\nexport default function getRenderFunction(\n pOutputType: OutputType,\n): RenderFunctionType {\n const lOutputType2RenderFunctionMap: Map =\n // @ts-expect-error - now renderDot is typed, typescript seems to have an issue\n // with it. Works perfectly fine, though, so we're ignoring it for now.\n new Map([\n [\"smcat\", smcat],\n [\"dot\", renderDot],\n [\"svg\", svg],\n [\"oldsvg\", svg],\n [\"scjson\", scjson],\n [\"scxml\", scxml],\n ]);\n\n return lOutputType2RenderFunctionMap.get(pOutputType) ?? ((pX) => pX);\n}\n", "// generated by tools/get-version.mts - edits will be overwritten\nexport const version = \"12.0.20\";\n", "/* eslint-disable budapestian/global-constant-pattern */\nimport type {\n IAllowedValues,\n IRenderOptions,\n IStateMachine,\n OutputType,\n} from \"types/state-machine-cat.mjs\";\nimport options from \"./options.mjs\";\nimport parse from \"./parse/index.mjs\";\nimport desugar from \"./transform/desugar.mjs\";\nimport getRenderFunction from \"./render/index.mjs\";\nimport { version as _version } from \"./version.mjs\";\n\n/**\n * Translates the input script to an output-script.\n *\n * @throws {Error} if an error occurred and no callback\n * function was passed: the error\n *\n * Options: see https://github.com/sverweij/state-machine-cat/docs/api.md\n *\n */\nexport function render(\n pScript: string | IStateMachine,\n pOptions: IRenderOptions,\n): string {\n const lOptions = pOptions ?? {};\n const lStateMachine = parse.getAST(pScript, lOptions);\n const lDesugar = options.getOptionValue(lOptions, \"desugar\");\n\n return getRenderFunction(\n options.getOptionValue(lOptions, \"outputType\") as OutputType,\n )(lDesugar ? desugar(lStateMachine) : lStateMachine, lOptions);\n}\n\n/**\n * The current (semver compliant) version number string of\n * state machine cat\n */\nexport const version: string = _version;\n\n/**\n * Returns an object with each of the options you can pass to\n * the render function\n * - the default value\n * - the possible values in an array of objects, each of which\n * has the properties:\n * - name: the value\n */\nexport function getAllowedValues(): IAllowedValues {\n return options.getAllowedValues();\n}\n\nexport default {\n render,\n version,\n getAllowedValues,\n};\n", "import smcat from \"../src/index.mjs\";\n\nconst MIME2LANG = Object.freeze({\n \"text/x-smcat\": \"smcat\",\n \"text/x-scxml\": \"scxml\",\n \"text/x-smcat-json\": \"json\",\n});\n\nfunction getResponseStatus(pResponse) {\n if (pResponse.ok) {\n return Promise.resolve(pResponse);\n } else {\n return Promise.reject(new Error(pResponse.statusText));\n }\n}\n\nfunction getResponseText(pResponse) {\n return pResponse.text();\n}\n\nfunction getScriptSource(pScript) {\n const lSourceURL = pScript.getAttribute(\"src\");\n if (lSourceURL) {\n return fetch(lSourceURL).then(getResponseStatus).then(getResponseText);\n }\n // when there's no \"src\" attribute, return the textContent\n // (in a Promise to have a consistent interface)\n return new Promise((pResolve, pReject) => {\n if (pScript.textContent && pScript.textContent.length > 0) {\n pResolve(pScript.textContent);\n } else {\n pReject(new Error(\"ERROR: this element doesn't contain any text\"));\n }\n });\n}\n\nfunction renderPre(pString) {\n let lReturnValue = document.createElement(\"pre\");\n lReturnValue.textContent = pString;\n return lReturnValue;\n}\n\nfunction renderCodeError(pString) {\n const lReturnValue = document.createElement(\"code\");\n lReturnValue.setAttribute(\"style\", \"color:red\");\n lReturnValue.textContent = pString;\n return lReturnValue;\n}\n\nfunction renderInElement(pSource, pOptions) {\n let lRenderedString = smcat.render(pSource, pOptions);\n\n switch (pOptions.outputType) {\n case \"json\":\n case \"scjson\": {\n return renderPre(JSON.stringify(lRenderedString, null, \" \"));\n }\n case \"svg\": {\n return new DOMParser().parseFromString(lRenderedString, \"image/svg+xml\")\n .documentElement;\n }\n default: {\n return renderPre(lRenderedString);\n }\n }\n}\nfunction renderScript(pScriptElement) {\n if (!pScriptElement.dataset.renderedby) {\n pScriptElement.dataset.renderedby = \"state-machine-cat\";\n getScriptSource(pScriptElement)\n .then((pSrc) => {\n pScriptElement.after(\n renderInElement(pSrc, {\n inputType: MIME2LANG[pScriptElement.type],\n outputType:\n pScriptElement.getAttribute(\"data-output-type\") || \"svg\",\n direction: pScriptElement.dataset.direction || \"top-down\",\n engine: pScriptElement.dataset.engine || \"dot\",\n desugar: pScriptElement.dataset.desugar || false,\n dotGraphAttrs: [{ name: \"bgcolor\", value: \"transparent\" }],\n })\n );\n })\n .catch((pErr) => {\n pScriptElement.after(\n renderCodeError(\n `Could not render ${\n pScriptElement.src\n ? `\"${pScriptElement.src}\"`\n : (pScriptElement.textContent && \"provided text content\") ||\n \"(no text content)\"\n }${pErr ? `: ${pErr}` : \"\"}`\n )\n );\n });\n }\n}\n\nfunction observerCallback(pEntries, _pObserver) {\n pEntries.forEach((pEntry) => {\n if (pEntry.isIntersecting) {\n const lScriptElement = pEntry.target.previousElementSibling;\n if (lScriptElement.tagName === \"SCRIPT\") {\n renderScript(lScriptElement);\n }\n }\n });\n}\n\nlet OBSERVER = new IntersectionObserver(observerCallback, { threshold: 1 });\n\nconst SCRIPT_ELEMENTS = [...document.scripts].filter(\n (pScript) => !!MIME2LANG[pScript.type]\n);\n\nSCRIPT_ELEMENTS.forEach((pScriptElement) => {\n // scripts are not visible, hence observing them for visibility\n // is doing nothing. Workaround: insert a marker element right\n // after it that _is_ visible, and observe that.\n const lScriptMarker = document.createElement(\"smcat-marker\");\n pScriptElement.after(lScriptMarker);\n\n OBSERVER.observe(lScriptMarker);\n});\n\n// Observer trickery, of course, is nice, but when you print a page\n// you want all of the graphs to show up anyway. This ensures that\n// that indeed happens at the right time:\nwindow.addEventListener(\"beforeprint\", (_pEvent) => {\n SCRIPT_ELEMENTS.forEach(renderScript);\n});\n\n/* eslint security/detect-object-injection: 0 */\n"], + "mappings": "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AO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,SAAS,KAAK,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,MAAM,OAAO,MAAM,SAAS,KAAK,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAO,OAAO,OAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,GAAK,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,OAAS,UAAU,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,QAAQ,OAAS,QAAQ,SAAS,QAAQ,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,SAAS,OAAS,MAAM,OAAS,MAAM,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,OAAO,OAAS,SAAS,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,OAAS,OAAO,OAAS,KAAK,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,SAAS,KAAK,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,SAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,OAAS,QAAQ,OAAS,QAAQ,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,YAAe,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAO,SAAS,OAAO,SAAS,OAAS,QAAQ,OAAS,QAAQ,OAAO,OAAO,OAAS,OAAO,YAAe,OAAO,YAAe,MAAM,YAAe,OAAO,OAAS,MAAM,OAAS,OAAO,YAAe,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,SAAS,QAAQ,OAAS,UAAU,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,SAAS,OAAS,QAAQ,OAAS,SAAS,OAAS,SAAS,OAAS,KAAK,OAAO,QAAQ,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,KAAK,OAAS,UAAU,OAAS,UAAU,OAAS,KAAK,OAAS,MAAM,OAAS,KAAK,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,UAAU,OAAS,OAAO,OAAS,MAAM,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,MAAM,OAAS,MAAM,OAAS,QAAQ,OAAS,QAAQ,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,SAAS,OAAS,SAAS,OAAS,MAAM,OAAS,MAAM,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,QAAQ,OAAS,OAAO,OAAS,QAAQ,OAAS,QAAQ,EAE5m0BC,EAAc,YACdC,EAAY,CACf,IAAK,SACL,IAAK,QACL,IAAM,SACN,IAAK,OAKL,IAAK,OAKL,IAAK,QACN,EAEIC,EAAqB,kCACrBC,EAA2B,qPAC3BC,EAAc,i8gBACdC,EAAY,CAAC,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,GAAK,SAAS,IAAM,SAAS,IAAM,eAAe,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,MAAQ,OAAO,MAAQ,OAAO,GAAK,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,OAAO,OAAS,OAAO,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,IAAI,IAAM,IAAI,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,SAAS,SAAW,SAAS,KAAO,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,OAAS,SAAS,MAAQ,OAAO,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,GAAK,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,IAAK,cAAgB,SAAS,OAAS,SAAS,SAAW,SAAS,MAAQ,OAAO,MAAQ,OAAO,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,IAAM,IAAI,MAAQ,SAAS,QAAU,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,SAAW,SAAS,MAAQ,SAAS,SAAW,SAAS,YAAc,SAAS,UAAY,SAAS,QAAU,SAAS,UAAY,SAAS,UAAY,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,KAAO,SAAS,SAAW,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,WAAa,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,UAAY,SAAS,SAAW,SAAS,QAAU,SAAS,gBAAkB,SAAS,cAAgB,SAAS,SAAW,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,aAAe,SAAS,YAAc,SAAS,cAAgB,SAAS,kBAAoB,SAAS,kBAAoB,SAAS,mBAAqB,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,UAAU,QAAU,eAAe,KAAO,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,QAAU,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,OAAO,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,KAAK,MAAQ,SAAS,SAAW,SAAS,KAAO,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,qBAAuB,SAAS,KAAO,eAAe,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO,QAAU,OAAO,QAAU,SAAS,KAAO,OAAO,UAAY,OAAO,UAAY,OAAO,IAAM,YAAe,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,UAAY,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,gBAAkB,SAAS,iBAAmB,SAAS,WAAa,SAAS,YAAc,SAAS,YAAc,SAAS,UAAY,SAAS,SAAW,OAAO,SAAW,SAAS,YAAc,SAAS,WAAa,SAAS,YAAc,SAAS,KAAO,SAAS,KAAO,SAAS,SAAW,SAAS,OAAS,SAAS,QAAU,SAAS,yBAA2B,SAAS,sBAAwB,SAAS,gBAAkB,SAAS,MAAQ,SAAS,SAAW,SAAS,MAAQ,IAAI,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,MAAQ,IAAI,OAAS,IAAI,KAAO,SAAS,OAAS,SAAS,WAAa,SAAS,UAAY,SAAS,KAAO,SAAS,QAAU,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,gBAAkB,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,UAAY,SAAS,KAAO,OAAO,KAAO,OAAO,OAAS,SAAS,gCAAkC,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,IAAM,SAAS,IAAM,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,eAAe,OAAS,SAAS,QAAU,SAAS,YAAc,SAAS,YAAc,SAAS,SAAW,SAAS,WAAa,SAAS,OAAS,OAAO,eAAiB,SAAS,gBAAkB,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,GAAK,SAAS,GAAK,SAAS,QAAU,SAAS,MAAQ,SAAS,SAAW,SAAS,QAAU,SAAS,IAAM,OAAO,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,iBAAmB,OAAO,eAAiB,SAAS,uBAAyB,SAAS,iBAAmB,IAAI,iBAAmB,SAAS,KAAO,SAAS,QAAU,SAAS,QAAU,SAAS,YAAc,SAAS,MAAQ,SAAS,IAAM,OAAO,cAAgB,SAAS,QAAU,SAAS,MAAQ,SAAS,IAAM,OAAO,OAAS,OAAO,cAAgB,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,IAAI,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,IAAM,OAAO,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,QAAU,SAAS,UAAY,SAAS,eAAiB,SAAS,sBAAwB,SAAS,UAAY,OAAO,gBAAkB,SAAS,gBAAkB,SAAS,qBAAuB,SAAS,cAAgB,SAAS,oBAAsB,SAAS,yBAA2B,SAAS,qBAAuB,SAAS,iBAAmB,SAAS,eAAiB,SAAS,cAAgB,SAAS,kBAAoB,SAAS,kBAAoB,SAAS,UAAY,SAAS,UAAY,SAAS,UAAY,SAAS,aAAe,SAAS,iBAAmB,SAAS,UAAY,SAAS,eAAiB,SAAS,gBAAkB,SAAS,iBAAmB,SAAS,oBAAsB,SAAS,kBAAoB,SAAS,eAAiB,SAAS,kBAAoB,SAAS,mBAAqB,SAAS,gBAAkB,SAAS,mBAAqB,SAAS,QAAU,SAAS,aAAe,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,SAAS,SAAW,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,OAAO,MAAQ,OAAO,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,MAAQ,SAAS,IAAM,YAAe,IAAM,YAAe,GAAK,SAAS,OAAS,OAAO,OAAS,OAAO,IAAM,SAAS,OAAS,SAAS,GAAK,SAAS,QAAU,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,iBAAmB,SAAS,OAAS,SAAS,qBAAuB,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,MAAQ,SAAS,WAAa,SAAS,YAAc,SAAS,MAAQ,SAAS,OAAS,IAAI,WAAa,SAAS,OAAS,SAAS,YAAc,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,SAAS,KAAO,IAAI,MAAQ,SAAS,OAAS,SAAS,YAAc,SAAS,aAAe,SAAS,aAAe,SAAS,cAAgB,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,kBAAoB,SAAS,sBAAwB,SAAS,MAAQ,KAAK,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,WAAa,SAAS,SAAW,SAAS,OAAS,OAAO,OAAS,SAAS,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,GAAK,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,eAAe,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,GAAK,SAAS,GAAK,SAAS,IAAM,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,MAAQ,IAAI,aAAe,SAAS,iBAAmB,SAAS,iBAAmB,SAAS,eAAiB,SAAS,YAAc,SAAS,kBAAoB,SAAS,aAAe,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,IAAI,GAAK,SAAS,GAAK,IAAI,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,UAAY,SAAS,WAAa,SAAS,QAAU,SAAS,OAAS,SAAS,UAAY,eAAe,KAAO,eAAe,MAAQ,SAAS,OAAS,SAAS,KAAO,OAAO,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,MAAQ,SAAS,IAAM,IAAI,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,SAAS,aAAe,SAAS,SAAW,SAAS,SAAW,SAAS,MAAQ,SAAS,OAAS,SAAS,cAAgB,SAAS,eAAiB,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,eAAiB,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,aAAe,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,GAAK,SAAS,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO,IAAM,SAAS,IAAM,YAAe,IAAM,SAAS,OAAS,OAAO,OAAS,OAAO,GAAK,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,WAAa,SAAS,SAAW,SAAS,SAAW,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,QAAU,SAAS,GAAK,SAAS,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,aAAe,SAAS,SAAW,SAAS,QAAU,SAAS,eAAiB,SAAS,eAAiB,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,OAAO,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,GAAK,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,OAAO,KAAO,OAAO,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,WAAa,SAAS,MAAQ,OAAO,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,eAAe,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,IAAI,OAAS,IAAI,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,IAAI,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,SAAS,GAAK,SAAS,GAAK,SAAS,iBAAmB,SAAS,UAAY,SAAS,UAAY,SAAS,UAAY,SAAS,aAAe,SAAS,oBAAsB,SAAS,cAAgB,SAAS,YAAc,SAAS,kBAAoB,SAAS,kBAAoB,SAAS,eAAiB,SAAS,kBAAoB,SAAS,UAAY,SAAS,gBAAkB,SAAS,cAAgB,SAAS,eAAiB,SAAS,eAAiB,SAAS,eAAiB,SAAS,eAAiB,SAAS,gBAAkB,SAAS,kBAAoB,SAAS,oBAAsB,SAAS,gBAAkB,SAAS,QAAU,SAAS,aAAe,SAAS,cAAgB,SAAS,eAAiB,SAAS,aAAe,SAAS,gBAAkB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,gBAAkB,SAAS,aAAe,SAAS,gBAAkB,SAAS,WAAa,SAAS,cAAgB,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,eAAe,OAAS,SAAS,WAAa,SAAS,QAAU,SAAS,UAAY,SAAS,WAAa,SAAS,iBAAmB,SAAS,cAAgB,SAAS,YAAc,SAAS,QAAU,SAAS,SAAW,SAAS,QAAU,SAAS,eAAiB,SAAS,UAAY,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,GAAK,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,GAAK,SAAS,GAAK,SAAS,MAAQ,SAAS,SAAW,SAAS,WAAa,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,WAAa,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,cAAgB,SAAS,cAAgB,SAAS,cAAgB,SAAS,mBAAqB,SAAS,mBAAqB,SAAS,mBAAqB,SAAS,WAAa,SAAS,eAAiB,SAAS,eAAiB,SAAS,eAAiB,SAAS,cAAgB,SAAS,eAAiB,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,IAAI,eAAiB,SAAS,gBAAkB,SAAS,IAAM,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,IAAI,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,IAAI,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,GAAK,IAAI,GAAK,SAAS,GAAK,IAAI,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,QAAU,SAAS,UAAY,eAAe,KAAO,eAAe,KAAO,OAAO,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,WAAa,SAAS,WAAa,SAAS,SAAW,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,cAAgB,SAAS,YAAc,SAAS,UAAY,SAAS,IAAM,YAAe,IAAM,YAAe,IAAM,SAAS,MAAQ,OAAO,IAAM,SAAS,OAAS,IAAI,OAAS,SAAS,OAAS,OAAO,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,UAAY,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,GAAK,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,GAAK,SAAS,GAAK,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,eAAe,IAAM,SAAS,KAAO,eAAe,MAAQ,eAAe,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,OAAO,MAAQ,eAAe,OAAS,eAAe,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,SAAW,eAAe,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,GAAK,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,eAAe,oBAAsB,SAAS,mBAAqB,SAAS,kBAAoB,SAAS,sBAAwB,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,eAAe,qBAAuB,SAAS,eAAiB,SAAS,QAAU;AAAA,EAAK,OAAS,SAAS,QAAU,SAAS,IAAM,YAAe,IAAM,YAAe,IAAM,SAAS,IAAM,eAAe,KAAO,SAAS,MAAQ,eAAe,UAAY,eAAe,KAAO,eAAe,IAAM,eAAe,MAAQ,SAAS,IAAM,SAAS,IAAM,eAAe,KAAO,SAAS,KAAO,eAAe,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,IAAM,SAAS,KAAO,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,IAAM,SAAS,IAAM,eAAe,WAAa,SAAS,WAAa,SAAS,gBAAkB,SAAS,gBAAkB,SAAS,KAAO,SAAS,MAAQ,eAAe,UAAY,eAAe,KAAO,eAAe,MAAQ,SAAS,IAAM,eAAe,MAAQ,SAAS,IAAM,SAAS,IAAM,eAAe,MAAQ,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,SAAS,QAAU,SAAS,iBAAmB,OAAO,KAAO,YAAe,KAAO,SAAS,IAAM,OAAO,IAAM,SAAS,aAAe,SAAS,UAAY,SAAS,qBAAuB,SAAS,WAAa,SAAS,SAAW,SAAS,cAAgB,eAAe,UAAY,SAAS,WAAa,SAAS,gBAAkB,SAAS,oBAAsB,eAAe,kBAAoB,eAAe,eAAiB,SAAS,qBAAuB,eAAe,gBAAkB,SAAS,gBAAkB,eAAe,aAAe,eAAe,MAAQ,SAAS,SAAW,eAAe,OAAS,eAAe,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,gBAAkB,SAAS,mBAAqB,eAAe,qBAAuB,SAAS,QAAU,SAAS,aAAe,SAAS,eAAiB,SAAS,YAAc,eAAe,kBAAoB,eAAe,aAAe,SAAS,wBAA0B,eAAe,kBAAoB,eAAe,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,YAAc,SAAS,iBAAmB,eAAe,sBAAwB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,oBAAsB,eAAe,sBAAwB,SAAS,gBAAkB,eAAe,qBAAuB,SAAS,kBAAoB,eAAe,uBAAyB,SAAS,UAAY,eAAe,eAAiB,SAAS,YAAc,SAAS,iBAAmB,eAAe,sBAAwB,SAAS,iBAAmB,eAAe,YAAc,eAAe,iBAAmB,SAAS,SAAW,SAAS,cAAgB,SAAS,kBAAoB,SAAS,cAAgB,SAAS,eAAiB,SAAS,KAAO,SAAS,UAAY,SAAS,OAAS,eAAe,MAAQ,eAAe,QAAU,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,eAAe,MAAQ,SAAS,QAAU,eAAe,MAAQ,SAAS,MAAQ,SAAS,OAAS,eAAe,OAAS,eAAe,YAAc,SAAS,YAAc,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,YAAe,KAAO,YAAe,UAAY,SAAS,eAAiB,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,eAAe,QAAU,eAAe,UAAY,SAAS,WAAa,eAAe,MAAQ,SAAS,QAAU,eAAe,KAAO,SAAS,MAAQ,SAAS,MAAQ,eAAe,QAAU,eAAe,UAAY,SAAS,WAAa,eAAe,KAAO,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,cAAgB,SAAS,gBAAkB,SAAS,eAAiB,SAAS,iBAAmB,SAAS,GAAK,SAAS,GAAK,SAAS,IAAM,IAAI,OAAS,SAAS,MAAQ,SAAS,KAAO,eAAe,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,UAAU,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,KAAO,eAAe,KAAO,UAAU,QAAU,eAAe,OAAS,SAAS,QAAU,eAAe,MAAQ,eAAe,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,OAAS,OAAO,OAAS,OAAO,IAAM,SAAS,MAAQ,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,KAAO,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,qBAAuB,SAAS,eAAiB,SAAS,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,MAAQ,SAAS,IAAM,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,OAAO,KAAO,OAAO,OAAS,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,SAAS,GAAK,SAAS,KAAO,SAAS,KAAO,YAAe,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,OAAS,OAAO,OAAS,OAAO,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,KAAO,OAAO,KAAO,OAAO,MAAQ,SAAS,QAAU,SAAS,UAAY,SAAS,YAAc,SAAS,gBAAkB,SAAS,IAAM,SAAS,KAAO,OAAO,SAAW,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,IAAI,OAAS,IAAI,OAAS,SAAS,KAAO,SAAS,QAAU,SAAS,IAAM,YAAe,IAAM,YAAe,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,UAAY,SAAS,IAAM,SAAS,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,KAAO,IAAI,SAAW,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,UAAY,OAAO,OAAS,OAAO,QAAU,SAAS,QAAU,SAAS,GAAK,OAAO,cAAgB,SAAS,SAAW,SAAS,KAAO,YAAe,KAAO,SAAS,MAAQ,OAAO,GAAK,SAAS,GAAK,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,WAAa,SAAS,YAAc,SAAS,SAAW,SAAS,cAAgB,SAAS,mBAAqB,SAAS,cAAgB,SAAS,OAAS,SAAS,YAAc,SAAS,SAAW,SAAS,SAAW,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,OAAS,SAAS,KAAO,SAAS,QAAU,SAAS,SAAW,SAAS,SAAW,SAAS,SAAW,SAAS,KAAO,SAAS,WAAa,SAAS,aAAe,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,YAAc,SAAS,QAAU,SAAS,MAAQ,IAAI,QAAU,SAAS,KAAO,IAAI,KAAO,IAAI,MAAQ,SAAS,KAAO,eAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,SAAW,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,OAAO,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,UAAY,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,IAAI,OAAS,IAAI,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,IAAI,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,QAAU,SAAS,MAAQ,SAAS,OAAS,SAAS,KAAO,SAAS,GAAK,SAAS,KAAO,SAAS,QAAU,SAAS,SAAW,SAAS,MAAQ,SAAS,KAAO,SAAS,IAAM,OAAO,IAAM,OAAO,eAAiB,SAAS,mBAAqB,SAAS,qBAAuB,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,kBAAoB,SAAS,WAAa,SAAS,WAAa,SAAS,WAAa,SAAS,cAAgB,SAAS,oBAAsB,SAAS,eAAiB,SAAS,aAAe,SAAS,mBAAqB,SAAS,mBAAqB,SAAS,gBAAkB,SAAS,mBAAqB,SAAS,WAAa,SAAS,iBAAmB,SAAS,eAAiB,SAAS,gBAAkB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,gBAAkB,SAAS,SAAW,SAAS,cAAgB,SAAS,eAAiB,SAAS,gBAAkB,SAAS,cAAgB,SAAS,iBAAmB,SAAS,mBAAqB,SAAS,kBAAoB,SAAS,iBAAmB,SAAS,cAAgB,SAAS,iBAAmB,SAAS,YAAc,SAAS,eAAiB,SAAS,KAAO,SAAS,aAAe,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,OAAS,SAAS,WAAa,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,SAAS,OAAS,SAAS,QAAU,SAAS,aAAe,SAAS,KAAO,IAAI,OAAS,SAAS,SAAW,SAAS,MAAQ,SAAS,YAAc,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,IAAI,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,YAAc,SAAS,QAAU,SAAS,GAAK,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,OAAS,SAAS,SAAW,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,KAAO,OAAO,KAAO,IAAI,OAAS,SAAS,SAAW,SAAS,MAAQ,SAAS,KAAO,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,eAAiB,SAAS,eAAiB,SAAS,SAAW,SAAS,cAAgB,SAAS,gBAAkB,SAAS,aAAe,SAAS,IAAM,OAAO,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,YAAc,SAAS,cAAgB,SAAS,OAAS,SAAS,SAAW,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,SAAS,KAAO,SAAS,MAAQ,eAAe,OAAS,SAAS,OAAS,SAAS,IAAM,IAAI,KAAO,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,UAAY,SAAS,KAAO,SAAS,MAAQ,SAAS,OAAS,eAAe,MAAQ,SAAS,OAAS,eAAe,KAAO,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,WAAa,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,WAAa,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,mBAAqB,SAAS,aAAe,SAAS,kBAAoB,SAAS,eAAiB,SAAS,oBAAsB,SAAS,YAAc,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,gBAAkB,SAAS,YAAc,SAAS,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,UAAY,SAAS,YAAc,SAAS,UAAY,SAAS,WAAa,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,WAAa,SAAS,YAAc,SAAS,SAAW,SAAS,cAAgB,SAAS,mBAAqB,SAAS,cAAgB,SAAS,OAAS,SAAS,YAAc,SAAS,SAAW,SAAS,SAAW,SAAS,QAAU,SAAS,SAAW,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,SAAS,QAAU,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,SAAW,SAAS,cAAgB,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,OAAS,SAAS,SAAW,SAAS,UAAY,SAAS,UAAY,SAAS,WAAa,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,QAAU,SAAS,OAAS,SAAS,MAAQ,OAAO,IAAM,IAAK,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,SAAS,UAAY,SAAS,UAAY,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,OAAS,SAAS,YAAc,SAAS,SAAW,SAAS,WAAa,eAAe,OAAS,SAAS,UAAY,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,OAAO,MAAQ,OAAO,MAAQ,SAAS,MAAQ,SAAS,WAAa,SAAS,eAAiB,SAAS,WAAa,SAAS,MAAQ,OAAO,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,KAAO,SAAS,KAAO,SAAS,IAAM,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,QAAU,SAAS,KAAO,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,SAAW,SAAS,aAAe,SAAS,aAAe,SAAS,eAAiB,SAAS,UAAY,SAAS,cAAgB,SAAS,gBAAkB,SAAS,OAAS,SAAS,KAAO,SAAS,SAAW,SAAS,UAAY,SAAS,QAAU,SAAS,MAAQ,SAAS,QAAU,SAAS,SAAW,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,iBAAmB,SAAS,kBAAoB,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,KAAO,SAAS,KAAO,SAAS,SAAW,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,OAAO,MAAQ,OAAO,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,OAAO,SAAW,IAAI,WAAa,SAAS,aAAe,SAAS,iBAAmB,SAAS,MAAQ,SAAS,UAAY,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,QAAU,SAAS,QAAU,SAAS,QAAU,SAAS,WAAa,SAAS,iBAAmB,SAAS,YAAc,SAAS,YAAc,SAAS,YAAc,SAAS,cAAgB,SAAS,cAAgB,SAAS,eAAiB,SAAS,MAAQ,SAAS,eAAiB,SAAS,gBAAkB,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,QAAU,SAAS,QAAU,SAAS,MAAQ,SAAS,WAAa,SAAS,WAAa,SAAS,OAAS,SAAS,SAAW,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,OAAO,KAAO,OAAO,QAAU,SAAS,OAAS,SAAS,WAAa,SAAS,SAAW,SAAS,WAAa,SAAS,OAAS,SAAS,MAAQ,SAAS,UAAY,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,SAAW,SAAS,aAAe,eAAe,cAAgB,eAAe,aAAe,eAAe,cAAgB,eAAe,SAAW,SAAS,gBAAkB,SAAS,iBAAmB,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,OAAS,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,IAAI,OAAS,SAAS,KAAO,IAAI,KAAO,SAAS,YAAc,SAAS,aAAe,IAAI,kBAAoB,SAAS,cAAgB,SAAS,cAAgB,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,MAAQ,eAAe,MAAQ,eAAe,KAAO,YAAe,KAAO,YAAe,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,eAAe,OAAS,eAAe,OAAS,eAAe,OAAS,eAAe,OAAS,SAAS,QAAU,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,YAAe,IAAM,YAAe,KAAO,YAAe,KAAO,YAAe,GAAK,SAAS,GAAK,SAAS,OAAS,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,MAAQ,SAAS,KAAO,SAAS,MAAQ,SAAS,IAAM,YAAe,IAAM,YAAe,MAAQ,SAAS,MAAQ,SAAS,GAAK,SAAS,GAAK,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,MAAQ,SAAS,KAAO,YAAe,KAAO,YAAe,OAAS,SAAS,OAAS,SAAS,MAAQ,SAAS,KAAO,SAAS,OAAS,SAAS,OAAS,OAAO,OAAS,OAAO,KAAO,SAAS,KAAO,SAAS,MAAQ,SAAS,MAAQ,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,OAAO,IAAM,YAAe,IAAM,YAAe,KAAO,SAAS,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,YAAe,KAAO,SAAS,KAAO,SAAS,KAAO,OAAO,KAAO,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,OAAS,SAAS,IAAM,SAAS,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,OAAS,SAAS,eAAiB,SAAS,KAAO,SAAS,KAAO,SAAS,IAAM,YAAe,IAAM,SAAS,KAAO,SAAS,KAAO,SAAS,QAAU,SAAS,KAAO,YAAe,KAAO,SAAS,KAAO,YAAe,KAAO,YAAe,IAAM,SAAS,KAAO,QAAQ,EACh9uCC,EAAkB,CAAC,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,IAAI,IAAM,IAAI,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,IAAM,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,GAAK,IAAI,GAAK,IAAI,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,MAAQ,OAAO,GAAK,IAAI,GAAK,IAAI,KAAO,OAAO,MAAQ,OAAO,OAAS,OAAO,KAAO,OAAO,IAAM,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,OAAS,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,MAAQ,OAAO,KAAO,IAAI,KAAO,IAAI,MAAQ,OAAO,IAAM,OAAO,IAAM,OAAO,KAAO,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,KAAO,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,MAAQ,OAAO,MAAQ,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,OAAO,KAAO,OAAO,KAAO,OAAO,OAAS,OAAO,OAAS,OAAO,IAAM,OAAO,KAAO,MAAM,EAC9hDC,EAAmB,CAAC,EAAI,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,SAAS,IAAM,QAAQ,EACrbC,EAA6B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,OAAO,EAI7pBC,EAAqB,OAAO,aAE5BC,EAAS,CAAC,EACVC,EAAiBD,EAAO,eACxBE,EAAM,SAASF,EAAQG,GAAc,CACxC,OAAOF,EAAe,KAAKD,EAAQG,EAAY,CAChD,EAEIC,EAAW,SAASC,EAAOC,GAAO,CAGrC,QAFIC,GAAQ,GACRC,GAASH,EAAM,OACZ,EAAEE,GAAQC,IAChB,GAAIH,EAAME,EAAK,GAAKD,GACnB,MAAO,GAGT,MAAO,EACR,EAEIG,GAAQ,SAASC,EAASC,GAAU,CACvC,GAAI,CAACD,EACJ,OAAOC,GAER,IAAIC,GAAS,CAAC,EACVC,GACJ,IAAKA,MAAOF,GAGXC,GAAOC,EAAG,EAAIX,EAAIQ,EAASG,EAAG,EAAIH,EAAQG,EAAG,EAAIF,GAASE,EAAG,EAE9D,OAAOD,EACR,EAGIE,GAAoB,SAASC,EAAWC,GAAQ,CACnD,IAAIC,GAAS,GACb,OAAKF,GAAa,OAAUA,GAAa,OAAWA,EAAY,SAK3DC,IACHE,EAAW,2DAA2D,EAEhE,UAEJhB,EAAIL,EAAkBkB,CAAS,GAC9BC,IACHE,EAAW,gCAAgC,EAErCrB,EAAiBkB,CAAS,IAE9BC,IAAUZ,EAASN,EAA4BiB,CAAS,GAC3DG,EAAW,gCAAgC,EAExCH,EAAY,QACfA,GAAa,MACbE,IAAUlB,EAAmBgB,IAAc,GAAK,KAAQ,KAAM,EAC9DA,EAAY,MAASA,EAAY,MAElCE,IAAUlB,EAAmBgB,CAAS,EAC/BE,GACR,EAEIE,GAAY,SAASJ,EAAW,CACnC,MAAO,MAAQA,EAAU,SAAS,EAAE,EAAE,YAAY,EAAI,GACvD,EAEIK,EAAY,SAASL,EAAW,CACnC,MAAO,KAAOA,EAAY,GAC3B,EAEIG,EAAa,SAASG,EAAS,CAClC,MAAM,MAAM,gBAAkBA,CAAO,CACtC,EAIIC,GAAS,SAASC,EAAQb,GAAS,CACtCA,GAAUD,GAAMC,GAASY,GAAO,OAAO,EACvC,IAAIN,GAASN,GAAQ,OACjBM,IAAUvB,EAAyB,KAAK8B,CAAM,GACjDL,EAAW,sBAAsB,EAElC,IAAIM,GAAmBd,GAAQ,iBAC3Be,GAAqBf,GAAQ,mBAC7BgB,GAAqBhB,GAAQ,mBAC7BiB,GAAkBjB,GAAQ,QAAUU,EAAYD,GAEhDS,GAAkB,SAASC,GAAQ,CACtC,OAAOF,GAAgBE,GAAO,WAAW,CAAC,CAAC,CAC5C,EAEA,OAAIL,IAEHD,EAASA,EAAO,QAAQrC,EAAqB,SAAS2C,GAAQ,CAE7D,OAAIJ,IAAsBvB,EAAIb,EAAWwC,EAAM,EACvC,IAAMxC,EAAUwC,EAAM,EAAI,IAE3BD,GAAgBC,EAAM,CAC9B,CAAC,EAGGJ,KACHF,EAASA,EACP,QAAQ,cAAe,QAAQ,EAC/B,QAAQ,cAAe,QAAQ,EAC/B,QAAQ,gBAAiB,SAAS,GAGjCE,KAEHF,EAASA,EAAO,QAAQnC,EAAqB,SAASmC,GAAQ,CAE7D,MAAO,IAAMlC,EAAUkC,EAAM,EAAI,GAClC,CAAC,IAGQE,IAGLC,KACJH,EAASA,EAAO,QAAQjC,EAAa,SAASiC,GAAQ,CACrD,MAAO,IAAMlC,EAAUkC,EAAM,EAAI,GAClC,CAAC,GAIFA,EAASA,EACP,QAAQ,cAAe,QAAQ,EAC/B,QAAQ,cAAe,QAAQ,EAEjCA,EAASA,EAAO,QAAQnC,EAAqB,SAASmC,GAAQ,CAE7D,MAAO,IAAMlC,EAAUkC,EAAM,EAAI,GAClC,CAAC,GACUG,KAGXH,EAASA,EAAO,QAAQjC,EAAasC,EAAe,GAE9CL,EAEL,QAAQtC,EAAoB,SAAS6C,GAAI,CAEzC,IAAIC,GAAOD,GAAG,WAAW,CAAC,EACtBE,GAAMF,GAAG,WAAW,CAAC,EACrBf,IAAagB,GAAO,OAAU,KAAQC,GAAM,MAAS,MACzD,OAAOL,GAAgBZ,EAAS,CACjC,CAAC,EAGA,QAAQ5B,EAAmByC,EAAe,CAC7C,EAEAN,GAAO,QAAU,CAChB,mBAAsB,GACtB,iBAAoB,GACpB,OAAU,GACV,mBAAsB,GACtB,QAAY,EACb,EAEA,IAAIW,GAAS,SAASC,EAAMxB,GAAS,CACpCA,GAAUD,GAAMC,GAASuB,GAAO,OAAO,EACvC,IAAIjB,GAASN,GAAQ,OACrB,OAAIM,IAAUxB,EAAmB,KAAK0C,CAAI,GACzChB,EAAW,+BAA+B,EAEpCgB,EAAK,QAAQxC,EAAa,SAASoC,GAAIK,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAI,CAC7E,IAAI3B,GACA4B,GACAC,GACAC,GACAC,GACAC,GAEJ,OAAIZ,IACHW,GAAYX,GAELxC,EAAUmD,EAAS,GAGvBV,IAIHU,GAAYV,GACZW,GAAOV,GACHU,IAAQrC,GAAQ,kBACfM,IAAU+B,IAAQ,KACrB7B,EAAW,yCAAyC,EAE9CY,KAEHd,IACHE,EACC,6DACD,EAGMtB,EAAgBkD,EAAS,GAAKC,IAAQ,MAI3CT,IAEHM,GAAYN,GACZK,GAAYJ,GACRvB,IAAU,CAAC2B,IACdzB,EAAW,uDAAuD,EAEnEH,GAAY,SAAS6B,GAAW,EAAE,EAC3B9B,GAAkBC,GAAWC,EAAM,GAGvCwB,IAEHK,GAAYL,GACZG,GAAYF,GACRzB,IAAU,CAAC2B,IACdzB,EAAW,uDAAuD,EAEnEH,GAAY,SAAS8B,GAAW,EAAE,EAC3B/B,GAAkBC,GAAWC,EAAM,IAKvCA,IACHE,EACC,6DACD,EAEMY,GACR,CAAC,CACF,EAEAG,GAAO,QAAU,CAChB,iBAAoB,GACpB,OAAU,EACX,EAEA,IAAIe,GAAS,SAASzB,EAAQ,CAC7B,OAAOA,EAAO,QAAQjC,EAAa,SAASwC,GAAI,CAE/C,OAAOvC,EAAUuC,EAAE,CACpB,CAAC,CACF,EAIImB,EAAK,CACR,QAAW,QACX,OAAU3B,GACV,OAAUW,GACV,OAAUe,GACV,SAAYf,EACb,EAIA,GACC,OAAO,QAAU,YACjB,OAAO,OAAO,KAAO,UACrB,OAAO,IAEP,OAAO,UAAW,CACjB,OAAOgB,CACR,CAAC,UACSnE,GAAe,CAACA,EAAY,SACtC,GAAIC,EACHA,EAAW,QAAUkE,MAErB,SAASpC,MAAOoC,EACf/C,EAAI+C,EAAIpC,EAAG,IAAM/B,EAAY+B,EAAG,EAAIoC,EAAGpC,EAAG,QAI5ChC,EAAK,GAAKoE,CAGZ,GAAEtE,EAAI,ICnVN,IAAMuE,GAAiC,OAAO,OAAO,CACnD,UAAW,CACT,QAAS,QACT,OAAQ,CAAC,CAAE,KAAM,OAAQ,EAAG,CAAE,KAAM,MAAO,EAAG,CAAE,KAAM,OAAQ,CAAC,CACjE,EACA,WAAY,CACV,QAAS,MACT,OAAQ,CACN,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,MAAO,EACf,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,IAAK,EACb,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,QAAS,EACjB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,KAAM,CAChB,CACF,EACA,OAAQ,CACN,QAAS,MACT,OAAQ,CACN,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,KAAM,EACd,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,OAAQ,EAChB,CAAE,KAAM,OAAQ,CAClB,CACF,EACA,UAAW,CACT,QAAS,WACT,OAAQ,CACN,CAAE,KAAM,UAAW,EACnB,CAAE,KAAM,YAAa,EACrB,CAAE,KAAM,YAAa,EACrB,CAAE,KAAM,YAAa,CACvB,CACF,EACA,QAAS,CACP,QAAS,GACT,OAAQ,CAAC,CAAE,KAAM,EAAK,EAAG,CAAE,KAAM,EAAM,CAAC,CAC1C,CACF,CAAC,EAEM,SAASC,GACdC,EACAC,EACkB,CAElB,OAAOD,IAAWC,CAAW,GAAKH,GAAeG,CAAW,EAAE,OAChE,CAEO,SAASC,IAAmC,CACjD,OAAOJ,EACT,CAEA,IAAOK,GAAQ,CACb,iBAAAD,GACA,eAAAH,EACF,ECxEA,IAAAK,GAAgB,WCAT,IAAMC,GAAN,KAAc,CACnBC,GAAQ,EAER,YAAYC,EAAiB,EAAG,CAC9B,KAAKD,GAAQC,CACf,CAEA,MAAe,CAEb,MAAO,EAAE,KAAKD,EAChB,CACF,ECEA,SAASE,GACPC,EACAC,EACAC,EAAkB,GACZ,CACNF,EACG,OAAQG,GAAW,EAAQA,EAAO,YAAa,EAC/C,QAASA,GAAW,CAGf,OAAO,OAAOA,EAAO,aAAc,QAAQ,GAG7CJ,GAAmBI,EAAO,aAAa,OAAQF,EAAME,EAAO,IAAI,CAEpE,CAAC,EAEHH,EAAQ,QAASG,GACfF,EAAK,IAAIE,EAAO,KAAM,CACpB,KAAMA,EAAO,KACb,KAAMA,EAAO,KACb,aAAc,EAAQA,EAAO,aAC7B,OAAQD,CACV,CAAC,CACH,CACF,CAEA,SAASE,GAAmBC,EAA6C,CACvE,IAAIC,EAA8B,CAAC,EAEnC,OAAI,OAAO,OAAOD,EAAe,aAAa,IAG5CC,EAAe,gBAAgBD,EAAc,WAAW,GAEtD,OAAO,OAAOA,EAAe,QAAQ,GACvCA,EAAc,OACX,OAAQF,GAAW,EAAQA,EAAO,YAAa,EAC/C,QAASA,GAAW,CACnBG,EAAeA,EAAa,OAG1BF,GAAmBD,EAAO,YAAY,CACxC,CACF,CAAC,EAEEG,CACT,CAEA,IAAqBC,GAArB,KAAuC,CACrCC,GACAC,GAEA,YAAYJ,EAA8B,CACxC,KAAKI,GAAmB,IAAI,IAC5BV,GAAmBM,EAAc,QAAU,CAAC,EAAG,KAAKI,EAAgB,EACpE,KAAKD,GAAwBJ,GAAmBC,CAAa,CAC/D,CAEA,IAAI,sBAAsC,CACxC,OAAO,KAAKG,EACd,CAEA,gBAAgBE,EAA4C,CAC1D,OAAO,KAAKD,GAAiB,IAAIC,CAAK,CACxC,CAEA,kBAAkBC,EAA4B,CAC5C,OAAO,MAAM,KAAK,KAAKF,GAAiB,OAAO,CAAC,EAAE,OAAQN,GACxDQ,EAAO,SAASR,EAAO,IAAI,CAC7B,CACF,CAEA,4BAA4BS,EAAmC,CAC7D,OAAO,KAAKJ,GAAsB,OAC/BK,GACCA,EAAY,OAASD,GACrBC,EAAY,KAAOD,GACnBC,EAAY,OAAS,UACzB,CACF,CAEA,sBAAsBC,EAAuC,CAC3D,OAAO,KAAKN,GAAsB,OAC/BK,GAAgBA,EAAY,OAASC,CACxC,CACF,CAEA,oBAAoBC,EAAqC,CACvD,OAAO,KAAKP,GAAsB,OAC/BK,GAAgBA,EAAY,KAAOE,CACtC,CACF,CAEA,wBAAiC,CAC/B,OAAO,KAAK,IAAI,GAAG,KAAKP,GAAsB,IAAI,CAAC,CAAE,GAAAQ,CAAG,IAAMA,CAAE,CAAC,CACnE,CAEA,0BACEJ,EACAK,EACe,CACf,OAAO,KAAKT,GAAsB,OAC/BK,GACC,CAACI,EAAY,IAAIJ,EAAY,EAAE,GAC/BA,EAAY,OAASD,GACrB,KAAKH,GAAiB,IAAII,EAAY,EAAE,GAAG,SACzC,KAAKJ,GAAiB,IAAIG,CAAU,GAAG,MAC7C,CACF,CACF,ECnHA,IAAMM,GACJ,mDAEIC,GAAa,IAAI,OAAOD,EAAsB,EAEpD,SAASE,GAAYC,EAA4BC,EAAwB,CACvE,OAAOD,EAAiB,SAASC,CAAK,CACxC,CAOA,IAAMC,GAAoC,CACxC,CACE,GAAI,UACJ,UAAW,SACb,EACA,CACE,GAAI,QACJ,UAAW,OACb,EACA,CACE,GAAI,WACJ,UAAW,UACb,EACA,CACE,GAAI,kCACJ,UAAW,aACb,EACA,CACE,GAAI,UACJ,UAAW,SACb,EACA,CACE,GAAI,QACJ,UAAW,QACb,EACA,CACE,GAAI,OACJ,UAAW,UACb,CACF,EAEA,SAASC,GAAQF,EAAe,CAC9B,OAAQG,GAAsCA,EAAO,GAAG,KAAKH,CAAK,CACpE,CAEA,SAASI,GAAaJ,EAA0B,CAC9C,OAAQC,GAAc,KAAKC,GAAQF,CAAK,CAAC,GAAK,CAAE,UAAW,SAAU,GAClE,SACL,CAEA,SAASK,GAAUL,EAAuB,CACxC,MAAO,CACL,KAAMA,EACN,KAAMI,GAAaJ,CAAK,CAC1B,CACF,CAEA,SAASM,GAAYC,EAAyB,CAC5C,MAAO,EAAQA,EAAO,YACxB,CAEA,SAASC,GAAyBC,EAAwC,CACxE,IAAMC,EAAUD,GAAe,QAAU,CAAC,EAE1C,OAAOC,EAAQ,OAAOJ,EAAW,EAAE,OACjC,CAACK,EAAgBC,IACfD,EAAe,OAGbH,GAAyBI,EAAW,YAA6B,CACnE,EACFF,EAAQ,IAAI,CAAC,CAAE,KAAAG,CAAK,IAAMA,CAAI,CAChC,CACF,CAEA,SAASC,GACPL,EACAV,EACU,CACVA,EACEA,GAAoBS,GAAyBC,CAAa,EAE5DA,EAAc,OAASA,GAAe,QAAU,CAAC,EACjD,IAAMM,EAAeN,GAAe,aAAe,CAAC,EAEpD,OAAAA,EAAc,OAAO,OAAOH,EAAW,EAAE,QAASC,GAAW,CAE3DA,EAAO,aAAa,OAASO,GAE3BP,EAAO,aACPR,CACF,CACF,CAAC,EAEDgB,EAAa,QAASC,GAAgB,CAC/BlB,GAAYC,EAAkBiB,EAAY,IAAI,IACjDjB,EAAiB,KAAKiB,EAAY,IAAI,EACtCP,EAAc,OAAO,KAAKJ,GAAUW,EAAY,IAAI,CAAC,GAElDlB,GAAYC,EAAkBiB,EAAY,EAAE,IAC/CjB,EAAiB,KAAKiB,EAAY,EAAE,EACpCP,EAAc,OAAO,KAAKJ,GAAUW,EAAY,EAAE,CAAC,EAEvD,CAAC,EACMP,EAAc,MACvB,CAEA,SAASQ,GACPC,EACAC,EACW,CACX,IAAIC,EAA0B,WAE9B,OAAIF,GAAkB,GAAKC,EAAiB,IAC1CC,EAAe,QAEbF,EAAiB,GAAKC,GAAkB,IAC1CC,EAAe,QAGVA,CACT,CAEA,SAASC,GACPZ,EACAa,EAA8B,IAAIC,GAAkBd,CAAa,EAClD,CAEf,OAAAA,EAAc,OAASA,EAAc,OAAO,IAAKF,GAAW,CAC1D,GAAIA,EAAO,OAAS,YAAc,CAACA,EAAO,kBAAmB,CAC3D,IAAMiB,EAAiBF,EAA4B,oBACjDf,EAAO,IACT,EAAE,OACIkB,EAAiBH,EAA4B,sBACjDf,EAAO,IACT,EAAE,OAEFA,EAAO,KAAOU,GAAiBO,EAAgBC,CAAc,CAC/D,CACA,OAAIlB,EAAO,eACTA,EAAO,aAAec,GACpBd,EAAO,aACPe,CACF,GAEKf,CACT,CAAC,EAEME,CACT,CAEA,SAASiB,GAAWC,EAAmBC,EAA4B,CACjE,OAAOD,EAAU,OAASC,EAAU,IACtC,CAEA,SAASC,GACPC,EACAC,EACA,CACA,OAAOD,EAAO,OAAO,CAACE,EAAkBC,IAAsB,CAC5D,IAAMC,EAAeF,EAAK,UAAWG,GACnCJ,EAAeI,EAAUF,CAAO,CAClC,EAEA,OAAIC,EAAe,IAEjBF,EAAKE,CAAY,EAAID,EACdD,GAEFA,EAAK,OAAOC,CAAO,CAC5B,EAAG,CAAC,CAAC,CACP,CAEA,SAASG,GAA0BC,EAIjC,CAEA,IAAMC,EAA0B,qCAC1BlB,EAAmE,CAAC,EAIpEmB,EAAiCD,EAAwB,KAAKD,CAAO,EACrEG,EAAY,EACZC,EAAgB,EAChBC,EAAa,EAEnB,OAAIH,EAAaC,CAAS,IACxBpB,EAAa,MAAQmB,EAAaC,CAAS,EAAE,KAAK,GAEhDD,EAAaE,CAAa,IAC5BrB,EAAa,KAAOmB,EAAaE,CAAa,EAAE,MAAM,EAAG,EAAE,EAAE,KAAK,GAEhEF,EAAaG,CAAU,IACzBtB,EAAa,OAASmB,EAAaG,CAAU,EAC1C,MAAM,EAAGH,EAAaG,CAAU,EAAE,MAAM,EACxC,KAAK,GAGHtB,CACT,CAEA,SAASuB,GACPC,EACAC,EACAC,EAEAC,EAAmC,QACnC,CACIA,EAAWD,CAAM,IACnBF,EAAQC,CAAS,EAAIC,EAEzB,CAEA,SAASE,GACPJ,EACAC,EACAC,EACA,CAEAH,GAAMC,EAASC,EAAWC,EAASG,GAAmBA,GAAMA,EAAG,OAAS,CAAC,CAC3E,CAEA,SAASC,GAAcC,EAGrB,CACA,IAAMC,EAASvD,GAAW,KAAKsD,CAAkB,EAC3CE,EAAW,EACXC,EAAW,EAEjB,OAAIF,EACK,CACL,KAAMA,EAAOC,CAAQ,EACrB,KAAMD,EAAOE,CAAQ,CACvB,EAEK,CACL,KAAM,WACN,KAAMH,CACR,CACF,CAEA,SAASI,GAAelB,EAAmD,CACzE,OAAOA,EACJ,MAAM,QAAQ,EACd,IAAKc,GAAuBA,EAAmB,KAAK,CAAC,EACrD,IAAID,EAAa,CACtB,CAEA,IAAOM,GAAQ,CACb,UAAAnD,GACA,wBAAAS,GACA,kBAAAO,GACA,aAAAjB,GACA,WAAAsB,GACA,KAAAG,GACA,0BAAAO,GACA,eAAAmB,GACA,MAAAZ,GACA,cAAAK,EACF,EC5QA,SAASS,GAAaC,EAAOC,EAAQ,CACnC,SAASC,GAAI,CAAE,KAAK,YAAcF,CAAO,CACzCE,EAAE,UAAYD,EAAO,UACrBD,EAAM,UAAY,IAAIE,CACxB,CAEA,SAASC,GAAgBC,EAASC,EAAUC,EAAOC,EAAU,CAC3D,IAAIC,EAAO,MAAM,KAAK,KAAMJ,CAAO,EAEnC,OAAI,OAAO,gBACT,OAAO,eAAeI,EAAML,GAAgB,SAAS,EAEvDK,EAAK,SAAWH,EAChBG,EAAK,MAAQF,EACbE,EAAK,SAAWD,EAChBC,EAAK,KAAO,cACLA,CACT,CAEAT,GAAaI,GAAiB,KAAK,EAEnC,SAASM,GAAWC,EAAKC,EAAcC,EAAW,CAEhD,OADAA,EAAYA,GAAa,IACrBF,EAAI,OAASC,EAAuBD,GACxCC,GAAgBD,EAAI,OACpBE,GAAaA,EAAU,OAAOD,CAAY,EACnCD,EAAME,EAAU,MAAM,EAAGD,CAAY,EAC9C,CAEAR,GAAgB,UAAU,OAAS,SAASU,EAAS,CACnD,IAAIH,EAAM,UAAY,KAAK,QAC3B,GAAI,KAAK,SAAU,CACjB,IAAII,EAAM,KACNC,EACJ,IAAKA,EAAI,EAAGA,EAAIF,EAAQ,OAAQE,IAC9B,GAAIF,EAAQE,CAAC,EAAE,SAAW,KAAK,SAAS,OAAQ,CAC9CD,EAAMD,EAAQE,CAAC,EAAE,KAAK,MAAM,aAAa,EACzC,KACF,CAEF,IAAIC,EAAI,KAAK,SAAS,MAClBC,EAAY,KAAK,SAAS,QAAW,OAAO,KAAK,SAAS,OAAO,QAAW,WAC5E,KAAK,SAAS,OAAO,OAAOD,CAAC,EAC7BA,EACAE,EAAM,KAAK,SAAS,OAAS,IAAMD,EAAS,KAAO,IAAMA,EAAS,OACtE,GAAIH,EAAK,CACP,IAAIK,EAAI,KAAK,SAAS,IAClBC,EAASX,GAAW,GAAIQ,EAAS,KAAK,SAAS,EAAE,OAAQ,GAAG,EAC5DI,EAAOP,EAAIE,EAAE,KAAO,CAAC,EACrBM,EAAON,EAAE,OAASG,EAAE,KAAOA,EAAE,OAASE,EAAK,OAAS,EACpDE,EAAUD,EAAON,EAAE,QAAW,EAClCN,GAAO;AAAA,OAAYQ,EAAM;AAAA,EACnBE,EAAS;AAAA,EACTH,EAAS,KAAO,MAAQI,EAAO;AAAA,EAC/BD,EAAS,MAAQX,GAAW,GAAIO,EAAE,OAAS,EAAG,GAAG,EACjDP,GAAW,GAAIc,EAAQ,GAAG,CAClC,MACEb,GAAO;AAAA,MAAWQ,CAEtB,CACA,OAAOR,CACT,EAEAP,GAAgB,aAAe,SAASE,EAAUC,EAAO,CACvD,IAAIkB,EAA2B,CAC7B,QAAS,SAASC,EAAa,CAC7B,MAAO,IAAOC,EAAcD,EAAY,IAAI,EAAI,GAClD,EAEA,MAAO,SAASA,EAAa,CAC3B,IAAIE,EAAeF,EAAY,MAAM,IAAI,SAASG,EAAM,CACtD,OAAO,MAAM,QAAQA,CAAI,EACrBC,EAAYD,EAAK,CAAC,CAAC,EAAI,IAAMC,EAAYD,EAAK,CAAC,CAAC,EAChDC,EAAYD,CAAI,CACtB,CAAC,EAED,MAAO,KAAOH,EAAY,SAAW,IAAM,IAAME,EAAa,KAAK,EAAE,EAAI,GAC3E,EAEA,IAAK,UAAW,CACd,MAAO,eACT,EAEA,IAAK,UAAW,CACd,MAAO,cACT,EAEA,MAAO,SAASF,EAAa,CAC3B,OAAOA,EAAY,WACrB,CACF,EAEA,SAASK,EAAIC,EAAI,CACf,OAAOA,EAAG,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY,CACnD,CAEA,SAASL,EAAcV,EAAG,CACxB,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,KAAO,KAAM,EACrB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,eAAyB,SAASe,EAAI,CAAE,MAAO,OAASD,EAAIC,CAAE,CAAG,CAAC,EAC1E,QAAQ,wBAAyB,SAASA,EAAI,CAAE,MAAO,MAASD,EAAIC,CAAE,CAAG,CAAC,CAC/E,CAEA,SAASF,EAAYb,EAAG,CACtB,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,KAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,eAAyB,SAASe,EAAI,CAAE,MAAO,OAASD,EAAIC,CAAE,CAAG,CAAC,EAC1E,QAAQ,wBAAyB,SAASA,EAAI,CAAE,MAAO,MAASD,EAAIC,CAAE,CAAG,CAAC,CAC/E,CAEA,SAASC,EAAoBP,EAAa,CACxC,OAAOD,EAAyBC,EAAY,IAAI,EAAEA,CAAW,CAC/D,CAEA,SAASQ,EAAiB5B,EAAU,CAClC,IAAI6B,EAAe7B,EAAS,IAAI2B,CAAmB,EAC/CG,EAAGC,EAIP,GAFAF,EAAa,KAAK,EAEdA,EAAa,OAAS,EAAG,CAC3B,IAAKC,EAAI,EAAGC,EAAI,EAAGD,EAAID,EAAa,OAAQC,IACtCD,EAAaC,EAAI,CAAC,IAAMD,EAAaC,CAAC,IACxCD,EAAaE,CAAC,EAAIF,EAAaC,CAAC,EAChCC,KAGJF,EAAa,OAASE,CACxB,CAEA,OAAQF,EAAa,OAAQ,CAC3B,IAAK,GACH,OAAOA,EAAa,CAAC,EAEvB,IAAK,GACH,OAAOA,EAAa,CAAC,EAAI,OAASA,EAAa,CAAC,EAElD,QACE,OAAOA,EAAa,MAAM,EAAG,EAAE,EAAE,KAAK,IAAI,EACtC,QACAA,EAAaA,EAAa,OAAS,CAAC,CAC5C,CACF,CAEA,SAASG,EAAc/B,EAAO,CAC5B,OAAOA,EAAQ,IAAOoB,EAAcpB,CAAK,EAAI,IAAO,cACtD,CAEA,MAAO,YAAc2B,EAAiB5B,CAAQ,EAAI,QAAUgC,EAAc/B,CAAK,EAAI,SACrF,EAEA,SAASgC,GAAUC,EAAOC,EAAS,CACjCA,EAAUA,IAAY,OAAYA,EAAU,CAAC,EAE7C,IAAIC,EAAa,CAAC,EACdC,EAAaF,EAAQ,cAErBG,EAAyB,CAAE,QAASC,EAAiB,EACrDC,EAAwBD,GAExBE,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,IACTC,EAAS,QACTC,EAAS,QACTC,EAAU,QACVC,EAAU,SACVC,EAAU,OACVC,EAAU,UACVC,EAAU,UACVC,EAAU,YACVC,EAAU,QACVC,GAAU,WACVC,GAAU,UACVC,GAAU,cACVC,EAAU,SACVC,EAAU,WACVC,GAAU,OACVC,GAAU,OACVC,GAAU,WACVC,EAAU,QACVC,GAAU,WACVC,EAAU,WACVC,GAAU,KACVC,GAAU,MACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,MACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KACVC,GAAU,IACVC,GAAU,IACVC,GAAU,IACVC,GAAU,MACVC,GAAU,KACVC,GAAU,KACVC,GAAU,KAEVC,GAAS,SACTC,GAAS,mBACTC,GAAS,SACTC,GAAS,QACTC,GAAS,yBACTC,GAAS,SACTC,GAAS,UACTC,GAAS,WAETC,GAASC,GAAqB,cAAc,EAC5CC,GAASC,EAAuB,IAAK,EAAK,EAC1CC,GAASD,EAAuB,IAAK,EAAK,EAC1CE,GAASJ,GAAqB,OAAO,EACrCK,GAASH,EAAuB,IAAK,EAAK,EAC1CI,GAASJ,EAAuB,IAAK,EAAK,EAC1CK,GAASL,EAAuB,IAAK,EAAK,EAC1CM,GAASN,EAAuB,IAAK,EAAK,EAC1CO,GAASP,EAAuB,IAAK,EAAK,EAC1CQ,GAASV,GAAqB,2BAA2B,EACzDW,GAAUX,GAAqB,0BAA0B,EACzDY,GAAUV,EAAuB,IAAK,EAAK,EAC3CW,GAAUb,GAAqB,sBAAsB,EACrDc,GAAUZ,EAAuB,QAAS,EAAI,EAC9Ca,GAAUb,EAAuB,QAAS,EAAI,EAC9Cc,GAAUhB,GAAqB,iBAAiB,EAChDiB,GAAUf,EAAuB,QAAS,EAAI,EAC9CgB,GAAUlB,GAAqB,YAAY,EAC3CmB,GAAUjB,EAAuB,SAAU,EAAI,EAC/CkB,GAAUpB,GAAqB,YAAY,EAC3CqB,EAAUnB,EAAuB,OAAQ,EAAI,EAC7CoB,GAAUtB,GAAqB,iBAAiB,EAChDuB,GAAUrB,EAAuB,UAAW,EAAK,EACjDsB,GAAUtB,EAAuB,UAAW,EAAK,EACjDuB,GAAUvB,EAAuB,YAAa,EAAK,EACnDwB,GAAUxB,EAAuB,QAAS,EAAK,EAC/CyB,GAAUzB,EAAuB,WAAY,EAAK,EAClD0B,GAAU1B,EAAuB,UAAW,EAAK,EACjD2B,EAAU3B,EAAuB,cAAe,EAAK,EACrD4B,GAAU5B,EAAuB,SAAU,EAAK,EAChD6B,GAAU7B,EAAuB,WAAY,EAAK,EAClD8B,GAAU9B,EAAuB,OAAQ,EAAK,EAC9C+B,GAAU/B,EAAuB,OAAQ,EAAK,EAC9CgC,GAAUhC,EAAuB,WAAY,EAAK,EAClDiC,GAAUnC,GAAqB,YAAY,EAC3CoC,GAAUpC,GAAqB,gCAAgC,EAC/DqC,GAAUrC,GAAqB,+BAA+B,EAC9DsC,GAAUtC,GAAqB,2BAA2B,EAC1DuC,GAAUvC,GAAqB,sBAAsB,EACrDwC,GAAUxC,GAAqB,mCAAmC,EAClEyC,GAAUvC,EAAuB,QAAS,EAAI,EAC9CwC,GAAU1C,GAAqB,uBAAuB,EACtD2C,GAAUzC,EAAuB,WAAY,EAAK,EAClD0C,GAAU1C,EAAuB,WAAY,EAAK,EAClD2C,GAAU7C,GAAqB,qBAAqB,EACpD8C,GAAU5C,EAAuB,KAAM,EAAK,EAC5C6C,GAAU7C,EAAuB,MAAO,EAAK,EAC7C8C,GAAU9C,EAAuB,KAAM,EAAK,EAC5C+C,GAAU/C,EAAuB,KAAM,EAAK,EAC5CgD,GAAUhD,EAAuB,KAAM,EAAK,EAC5CiD,GAAUjD,EAAuB,KAAM,EAAK,EAC5CkD,GAAUlD,EAAuB,KAAM,EAAK,EAC5CmD,GAAUrD,GAAqB,qBAAqB,EACpDsD,GAAUpD,EAAuB,KAAM,EAAK,EAC5CqD,GAAUrD,EAAuB,MAAO,EAAK,EAC7CsD,GAAUtD,EAAuB,KAAM,EAAK,EAC5CuD,GAAUvD,EAAuB,KAAM,EAAK,EAC5CwD,GAAUxD,EAAuB,KAAM,EAAK,EAC5CyD,GAAUzD,EAAuB,IAAK,EAAK,EAC3C0D,GAAU1D,EAAuB,IAAK,EAAK,EAC3C2D,GAAUC,GAAqB,CAAC,CAAC,IAAK,GAAG,CAAC,EAAG,GAAO,EAAK,EACzDC,GAAU/D,GAAqB,sBAAsB,EACrDgE,GAAU9D,EAAuB,IAAM,EAAK,EAC5C+D,GAAU/D,EAAuB,MAAQ,EAAK,EAC9CgE,GAAUC,GAAmB,EAC7BC,GAAUpE,GAAqB,oBAAoB,EACnDqE,GAAUP,GAAqB,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,IAAK,IAAK,GAAG,EAAG,GAAO,EAAK,EAChGQ,GAAUR,GAAqB,CAAC,IAAK,IAAK,GAAG,EAAG,GAAO,EAAK,EAC5DS,GAAUT,GAAqB,CAAC,IAAK,GAAG,EAAG,GAAO,EAAK,EACvDU,GAAUxE,GAAqB,YAAY,EAC3CyE,GAAUX,GAAqB,CAAC,IAAK,IAAK,IAAK,IAAM,IAAM;AAAA,EAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,GAAM,EAAK,EACtHY,GAAU1E,GAAqB,YAAY,EAC3C2E,GAAUb,GAAqB,CAAC,IAAK,GAAI,EAAG,GAAO,EAAK,EACxDc,GAAU5E,GAAqB,UAAU,EACzC6E,GAAUf,GAAqB,CAAC,KAAM;AAAA,CAAI,EAAG,GAAO,EAAK,EACzDgB,GAAU5E,EAAuB,KAAM,EAAK,EAC5C6E,GAAU7E,EAAuB,KAAM,EAAK,EAC5C8E,GAAU9E,EAAuB,KAAM,EAAK,EAC5C+E,GAAUnB,GAAqB,CAAC,KAAM;AAAA,CAAI,EAAG,GAAM,EAAK,EACxDoB,GAAUlF,GAAqB,SAAS,EAExCmF,GAAS,SAASC,EAAc,CAC9B,OAAAA,EAAa,OAASC,GAAc,wBAAwBD,CAAY,EACjEC,GAAc,kBAAkBD,CAAY,CACvD,EACEE,GAAS,SAASC,EAAQC,EAAa,CACrC,IAAIC,EAAgB,CAAC,EACrB,OAAAJ,GAAc,MAAMI,EAAe,SAAUF,CAAM,EACnDF,GAAc,cAAcI,EAAe,cAAeD,CAAW,EAE9DC,CACT,EACAC,GAAS,SAASC,EAAO,CAAC,OAAOA,CAAK,EACtCC,GAAS,SAASD,EAAO,CAAC,OAAOA,CAAK,EACtCE,GAAS,SAASN,EAAQ,CAC1B,OAAOF,GAAc,KAAKE,EAAO,CAAC,EAAE,OAAOA,EAAO,CAAC,CAAC,EAAGF,GAAc,UAAU,CACjF,EACES,GAAS,SAASC,EAAOC,EAAIC,EAAO,CAAC,OAAOA,CAAK,EACjDC,GAAS,SAASH,EAAOC,EAAIG,EAA2BC,EAAK,CAAC,OAAOA,CAAG,EACxEC,GAAS,SAASN,EAAOC,EAAIG,EAA2BG,EAASC,EAAI,CAAC,OAAOA,CAAG,EAChFC,GAAS,SAAST,EAAOC,EAAIG,EAA2BG,EAASlB,EAAc,CAC3E,IAAIqB,EAASpB,GAAc,UAAUW,CAAE,EACvC,OAACG,GAA6B,CAAC,GAAG,QAChCO,GAAsBrB,GAAc,MAAMoB,EAAQC,EAAmB,KAAMA,EAAmB,KAAK,CACrG,EACArB,GAAc,MAAMoB,EAAQ,qBAAsBN,GAA6B,CAAC,GAAG,KAAKO,GAAsBA,EAAmB,iBAAiB,CAAC,EACnJrB,GAAc,MAAMoB,EAAQ,eAAgBrB,CAAY,EACxDC,GAAc,cAAcoB,EAAQ,OAAQV,CAAK,EAE7CO,GACFjB,GAAc,cACVoB,EACA,UACApB,GAAc,eAAeiB,CAAO,CACxC,EAGKG,CACT,EACFE,GAAS,SAASC,EAAMC,EAAO,CAC7B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEC,GAAU,SAASF,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEE,GAAU,SAASH,EAAM,CACvB,MAAO,CAAC,KAAAA,EAAM,MAAM,EAAI,CAC5B,EACEI,GAAU,SAASJ,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,EAAO,kBAAkB,EAAI,CAC/C,EACEI,GAAU,SAASL,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEM,GAAU,SAASN,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEO,GAAU,SAASP,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEQ,GAAU,SAASR,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACES,GAAU,SAAStB,EAAOuB,EAAOrB,EAAO,CAAC,OAAOA,CAAK,EACrDsB,GAAU,SAASxB,EAAOuB,EAAOE,EAAqBC,EAAK,CAAC,OAAOA,CAAG,EACtEC,GAAU,SAAS3B,EAAOuB,EAAOE,EAAqBG,EAAO,CAC7D,OAAIA,IACAL,EAAM,MAAQK,EACdL,EAAQ,OAAO,OACXA,EACAjC,GAAc,0BAA0BsC,CAAK,CACjD,IAEHH,GAAuB,CAAC,GAAG,QACxBd,GAAsBrB,GAAc,MAAMiC,EAAOZ,EAAmB,KAAMA,EAAmB,KAAK,CACtG,EACArB,GAAc,cAAciC,EAAO,OAAQvB,CAAK,EAEhDuB,EAAM,GAAGpL,EAAQ,QAAQ,KAAK,EACvBoL,CACT,EACEM,GAAU,SAASC,EAAOC,EAAI,CACtB,MAAO,CACH,KAAMD,EACN,GAAIC,CACR,CACJ,EACJC,GAAU,SAASD,EAAID,EAAO,CAC1B,MAAO,CACH,KAAMA,EACN,GAAIC,CACR,CACJ,EACAE,GAAU,SAASpB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEoB,GAAU,SAASrB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEqB,GAAU,SAAStB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEsB,GAAU,SAASvB,EAAMC,EAAO,CAC9B,MAAO,CAAC,KAAAD,EAAM,MAAAC,CAAK,CACvB,EACEuB,GAAU,SAASxB,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACEyB,GAAU,SAASzB,EAAM,CACvB,OAAOA,EAAK,YAAY,CAC5B,EACE0B,GAAU,SAAS1B,EAAM,CACvB,OAAOA,CACX,EACE2B,GAAU,SAASC,EAAK,CACxB,OAAOA,EAAI,KAAK,EAAE,EAAE,KAAK,CAC3B,EACEC,GAAU,SAASC,EAAQ,CAAE,OAAO,WAAWA,EAAO,KAAK,EAAE,CAAC,CAAG,EACjEC,GAAU,SAASD,EAAQ,CAAE,OAAO,SAASA,EAAO,KAAK,EAAE,EAAG,EAAE,CAAG,EACnEE,GAAU,SAASlO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,EAAE,QAAQ,QAAS,GAAI,CAAC,EAC/DmO,GAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,GAAU,SAASpO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,CAAC,EACxCqO,GAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,GAAU,SAAStO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,EAC/CuO,EAAU,SAASvO,EAAG,CAAC,OAAOA,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,EAC/CwO,EAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,EAAU,SAAS,EAAG,CAAC,OAAO,CAAC,EAC/BC,EAAU,SAASC,EAAO,CAAC,OAAOA,EAAM,KAAK,EAAE,CAAC,EAChDC,EAAcpN,EAAQ,YAAc,EACpCqN,EAAeD,EACfE,EAAsB,CAAC,CAAE,KAAM,EAAG,OAAQ,CAAE,CAAC,EAC7CC,EAAiBH,EACjBI,EAAsBxN,EAAQ,qBAAuB,CAAC,EACtDyN,EAAkBzN,EAAQ,gBAAkB,EAE5C0N,EAEJ,GAAI1N,EAAQ,UAAW,CACrB,GAAI,EAAEA,EAAQ,aAAaG,GACzB,MAAM,IAAI,MAAM,kCAAqCH,EAAQ,UAAY,IAAK,EAGhFK,EAAwBF,EAAuBH,EAAQ,SAAS,CAClE,CAEA,SAAS2N,IAAO,CACd,OAAO5N,EAAM,UAAUsN,EAAcD,CAAW,CAClD,CAEA,SAASQ,IAAS,CAChB,OAAOP,CACT,CAEA,SAASQ,IAAQ,CACf,MAAO,CACL,OAAQ3N,EACR,MAAOmN,EACP,IAAKD,CACP,CACF,CAEA,SAASrP,GAAW,CAClB,OAAO+P,GAAoBT,EAAcD,CAAW,CACtD,CAEA,SAASvP,GAASkQ,EAAahQ,EAAU,CACvC,MAAAA,EAAWA,IAAa,OACpBA,EACA+P,GAAoBT,EAAcD,CAAW,EAE3CY,GACJ,CAAClK,GAAqBiK,CAAW,CAAC,EAClChO,EAAM,UAAUsN,EAAcD,CAAW,EACzCrP,CACF,CACF,CAEA,SAASkQ,GAAMrQ,EAASG,EAAU,CAChC,MAAAA,EAAWA,IAAa,OACpBA,EACA+P,GAAoBT,EAAcD,CAAW,EAE3Cc,GAAqBtQ,EAASG,CAAQ,CAC9C,CAEA,SAASiG,EAAuB2J,EAAMQ,EAAY,CAChD,MAAO,CAAE,KAAM,UAAW,KAAMR,EAAM,WAAYQ,CAAW,CAC/D,CAEA,SAASvG,GAAqBwG,EAAOC,EAAUF,EAAY,CACzD,MAAO,CAAE,KAAM,QAAS,MAAOC,EAAO,SAAUC,EAAU,WAAYF,CAAW,CACnF,CAEA,SAASlG,IAAqB,CAC5B,MAAO,CAAE,KAAM,KAAM,CACvB,CAEA,SAASqG,IAAqB,CAC5B,MAAO,CAAE,KAAM,KAAM,CACvB,CAEA,SAASxK,GAAqBiK,EAAa,CACzC,MAAO,CAAE,KAAM,QAAS,YAAaA,CAAY,CACnD,CAEA,SAASQ,GAAsBC,EAAK,CAClC,IAAIC,EAAUnB,EAAoBkB,CAAG,EACjCE,EAEJ,GAAID,EACF,OAAOA,EAEP,GAAID,GAAOlB,EAAoB,OAC7BoB,EAAIpB,EAAoB,OAAS,MAGjC,KADAoB,EAAIF,EACG,CAAClB,EAAoB,EAAEoB,CAAC,GAAG,CASpC,IANAD,EAAUnB,EAAoBoB,CAAC,EAC/BD,EAAU,CACR,KAAMA,EAAQ,KACd,OAAQA,EAAQ,MAClB,EAEOC,EAAIF,GACLzO,EAAM,WAAW2O,CAAC,IAAM,IAC1BD,EAAQ,OACRA,EAAQ,OAAS,GAEjBA,EAAQ,SAGVC,IAGF,OAAApB,EAAoBkB,CAAG,EAAIC,EAEpBA,CAEX,CAEA,SAASX,GAAoBa,EAAUC,EAAQhB,EAAQ,CACrD,IAAIiB,EAAkBN,GAAsBI,CAAQ,EAChDG,EAAgBP,GAAsBK,CAAM,EAE5CG,EAAM,CACR,OAAQ7O,EACR,MAAO,CACL,OAAQyO,EACR,KAAME,EAAgB,KACtB,OAAQA,EAAgB,MAC1B,EACA,IAAK,CACH,OAAQD,EACR,KAAME,EAAc,KACpB,OAAQA,EAAc,MACxB,CACF,EACA,OAAIlB,GAAU1N,GAAe,OAAOA,EAAW,QAAW,aACxD6O,EAAI,MAAQ7O,EAAW,OAAO6O,EAAI,KAAK,EACvCA,EAAI,IAAM7O,EAAW,OAAO6O,EAAI,GAAG,GAE9BA,CACT,CAEA,SAASC,EAASnR,EAAU,CACtBuP,EAAcG,IAEdH,EAAcG,IAChBA,EAAiBH,EACjBI,EAAsB,CAAC,GAGzBA,EAAoB,KAAK3P,CAAQ,EACnC,CAEA,SAASqQ,GAAqBtQ,EAASG,EAAU,CAC/C,OAAO,IAAIJ,GAAgBC,EAAS,KAAM,KAAMG,CAAQ,CAC1D,CAEA,SAASiQ,GAAyBnQ,EAAUC,EAAOC,EAAU,CAC3D,OAAO,IAAIJ,GACTA,GAAgB,aAAaE,EAAUC,CAAK,EAC5CD,EACAC,EACAC,CACF,CACF,CAEA,SAASqC,IAAmB,CAC1B,IAAI6O,EAAIC,EAAIC,EAAIC,EAEhB,OAAAH,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKG,GAAsB,EAC3BF,EAAKC,EAAW,EAChBhC,EAAe4B,EACfA,EAAKhG,GAAOkG,CAAE,EAEPF,CACT,CAEA,SAASK,IAAwB,CAC/B,IAAIL,EAAIC,EAAIC,EAAIC,EAUhB,IARA3B,IACAwB,EAAK7B,EACL8B,EAAKK,GAAgB,EACjBL,IAAOjP,IACTiP,EAAK,MAEPC,EAAK,CAAC,EACNC,EAAKI,GAAoB,EAClBJ,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKI,GAAoB,EAE3B,OAAAnC,EAAe4B,EACfA,EAAK7F,GAAO8F,EAAIC,CAAE,EAClB1B,IACAyB,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnL,EAAM,EAErCoL,CACT,CAEA,SAASM,IAAkB,CACzB,IAAIN,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EA0BxB,IAxBAT,EAAK7B,EACL8B,EAAK9B,EACL+B,EAAK,CAAC,EACNC,EAAKhC,EACLqC,EAAKE,GAAe,EAChBF,IAAOxP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKpP,EACL8M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAASjL,EAAM,GAE1C2L,IAAOzP,GACToN,EAAe+B,EACfA,EAAK5F,GAAOiG,CAAE,IAEdrC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAEAmP,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKhC,EACLqC,EAAKE,GAAe,EAChBF,IAAOxP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKpP,EACL8M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAASjL,EAAM,GAE1C2L,IAAOzP,GACToN,EAAe+B,EACfA,EAAK5F,GAAOiG,CAAE,IAEdrC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAGT,OAAAmP,EAAKhC,EACLqC,EAAKE,GAAe,EAChBF,IAAOxP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKnP,EACL6M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAAS/K,EAAM,GAE1CyL,IAAOzP,GACToN,EAAe+B,EACfA,EAAK1F,GAAO+F,CAAE,IAEdrC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAEHmP,IAAOnP,GACTkP,EAAK,CAACA,EAAIC,CAAE,EACZF,EAAKC,IAEL/B,EAAc8B,EACdA,EAAKjP,GAEHiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAKvF,GAAOuF,CAAE,GAEhBD,EAAKC,EAEED,CACT,CAEA,SAASU,IAAiB,CACxB,IAAIV,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAAIC,GAAIC,GAAIC,GAAKC,GAAKC,GAAKC,GAAKC,GAMhE,IAJA3C,IACAwB,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKkB,GAAc,EACZlB,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKkB,GAAc,EAErB,OAAAlB,EAAKE,EAAW,EAChBD,EAAKkB,GAAoB,EACrBlB,IAAOnP,GACTwP,EAAKJ,EAAW,EAChBK,EAAKtC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpCwC,EAAKpP,EACL4M,MAEAwC,EAAK3P,EACDwN,IAAoB,GAAKuB,EAAS7K,EAAM,GAE1CyL,IAAO3P,GACT4P,GAAKU,GAAmC,EACpCxQ,EAAM,WAAWqN,CAAW,IAAM,IACpC0C,GAAKrP,EACL2M,MAEA0C,GAAK7P,EACDwN,IAAoB,GAAKuB,EAAS5K,EAAM,GAE1C0L,KAAO7P,GACToN,EAAeqC,EACfA,EAAK9F,GAAOsF,EAAIE,EAAIS,EAAE,IAEtBzC,EAAcsC,EACdA,EAAKzP,KAGPmN,EAAcsC,EACdA,EAAKzP,GAEHyP,IAAOzP,IACTyP,EAAK,MAEPE,EAAKP,EAAW,EAChBQ,GAAKzC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpC0C,GAAKpP,EACL0M,MAEA0C,GAAK7P,EACDwN,IAAoB,GAAKuB,EAAS3K,EAAM,GAE1CyL,KAAO7P,GACT8P,GAAKV,EAAW,EAChBW,GAAMQ,GAAgB,EAClBR,KAAQ/P,GACVgQ,GAAMZ,EAAW,EACjBhC,EAAewC,GACfA,GAAK7F,GAAOkF,EAAIE,EAAIM,EAAIM,EAAG,IAE3B5C,EAAcyC,GACdA,GAAK5P,KAGPmN,EAAcyC,GACdA,GAAK5P,GAEH4P,KAAO5P,IACT4P,GAAK,MAEPC,GAAKT,EAAW,EAChBU,GAAK3C,EACDrN,EAAM,WAAWqN,CAAW,IAAM,KACpC4C,GAAMrP,EACNyM,MAEA4C,GAAM/P,EACFwN,IAAoB,GAAKuB,EAAS1K,EAAM,GAE1C0L,KAAQ/P,GACVgQ,GAAMZ,EAAW,EACjBa,GAAMZ,GAAsB,EACxBY,KAAQjQ,GACVkQ,GAAMd,EAAW,EACbtP,EAAM,WAAWqN,CAAW,IAAM,KACpCgD,GAAMxP,EACNwM,MAEAgD,GAAMnQ,EACFwN,IAAoB,GAAKuB,EAASzK,EAAM,GAE1C6L,KAAQnQ,GACVoN,EAAe0C,GACfA,GAAK5F,GAAO+E,EAAIE,EAAIM,EAAIG,GAAIK,EAAG,IAE/B9C,EAAc2C,GACdA,GAAK9P,KAGPmN,EAAc2C,GACdA,GAAK9P,KAGPmN,EAAc2C,GACdA,GAAK9P,GAEH8P,KAAO9P,IACT8P,GAAK,MAEPC,GAAMX,EAAW,EACjBhC,EAAe4B,EACfA,EAAK3E,GAAO4E,EAAIE,EAAIM,EAAIG,GAAIE,EAAE,IAE9B3C,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9K,EAAM,GAGvC+K,CACT,CAEA,SAASsB,IAAqC,CAC5C,IAAItB,EAAIC,EAKR,IAHAzB,IACAwB,EAAK,CAAC,EACNC,EAAKuB,GAAkC,EAChCvB,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAKuB,GAAkC,EAEzC,OAAAhD,IACAyB,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASxK,EAAM,EAErCyK,CACT,CAEA,SAASwB,IAAoC,CAC3C,IAAIxB,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAEhC,OAAApC,IACAwB,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKuB,GAA8C,EAC/CvB,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKe,GAAsB,EACvBf,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKxE,GAAO0E,EAAIS,CAAE,IAElBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKyB,GAA8B,EAC/BzB,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKiB,GAAsB,EACvBjB,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKrE,GAAQuE,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAK2B,GAA+C,EAChD3B,IAAOlP,GACTmP,EAAKC,EAAW,EAChBhC,EAAe4B,EACfA,EAAKpE,GAAQsE,CAAE,IAEf/B,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAK4B,GAA4C,EAC7C5B,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKoB,GAA4C,EAC7CpB,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKnE,GAAQqE,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,MAKbwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASvK,EAAO,GAGxCwK,CACT,CAEA,SAASyB,IAAgD,CACvD,IAAIzB,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMpO,EACvBsM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASpK,EAAO,GAE3CsK,IAAOjP,IACTiP,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMnO,EACvBqM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnK,EAAO,IAG7CqK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKnE,GAAQmE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASrK,EAAO,GAGxCsK,CACT,CAEA,SAAS2B,IAAgC,CACvC,IAAI3B,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMlO,EACvBoM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASjK,EAAO,GAE3CmK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKlE,GAAQkE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASlK,EAAO,GAGxCmK,CACT,CAEA,SAAS6B,IAAiD,CACxD,IAAI7B,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMjO,EACvBmM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS/J,EAAO,GAE3CiK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKjE,GAAQiE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAShK,EAAO,GAGxCiK,CACT,CAEA,SAAS8B,IAA8C,CACrD,IAAI9B,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMhO,EACvBkM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7J,CAAO,GAE3C+J,IAAOjP,IACToN,EAAe4B,EACfC,EAAKhE,GAAQgE,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9J,EAAO,GAGxC+J,CACT,CAEA,SAAS+B,IAA8C,CACrD,IAAI/B,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMjM,GACnC8N,EAAK9N,EACLiM,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS3J,EAAO,GAE3C4J,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMhM,GACnC6N,EAAK7N,EACLgM,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS1J,EAAO,GAE3C2J,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM/L,GACnC4N,EAAK5N,EACL+L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASzJ,EAAO,GAE3C0J,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM9L,GACnC2N,EAAK3N,EACL8L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASxJ,EAAO,GAE3CyJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM7L,IACnC0N,EAAK1N,GACL6L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASvJ,EAAO,GAE3CwJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM5L,IACnCyN,EAAKzN,GACL4L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAStJ,EAAO,GAE3CuJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,EAAE,IAAM3L,IACpCwN,EAAKxN,GACL2L,GAAe,KAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASrJ,CAAO,GAE3CsJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM1L,GACnCuN,EAAKvN,EACL0L,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASpJ,EAAO,GAE3CqJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMzL,GACnCsN,EAAKtN,EACLyL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASnJ,EAAO,GAE3CoJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMxL,IACnCqN,EAAKrN,GACLwL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASlJ,EAAO,GAE3CmJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMvL,IACnCoN,EAAKpN,GACLuL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASjJ,EAAO,GAE3CkJ,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMtL,IACnCmN,EAAKnN,GACLsL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAShJ,EAAO,cAarEyH,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS5J,EAAO,GAGxC6J,CACT,CAEA,SAASO,IAAsB,CAC7B,IAAIP,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAAIC,GAMpC,IAJArC,IACAwB,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKkB,GAAc,EACZlB,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKkB,GAAc,EAErB,OAAAlB,EAAK8B,GAAwB,EACzB9B,IAAOlP,GACTmP,EAAKhC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAKjP,EACL4M,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAS7K,EAAM,GAE1CsL,IAAOxP,GACTyP,EAAKwB,GAAwC,EACzCnR,EAAM,WAAWqN,CAAW,IAAM,IACpCwC,EAAKnP,EACL2M,MAEAwC,EAAK3P,EACDwN,IAAoB,GAAKuB,EAAS5K,EAAM,GAE1CwL,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe+B,EACfA,EAAKjE,GAAQ+D,EAAIC,EAAIO,CAAE,IAEvBtC,EAAcgC,EACdA,EAAKnP,KAGPmN,EAAcgC,EACdA,EAAKnP,GAEHmP,IAAOnP,IACTmP,EAAK,MAEPK,EAAKrC,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKhP,EACL0M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAAS3K,EAAM,GAE1CqL,IAAOzP,GACT2P,EAAKP,EAAW,EAChBQ,GAAKsB,GAA0B,EAC3BtB,KAAO5P,GACT6P,GAAKT,EAAW,EAChBhC,EAAeoC,EACfA,EAAKpE,GAAQ6D,EAAIC,EAAIC,EAAIS,EAAE,IAE3BzC,EAAcqC,EACdA,EAAKxP,KAGPmN,EAAcqC,EACdA,EAAKxP,GAEHwP,IAAOxP,IACTwP,EAAK,MAEH1P,EAAM,WAAWqN,CAAW,IAAM,IACpCsC,EAAKnP,EACL6M,MAEAsC,EAAKzP,EACDwN,IAAoB,GAAKuB,EAAS/K,EAAM,GAE1CyL,IAAOzP,GACToN,EAAe4B,EACfA,EAAKzD,GAAQ0D,EAAIC,EAAIC,EAAIK,CAAE,IAE3BrC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS/I,EAAO,GAGxCgJ,CACT,CAEA,SAASgC,IAA0B,CACjC,IAAIhC,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAEhC,OAAAZ,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKmB,GAAoB,EACrBnB,IAAOlP,GACTmP,EAAKC,EAAW,EAChBI,EAAK2B,GAAuB,EACxB3B,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKU,GAAoB,EACrBV,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKvD,GAAQyD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKmB,GAAoB,EACrBnB,IAAOlP,GACTmP,EAAKC,EAAW,EAChBI,EAAK4B,GAAuB,EACxB5B,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKU,GAAoB,EACrBV,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKpD,GAAQsD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,IAIFgP,CACT,CAEA,SAASiC,IAA0C,CACjD,IAAIjC,EAAIC,EAKR,IAHAzB,IACAwB,EAAK,CAAC,EACNC,EAAKoC,GAAuC,EACrCpC,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAKoC,GAAuC,EAE9C,OAAA7D,IACAyB,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9I,EAAO,EAEtC+I,CACT,CAEA,SAASqC,IAAyC,CAChD,IAAIrC,EAAIC,EAAIC,EAAIC,EAAIK,EAAIC,EAAIE,EAAIC,GAEhC,OAAApC,IACAwB,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKoC,GAAmD,EACpDpC,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKe,GAAsB,EACvBf,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKnD,GAAQqD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKyB,GAA8B,EAC/BzB,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAKiB,GAAsB,EACvBjB,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKlD,GAAQoD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKqC,GAAuC,EACxCrC,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAK6B,GAAwC,EACzC7B,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKjD,GAAQmD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEHgP,IAAOhP,IACTgP,EAAK7B,EACL8B,EAAKG,EAAW,EAChBF,EAAKuC,GAAoD,EACrDvC,IAAOlP,GACTmP,EAAKC,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpCqC,EAAK5O,EACLuM,MAEAqC,EAAKxP,EACDwN,IAAoB,GAAKuB,EAAStK,EAAO,GAE3C+K,IAAOxP,GACTyP,EAAKL,EAAW,EAChBO,EAAK+B,GAAyB,EAC1B/B,IAAO3P,GACT4P,GAAKR,EAAW,EAChBhC,EAAe4B,EACfA,EAAKhD,GAAQkD,EAAIS,CAAE,IAEnBxC,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,MAKbwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7I,EAAO,GAGxC8I,CACT,CAEA,SAASsC,IAAqD,CAC5D,IAAItC,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMnO,EACvBqM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnK,EAAO,GAE3CqK,IAAOjP,IACToN,EAAe4B,EACfC,EAAKhD,GAAQgD,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS5I,EAAO,GAGxC6I,CACT,CAEA,SAASuC,IAAyC,CAChD,IAAIvC,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMhO,EACvBkM,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7J,CAAO,GAE3C+J,IAAOjP,IACToN,EAAe4B,EACfC,EAAK/C,GAAQ+C,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS3I,EAAO,GAGxC4I,CACT,CAEA,SAASyC,IAAsD,CAC7D,IAAIzC,EAAIC,EAER,OAAAzB,IACAwB,EAAK7B,EACL8B,EAAKnP,EAAM,OAAOqN,EAAa,CAAC,EAC5B8B,EAAG,YAAY,IAAMnN,EACvBqL,GAAe,GAEf8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASzI,EAAO,GAE3C2I,IAAOjP,IACToN,EAAe4B,EACfC,EAAK9C,GAAQ8C,CAAE,GAEjBD,EAAKC,EACLzB,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS1I,EAAO,GAGxC2I,CACT,CAEA,SAASwC,IAA0C,CACjD,IAAIxC,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMpL,IACnCiN,EAAKjN,GACLoL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASvI,EAAO,GAE3CwI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMnL,GACnCgN,EAAKhN,EACLmL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAStI,EAAO,IAGjD+G,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASxI,EAAO,GAGxCyI,CACT,CAEA,SAASmC,IAAyB,CAChC,IAAInC,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMlL,IACnC+M,EAAK/M,GACLkL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASpI,EAAO,GAE3CqI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMjL,IACnC8M,EAAK9M,GACLiL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASnI,EAAO,GAE3CoI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMhL,IACnC6M,EAAK7M,GACLgL,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASlI,EAAO,GAE3CmI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM/K,IACnC4M,EAAK5M,GACL+K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASjI,EAAO,GAE3CkI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM9K,IACnC2M,EAAK3M,GACL8K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAShI,EAAO,GAE3CiI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM7K,IACnC0M,EAAK1M,GACL6K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS/H,EAAO,GAE3CgI,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM5K,IACnCyM,EAAKzM,GACL4K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS9H,EAAO,SAQ3DuG,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASrI,EAAO,GAGxCsI,CACT,CAEA,SAASoC,IAAyB,CAChC,IAAIpC,EAAIC,EAER,OAAAzB,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAM3K,IACnCwM,EAAKxM,GACL2K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS5H,EAAO,GAE3C6H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAM1K,IACnCuM,EAAKvM,GACL0K,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS3H,EAAO,GAE3C4H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMzK,IACnCsM,EAAKtM,GACLyK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAAS1H,EAAO,GAE3C2H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMxK,IACnCqM,EAAKrM,GACLwK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASzH,EAAO,GAE3C0H,IAAOhP,IACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMvK,IACnCoM,EAAKpM,GACLuK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASxH,EAAO,OAMvDiG,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS7H,EAAO,GAGxC8H,CACT,CAEA,SAASoB,IAAgB,CACvB,IAAIpB,EAAIC,EAAIC,EAAIC,EAAIK,EAWpB,GATAR,EAAK7B,EACL8B,EAAKG,EAAW,EACZtP,EAAM,WAAWqN,CAAW,IAAM,IACpC+B,EAAKrM,GACLsK,MAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASvH,EAAO,GAE3C0H,IAAOlP,EAAY,CAGrB,IAFAmP,EAAK,CAAC,EACNK,EAAKmC,GAAkB,EAChBnC,IAAOxP,GACZmP,EAAG,KAAKK,CAAE,EACVA,EAAKmC,GAAkB,EAEzBvE,EAAe4B,EACfA,EAAK5C,GAAQ+C,CAAE,CACjB,MACEhC,EAAc6B,EACdA,EAAKhP,EAGP,OAAOgP,CACT,CAEA,SAAS0C,IAA2B,CAClC,IAAI1C,EAEJ,OAAAA,EAAK4C,GAAuB,EACxB5C,IAAOhP,IACTgP,EAAK6C,GAAkB,GAGlB7C,CACT,CAEA,SAAS4C,IAAyB,CAChC,IAAI5C,EAAIC,EAAIC,EAAIC,EAAIK,EAEpB,OAAAR,EAAK7B,EACL8B,EAAK9B,EACL+B,EAAK2C,GAAkB,EACnB3C,IAAOlP,GACLF,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKrM,GACLqK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAStH,EAAO,GAE3C0H,IAAOnP,GACTwP,EAAKqC,GAAkB,EACnBrC,IAAOxP,GACTkP,EAAK,CAACA,EAAIC,EAAIK,CAAE,EAChBP,EAAKC,IAEL/B,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEHiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAK3C,GAAQ2C,CAAE,GAEjBD,EAAKC,EAEED,CACT,CAEA,SAAS6C,IAAoB,CAC3B,IAAI7C,EAAIC,EAAIC,EAWZ,GATAF,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKpP,EAAM,OAAOqN,CAAW,EACzB/J,GAAO,KAAK8L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASrH,EAAO,GAE3CwH,IAAOlP,EACT,KAAOkP,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKpP,EAAM,OAAOqN,CAAW,EACzB/J,GAAO,KAAK8L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASrH,EAAO,QAIjDuH,EAAKjP,EAEP,OAAIiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAKzC,GAAQyC,CAAE,GAEjBD,EAAKC,EAEED,CACT,CAEA,SAASkC,IAA4B,CACnC,IAAIlC,EAEJ,OAAAA,EAAK0B,GAAsB,EACvB1B,IAAOhP,IACTgP,EAAK8C,GAAkC,GAGlC9C,CACT,CAEA,SAASuB,IAAkB,CACzB,IAAIvB,EAEJ,OAAAA,EAAK0B,GAAsB,EACvB1B,IAAOhP,IACTgP,EAAK+C,GAAwB,GAGxB/C,CACT,CAEA,SAAS0B,IAAwB,CAC/B,IAAI1B,EAAIC,EAAIC,EAAIC,EAEhB,OAAA3B,IACAwB,EAAK7B,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpC8B,EAAKlM,GACLoK,MAEA8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CoH,IAAOjP,GACTkP,EAAK8C,GAAuB,EACxBlS,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CsH,IAAOnP,GACToN,EAAe4B,EACfA,EAAKvC,GAAQyC,CAAE,IAEf/B,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASnH,EAAO,GAGxCoH,CACT,CAEA,SAASgD,IAAyB,CAChC,IAAIhD,EAAIC,EAAIC,EAAIC,EAgDhB,IA9CAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMnK,IACnCmM,EAAKnM,GACLmK,GAAe,IAEfgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASjH,EAAO,GAE3CqH,IAAOnP,IACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,IAG7CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKvC,GAAQyC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAAOqN,EAAa,CAAC,IAAMnK,IACnCmM,EAAKnM,GACLmK,GAAe,IAEfgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASjH,EAAO,GAE3CqH,IAAOnP,IACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,IAG7CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKvC,GAAQyC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAAS4B,IAAwB,CAC/B,IAAI5B,EAAIC,EAAIC,EAAIC,EAEhB,OAAA3B,IACAwB,EAAK7B,EACDrN,EAAM,WAAWqN,CAAW,IAAM,IACpC8B,EAAKlM,GACLoK,MAEA8B,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CoH,IAAOjP,GACTkP,EAAK+C,GAA6B,EAC9BnS,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE3CsH,IAAOnP,GACToN,EAAe4B,EACfA,EAAKrC,GAAQuC,CAAE,IAEf/B,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAEPwN,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS9G,EAAO,GAGxC+G,CACT,CAEA,SAASiD,IAA+B,CACtC,IAAIjD,EAAIC,EAAIC,EAAIC,EAuChB,IArCAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACTmP,EAAKrP,EAAM,OAAOqN,CAAW,EACzB9J,GAAO,KAAK8L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS7G,EAAO,GAE3CiH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKrC,GAAQuC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACI1N,EAAM,WAAWqN,CAAW,IAAM,IACpCgC,EAAKpM,GACLoK,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAASlH,EAAO,GAE/C2F,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACTmP,EAAKrP,EAAM,OAAOqN,CAAW,EACzB9J,GAAO,KAAK8L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS7G,EAAO,GAE3CiH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKrC,GAAQuC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAAS8C,IAAoC,CAC3C,IAAI9C,EAAIC,EAER,OAAAD,EAAK7B,EACL8B,EAAKiD,GAA0B,EAC/B9E,EAAe4B,EACfC,EAAKpC,GAAQoC,CAAE,EACfD,EAAKC,EAEED,CACT,CAEA,SAAS+C,IAA0B,CACjC,IAAI/C,EAAIC,EAER,OAAAD,EAAK7B,EACL8B,EAAKkD,GAAgB,EACrB/E,EAAe4B,EACfC,EAAKnC,EAAQmC,CAAE,EACfD,EAAKC,EAEED,CACT,CAEA,SAASmD,IAAkB,CACzB,IAAInD,EAAIC,EAAIC,EAAIC,EAuChB,IArCAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB7J,GAAO,KAAK6L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS5G,EAAO,GAE/CqF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKlC,EAAQoC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB7J,GAAO,KAAK6L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS5G,EAAO,GAE/CqF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKlC,EAAQoC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAASkD,IAA4B,CACnC,IAAIlD,EAAIC,EAAIC,EAAIC,EAuChB,IArCAH,EAAK,CAAC,EACNC,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB5J,GAAO,KAAK4L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS3G,EAAO,GAE/CoF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKjC,EAAQmC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAEAiP,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAK9B,EACL+B,EAAK/B,EACLK,IACA2B,EAAKrP,EAAM,OAAOqN,CAAW,EACzB5J,GAAO,KAAK4L,CAAE,EAChBhC,KAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAS3G,EAAO,GAE/CoF,IACI2B,IAAOnP,EACTkP,EAAK,QAEL/B,EAAc+B,EACdA,EAAKlP,GAEHkP,IAAOlP,GACLF,EAAM,OAASqN,GACjBgC,EAAKrP,EAAM,OAAOqN,CAAW,EAC7BA,MAEAgC,EAAKnP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CoH,IAAOnP,GACToN,EAAe6B,EACfA,EAAKjC,EAAQmC,CAAE,IAEfhC,EAAc8B,EACdA,EAAKjP,KAGPmN,EAAc8B,EACdA,EAAKjP,GAIT,OAAOgP,CACT,CAEA,SAASqB,IAAsB,CAC7B,IAAIrB,EAAIC,EAAIC,EAYZ,GAVA1B,IACAwB,EAAK7B,EACL8B,EAAK,CAAC,EACNC,EAAKpP,EAAM,OAAOqN,CAAW,EACzB3J,GAAO,KAAK0L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASzG,EAAO,GAE3C4G,IAAOlP,EACT,KAAOkP,IAAOlP,GACZiP,EAAG,KAAKC,CAAE,EACVA,EAAKpP,EAAM,OAAOqN,CAAW,EACzB3J,GAAO,KAAK0L,CAAE,EAChB/B,KAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASzG,EAAO,QAIjD2G,EAAKjP,EAEP,OAAIiP,IAAOjP,IACToN,EAAe4B,EACfC,EAAKhC,EAAQgC,CAAE,GAEjBD,EAAKC,EACDD,IAAOhP,IACTgP,EAAK0B,GAAsB,GAE7BlD,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAS1G,EAAO,GAGxC2G,CACT,CAEA,SAASoD,IAAsB,CAC7B,IAAIpD,EAAIC,EAER,OAAAzB,IACAwB,EAAKlP,EAAM,OAAOqN,CAAW,EACzB1J,GAAO,KAAKuL,CAAE,EAChB7B,KAEA6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASvG,EAAO,GAE/CgF,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAASxG,EAAO,GAGxCyG,CACT,CAEA,SAASqD,IAAmB,CAC1B,IAAIrD,EAAIC,EAER,OAAAzB,IACAwB,EAAKlP,EAAM,OAAOqN,CAAW,EACzBzJ,GAAO,KAAKsL,CAAE,EAChB7B,KAEA6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASrG,EAAO,GAE/C8E,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAStG,EAAO,GAGxCuG,CACT,CAEA,SAASsD,IAAsB,CAC7B,IAAItD,EAEJ,OAAIlP,EAAM,OAAOqN,EAAa,CAAC,IAAMlK,IACnC+L,EAAK/L,GACLkK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASpG,EAAO,GAGxCqG,CACT,CAEA,SAASuD,IAAoB,CAC3B,IAAIvD,EAEJ,OAAIlP,EAAM,OAAOqN,EAAa,CAAC,IAAMjK,IACnC8L,EAAK9L,GACLiK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASnG,EAAO,GAGxCoG,CACT,CAEA,SAASwD,IAAoB,CAC3B,IAAIxD,EAAIC,EAAIC,EAEZ,OAAAF,EAAK7B,EACL8B,EAAK9B,EACLK,IACI1N,EAAM,OAAOqN,EAAa,CAAC,IAAMjK,IACnCgM,EAAKhM,GACLiK,GAAe,IAEf+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAASnG,EAAO,GAE/C4E,IACI0B,IAAOlP,EACTiP,EAAK,QAEL9B,EAAc8B,EACdA,EAAKjP,GAEHiP,IAAOjP,GACLF,EAAM,OAASqN,GACjB+B,EAAKpP,EAAM,OAAOqN,CAAW,EAC7BA,MAEA+B,EAAKlP,EACDwN,IAAoB,GAAKuB,EAAShH,EAAO,GAE3CmH,IAAOlP,GACTiP,EAAK,CAACA,EAAIC,CAAE,EACZF,EAAKC,IAEL9B,EAAc6B,EACdA,EAAKhP,KAGPmN,EAAc6B,EACdA,EAAKhP,GAGAgP,CACT,CAEA,SAASyD,IAAqB,CAC5B,IAAIzD,EAAIC,EAAIC,EAAIC,EAIhB,GAFAH,EAAK7B,EACL8B,EAAKqD,GAAoB,EACrBrD,IAAOjP,EAAY,CAGrB,IAFAkP,EAAK,CAAC,EACNC,EAAKqD,GAAkB,EAChBrD,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKqD,GAAkB,EAEzBrD,EAAKoD,GAAkB,EACnBpD,IAAOnP,GACTiP,EAAK,CAACA,EAAIC,EAAIC,CAAE,EAChBH,EAAKC,IAEL9B,EAAc6B,EACdA,EAAKhP,EAET,MACEmN,EAAc6B,EACdA,EAAKhP,EAGP,OAAOgP,CACT,CAEA,SAAS0D,IAAsB,CAC7B,IAAI1D,EAEJ,OAAIlP,EAAM,OAAOqN,EAAa,CAAC,IAAMhK,IACnC6L,EAAK7L,GACLgK,GAAe,IAEf6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASlG,EAAO,GAGxCmG,CACT,CAEA,SAAS2C,IAAoB,CAC3B,IAAI3C,EAEJ,OAAAA,EAAKlP,EAAM,OAAOqN,CAAW,EACzBxJ,GAAO,KAAKqL,CAAE,EAChB7B,KAEA6B,EAAKhP,EACDwN,IAAoB,GAAKuB,EAASjG,EAAO,GAGxCkG,CACT,CAEA,SAAS2D,IAAqB,CAC5B,IAAI3D,EAAIC,EAAIC,EAAIC,EAIhB,GAFAH,EAAK7B,EACL8B,EAAKyD,GAAoB,EACrBzD,IAAOjP,EAAY,CAGrB,IAFAkP,EAAK,CAAC,EACNC,EAAKwC,GAAkB,EAChBxC,IAAOnP,GACZkP,EAAG,KAAKC,CAAE,EACVA,EAAKwC,GAAkB,EAEzB1C,EAAK,CAACA,EAAIC,CAAE,EACZF,EAAKC,CACP,MACE9B,EAAc6B,EACdA,EAAKhP,EAGP,OAAOgP,CACT,CAEA,SAAS4D,IAAmB,CAC1B,IAAI5D,EAAIC,EAER,OAAAzB,IACAwB,EAAK2D,GAAmB,EACpB3D,IAAOhP,IACTgP,EAAKyD,GAAmB,GAE1BjF,IACIwB,IAAOhP,IACTiP,EAAKjP,EACDwN,IAAoB,GAAKuB,EAAShG,EAAO,GAGxCiG,CACT,CAEA,SAASI,GAAa,CACpB,IAAIJ,EAAIC,EAUR,IARAD,EAAK,CAAC,EACNC,EAAKmD,GAAoB,EACrBnD,IAAOjP,IACTiP,EAAKoD,GAAiB,EAClBpD,IAAOjP,IACTiP,EAAK2D,GAAiB,IAGnB3D,IAAOjP,GACZgP,EAAG,KAAKC,CAAE,EACVA,EAAKmD,GAAoB,EACrBnD,IAAOjP,IACTiP,EAAKoD,GAAiB,EAClBpD,IAAOjP,IACTiP,EAAK2D,GAAiB,IAK5B,OAAO5D,CACT,CAIA,GAFAvB,EAAarN,EAAsB,EAE/BL,EAAQ,YACV,MAA2B,CACzB,WAAA0N,EACA,YAAAN,EACA,WAAAnN,EACA,oBAAAuN,EACA,eAAAD,CACF,EAEF,GAAIG,IAAezN,GAAcmN,IAAgBrN,EAAM,OACrD,OAAO2N,EAEP,MAAIA,IAAezN,GAAcmN,EAAcrN,EAAM,QACnDiP,EAASV,GAAmB,CAAC,EAGzBN,GACJR,EACAD,EAAiBxN,EAAM,OAASA,EAAM,OAAOwN,CAAc,EAAI,KAC/DA,EAAiBxN,EAAM,OACnB+N,GAAoBP,EAAgBA,EAAiB,CAAC,EACtDO,GAAoBP,EAAgBA,CAAc,CACxD,CAEJ,CCnnFO,SAASuF,GAAMC,EAAgC,CACpD,OAAOC,GAASD,EAAS,CAAE,QAAS,IAAIE,EAAU,CAAC,CACrD,CCLA,IAAAC,GAAoB,WACpBC,GAAe,WCDf,IAAIC,GAAaC,GAAQ,OAAO,UAAU,SAAS,KAAKA,CAAG,EACvDC,GAAkBC,GAAU,YAAY,OAAOA,CAAK,GAAK,EAAEA,aAAiB,UAC5EC,GAAWH,GAAQD,GAAUC,CAAG,IAAM,gBACtCI,GAAaJ,GAAQD,GAAUC,CAAG,IAAM,kBACxCK,GAAYL,GAAQD,GAAUC,CAAG,IAAM,iBACvCM,GAAcN,GAAQD,GAAUC,CAAG,IAAM,mBACzCO,GAAaP,GAAQD,GAAUC,CAAG,IAAM,kBACxCQ,GAAaR,GAAQD,GAAUC,CAAG,IAAM,kBACxCS,GAAW,MAAM,QACjBC,GAAO,OAAO,yBACdC,GAAyB,OAAO,UAAU,qBAC1CC,GAA2B,OAAO,sBAClCC,GAAmB,OAAO,UAAU,eACxC,SAASC,GAAoBd,EAAK,CAChC,IAAMe,EAAM,OAAO,KAAKf,CAAG,EACrBgB,EAAUJ,GAAyBZ,CAAG,EAC5C,QAASiB,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAC9BN,GAAuB,KAAKX,EAAKgB,EAAQC,CAAC,CAAC,GAC7CF,EAAI,KAAKC,EAAQC,CAAC,CAAC,EAGvB,OAAOF,CACT,CACA,SAASG,GAAYC,EAAQC,EAAK,CAChC,MAAO,CAACV,GAAKS,EAAQC,CAAG,GAAG,QAC7B,CACA,SAASC,GAAKC,EAAKC,EAAS,CAC1B,GAAI,OAAOD,GAAQ,UAAYA,IAAQ,KAAM,CAC3C,IAAIE,EACJ,GAAIf,GAASa,CAAG,EACdE,EAAM,CAAC,UACErB,GAAQmB,CAAG,EACpBE,EAAM,IAAI,KAAKF,EAAI,QAAUA,EAAI,QAAQ,EAAIA,CAAG,UACvClB,GAAUkB,CAAG,EACtBE,EAAM,IAAI,OAAOF,CAAG,UACXjB,GAASiB,CAAG,EACrBE,EAAM,CAAE,QAASF,EAAI,OAAQ,UACpBhB,GAAWgB,CAAG,GAAKf,GAAUe,CAAG,GAAKd,GAAUc,CAAG,EAC3DE,EAAM,OAAOF,CAAG,MACX,IAAIrB,GAAeqB,CAAG,EAC3B,OAAOA,EAAI,MAAM,EAEjBE,EAAM,OAAO,OAAO,OAAO,eAAeF,CAAG,CAAC,EAEhD,IAAMG,EAAoBF,EAAQ,eAAiBT,GAAsB,OAAO,KAChF,QAAWM,KAAOK,EAAkBH,CAAG,EACrCE,EAAIJ,CAAG,EAAIE,EAAIF,CAAG,EAEpB,OAAOI,CACT,CACA,OAAOF,CACT,CACA,IAAII,GAAa,CACf,eAAgB,GAChB,UAAW,EACb,EACA,SAASC,GAAKC,EAAMC,EAAIN,EAAUG,GAAY,CAC5C,IAAMI,EAAO,CAAC,EACRC,EAAU,CAAC,EACbC,EAAQ,GACNP,EAAoBF,EAAQ,eAAiBT,GAAsB,OAAO,KAC1EmB,EAAY,CAAC,CAACV,EAAQ,UAC5B,OAAO,SAASW,EAAOC,EAAO,CAC5B,IAAMC,EAAOH,EAAYZ,GAAKc,EAAOZ,CAAO,EAAIY,EAC1CE,EAAY,CAAC,EACfC,EAAa,GACXC,EAAQ,CACZ,KAAAH,EACA,MAAAD,EACA,KAAM,CAAC,EAAE,OAAOL,CAAI,EACpB,OAAQC,EAAQA,EAAQ,OAAS,CAAC,EAClC,QAAAA,EACA,IAAKD,EAAKA,EAAK,OAAS,CAAC,EACzB,OAAQA,EAAK,SAAW,EACxB,MAAOA,EAAK,OACZ,SAAU,OACV,OAAQ,GACR,QAAS,GACT,QAAS,GACT,QAAS,GACT,OAAQ,GACR,OAAQ,SAASU,EAAGC,EAAW,GAAO,CAC/BF,EAAM,SACTA,EAAM,OAAO,KAAKA,EAAM,GAAG,EAAIC,GAEjCD,EAAM,KAAOC,EACTC,IACFH,EAAa,GAEjB,EACA,OAAQ,SAASG,EAAU,CACzB,OAAOF,EAAM,OAAO,KAAKA,EAAM,GAAG,EAC9BE,IACFH,EAAa,GAEjB,EACA,OAAQ,SAASG,EAAU,CACrBhC,GAAS8B,EAAM,OAAO,IAAI,EAC5BA,EAAM,OAAO,KAAK,OAAOA,EAAM,IAAK,CAAC,EAErC,OAAOA,EAAM,OAAO,KAAKA,EAAM,GAAG,EAEhCE,IACFH,EAAa,GAEjB,EACA,KAAM,KACN,OAAQ,SAASI,EAAG,CAClBL,EAAU,OAASK,CACrB,EACA,MAAO,SAASA,EAAG,CACjBL,EAAU,MAAQK,CACpB,EACA,IAAK,SAASA,EAAG,CACfL,EAAU,IAAMK,CAClB,EACA,KAAM,SAASA,EAAG,CAChBL,EAAU,KAAOK,CACnB,EACA,KAAM,UAAW,CACfV,EAAQ,EACV,EACA,MAAO,UAAW,CAChBM,EAAa,EACf,CACF,EACA,GAAI,CAACN,EACH,OAAOO,EAET,SAASI,GAAe,CACtB,GAAI,OAAOJ,EAAM,MAAS,UAAYA,EAAM,OAAS,KAAM,EACrD,CAACA,EAAM,MAAQA,EAAM,QAAUA,EAAM,QACvCA,EAAM,KAAOd,EAAkBc,EAAM,IAAI,GAE3CA,EAAM,OAASA,EAAM,KAAK,SAAW,EACrC,QAAStB,EAAI,EAAGA,EAAIc,EAAQ,OAAQd,IAClC,GAAIc,EAAQd,CAAC,EAAE,QAAUkB,EAAO,CAC9BI,EAAM,SAAWR,EAAQd,CAAC,EAC1B,KACF,CAEJ,MACEsB,EAAM,OAAS,GACfA,EAAM,KAAO,KAEfA,EAAM,QAAU,CAACA,EAAM,OACvBA,EAAM,QAAU,CAACA,EAAM,MACzB,CACAI,EAAa,EACb,IAAMC,EAAMf,EAAG,KAAKU,EAAOA,EAAM,IAAI,EAOrC,GANIK,IAAQ,QAAUL,EAAM,QAC1BA,EAAM,OAAOK,CAAG,EAEdP,EAAU,QACZA,EAAU,OAAO,KAAKE,EAAOA,EAAM,IAAI,EAErC,CAACD,EACH,OAAOC,EAET,GAAI,OAAOA,EAAM,MAAS,UAAYA,EAAM,OAAS,MAAQ,CAACA,EAAM,SAAU,CAC5ER,EAAQ,KAAKQ,CAAK,EAClBI,EAAa,EACb,OAAW,CAACE,EAAOzB,CAAG,IAAK,OAAO,QAAQmB,EAAM,MAAQ,CAAC,CAAC,EAAG,CAC3DT,EAAK,KAAKV,CAAG,EACTiB,EAAU,KACZA,EAAU,IAAI,KAAKE,EAAOA,EAAM,KAAKnB,CAAG,EAAGA,CAAG,EAEhD,IAAM0B,EAAQZ,EAAOK,EAAM,KAAKnB,CAAG,CAAC,EAChCa,GAAapB,GAAiB,KAAK0B,EAAM,KAAMnB,CAAG,GAAK,CAACF,GAAYqB,EAAM,KAAMnB,CAAG,IACrFmB,EAAM,KAAKnB,CAAG,EAAI0B,EAAM,MAE1BA,EAAM,OAASP,EAAM,MAAM,OAAS,CAACM,IAAUN,EAAM,KAAK,OAAS,EAAI,GACvEO,EAAM,QAAU,CAACD,GAAU,EACvBR,EAAU,MACZA,EAAU,KAAK,KAAKE,EAAOO,CAAK,EAElChB,EAAK,IAAI,CACX,CACAC,EAAQ,IAAI,CACd,CACA,OAAIM,EAAU,OACZA,EAAU,MAAM,KAAKE,EAAOA,EAAM,IAAI,EAEjCA,CACT,EAAEX,CAAI,EAAE,IACV,CACA,IAAImB,GAAW,KAAM,CAEnBC,GACAC,GACA,YAAYjD,EAAKuB,EAAUG,GAAY,CACrC,KAAKsB,GAAShD,EACd,KAAKiD,GAAW1B,CAClB,CAIA,IAAI2B,EAAO,CACT,IAAId,EAAO,KAAKY,GAChB,QAAS/B,EAAI,EAAGmB,GAAQnB,EAAIiC,EAAM,OAAQjC,IAAK,CAC7C,IAAMG,EAAM8B,EAAMjC,CAAC,EACnB,GAAI,CAACJ,GAAiB,KAAKuB,EAAMhB,CAAG,GAAK,CAAC,KAAK6B,GAAS,gBAAkB,OAAO7B,GAAQ,SACvF,OAEFgB,EAAOA,EAAKhB,CAAG,CACjB,CACA,OAAOgB,CACT,CAIA,IAAIc,EAAO,CACT,IAAId,EAAO,KAAKY,GAChB,QAAS/B,EAAI,EAAGmB,GAAQnB,EAAIiC,EAAM,OAAQjC,IAAK,CAC7C,IAAMG,EAAM8B,EAAMjC,CAAC,EACnB,GAAI,CAACJ,GAAiB,KAAKuB,EAAMhB,CAAG,GAAK,CAAC,KAAK6B,GAAS,gBAAkB,OAAO7B,GAAQ,SACvF,MAAO,GAETgB,EAAOA,EAAKhB,CAAG,CACjB,CACA,MAAO,EACT,CAIA,IAAIU,EAAM5B,EAAO,CACf,IAAIkC,EAAO,KAAKY,GACZ/B,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIa,EAAK,OAAS,EAAGb,IAAK,CACpC,IAAMG,EAAMU,EAAKb,CAAC,EACbJ,GAAiB,KAAKuB,EAAMhB,CAAG,IAClCgB,EAAKhB,CAAG,EAAI,CAAC,GAEfgB,EAAOA,EAAKhB,CAAG,CACjB,CACA,OAAAgB,EAAKN,EAAKb,CAAC,CAAC,EAAIf,EACTA,CACT,CAIA,IAAI2B,EAAI,CACN,OAAOF,GAAK,KAAKqB,GAAQnB,EAAI,CAC3B,UAAW,GACX,eAAgB,CAAC,CAAC,KAAKoB,GAAS,cAClC,CAAC,CACH,CAIA,QAAQpB,EAAI,CACV,YAAKmB,GAASrB,GAAK,KAAKqB,GAAQnB,EAAI,KAAKoB,EAAQ,EAC1C,KAAKD,EACd,CAMA,OAAOnB,EAAIsB,EAAM,CACf,IAAMC,EAAO,UAAU,SAAW,EAC9BC,EAAMD,EAAO,KAAKJ,GAASG,EAC/B,YAAK,QAAQ,SAASX,EAAG,EACnB,CAAC,KAAK,QAAU,CAACY,KACnBC,EAAMxB,EAAG,KAAK,KAAMwB,EAAKb,CAAC,EAE9B,CAAC,EACMa,CACT,CAKA,OAAQ,CACN,IAAMA,EAAM,CAAC,EACb,YAAK,QAAQ,UAAW,CACtBA,EAAI,KAAK,KAAK,IAAI,CACpB,CAAC,EACMA,CACT,CAIA,OAAQ,CACN,IAAMA,EAAM,CAAC,EACb,YAAK,QAAQ,UAAW,CACtBA,EAAI,KAAK,KAAK,IAAI,CACpB,CAAC,EACMA,CACT,CAIA,OAAQ,CACN,IAAMtB,EAAU,CAAC,EACXuB,EAAQ,CAAC,EACT/B,EAAU,KAAK0B,GACrB,OAAIhD,GAAe,KAAK+C,EAAM,EACrB,KAAKA,GAAO,MAAM,EAEpB,SAASO,EAAMjC,EAAK,CACzB,QAAS,EAAI,EAAG,EAAIS,EAAQ,OAAQ,IAClC,GAAIA,EAAQ,CAAC,IAAMT,EACjB,OAAOgC,EAAM,CAAC,EAGlB,GAAI,OAAOhC,GAAQ,UAAYA,IAAQ,KAAM,CAC3C,IAAME,EAAMH,GAAKC,EAAKC,CAAO,EAC7BQ,EAAQ,KAAKT,CAAG,EAChBgC,EAAM,KAAK9B,CAAG,EACd,IAAMgC,EAAmBjC,EAAQ,eAAiBT,GAAsB,OAAO,KAC/E,QAAWM,KAAOoC,EAAiBlC,CAAG,EACpCE,EAAIJ,CAAG,EAAImC,EAAMjC,EAAIF,CAAG,CAAC,EAE3B,OAAAW,EAAQ,IAAI,EACZuB,EAAM,IAAI,EACH9B,CACT,CACA,OAAOF,CACT,EAAE,KAAK0B,EAAM,CACf,CACF,EACIS,GAAW,CAACzD,EAAKuB,IACZ,IAAIwB,GAAS/C,EAAKuB,CAAO,EAElCkC,GAAS,IAAM,CAACzD,EAAKkD,EAAO3B,IACnB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAI2B,CAAK,EAE7CO,GAAS,IAAM,CAACzD,EAAK8B,EAAM5B,EAAOqB,IACzB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAIO,EAAM5B,CAAK,EAEnDuD,GAAS,IAAM,CAACzD,EAAKkD,EAAO3B,IACnB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAI2B,CAAK,EAE7CO,GAAS,IAAM,CAACzD,EAAK6B,EAAIN,IAChB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,IAAIM,CAAE,EAE1C4B,GAAS,QAAU,CAACzD,EAAK6B,EAAIN,IACpB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,QAAQM,CAAE,EAE9C4B,GAAS,OAAS,CAACzD,EAAK6B,EAAIsB,EAAM5B,IACzB,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,OAAOM,EAAIsB,CAAI,EAEnDM,GAAS,MAAQ,CAACzD,EAAKuB,IACd,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,MAAM,EAE1CkC,GAAS,MAAQ,CAACzD,EAAKuB,IACd,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,MAAM,EAE1CkC,GAAS,MAAQ,CAACzD,EAAKuB,IACd,IAAIwB,GAAS/C,EAAKuB,CAAO,EAAE,MAAM,EAE1C,IAAImC,GAAcD,GCjWlB,SAASE,GACPC,EACAC,EACAC,EACQ,CACR,IAAIC,EAAe,GAEnB,OAAIH,IACFG,GAAgBH,GAEdC,IACFE,GAAgB,KAAKF,CAAK,KAExBC,IACFC,GAAgB,KAAKD,CAAQ,IAExBC,EAAa,KAAK,CAC3B,CAEA,IAAOC,GAAQ,CACb,YAAAL,EACF,ECrBO,SAASM,GAAUC,EAAkC,CAC1D,OAAO,MAAM,QAAQA,CAAO,EAAIA,EAAU,CAACA,CAAO,CACpD,CCCA,SAASC,GACPC,EACAC,EACoB,CACpB,IAAMC,EAAe,CAEnB,GAAID,EAAM,GAAGA,CAAG,WAAa,SAC/B,EAEA,OAAID,EAAe,YACjB,OAAO,OAAOE,EAAc,CAC1B,WAAY,CAACF,EAAe,UAAU,CACxC,CAAC,EAGIE,CACT,CAEA,SAASC,GAA2BC,EAAqC,CACvE,MAAO,CACL,GAAI,UACJ,WAAY,CACV,CACE,OAAQA,CACV,CACF,CACF,CACF,CAGA,SAASC,GAAiBC,EAAqC,CAC7D,IAAMJ,EAAe,CAAC,EAEtB,OAAII,EAAS,UACP,OAAOA,EAAS,SAAY,SAC9BJ,EAAa,KAAKC,GAA2BG,EAAS,OAAO,CAAC,EAE9DJ,EAAa,KACXH,GAA2BO,EAAS,QAASA,EAAS,EAAE,CAC1D,GAGGJ,CACT,CAUO,SAASK,GAAiBD,EAAwC,CACvE,MAAO,CACL,GAAGA,EACH,QAASD,GAAiBC,CAAQ,EAClC,MAAOE,GAAUF,GAAU,OAAS,CAAC,CAAC,EACtC,SAAUE,GAAUF,GAAU,UAAY,CAAC,CAAC,EAC5C,QAASE,GAAUF,GAAU,SAAW,CAAC,CAAC,EAC1C,MAAOE,GAAUF,GAAU,OAAS,CAAC,CAAC,CACxC,CACF,CJvDA,IAAMG,GAAcC,GAAI,YAExB,SAASC,GAAeC,EAAQC,EAAa,CAC3C,OAAOC,GAAUF,EAAOC,CAAW,CAAC,EAAE,IAAKE,IAAa,CACtD,KAAMF,IAAgB,SAAW,OAAS,QAC1C,KAAM,GAAAG,QAAG,OAAOD,CAAO,EAAE,KAAK,CAChC,EAAE,CACJ,CAEA,SAASE,GAA0BC,EAAiB,CAClD,OAAOJ,GAAUI,CAAe,EAAE,IAAKC,IAG9B,CACL,KAAM,WACN,KAJU,GAAAH,QAAG,OAAOG,EAAe,IAAM,EAAE,EAAE,KAAK,GAIrC,GAAAH,QAAG,OAAOG,GAAkB,EAAE,EAAE,KAAK,CACpD,EACD,CACH,CAMA,SAASC,GAAcR,EAAQ,CAC7B,IAAIS,EAAe,CAAC,EAEpB,OAAIT,EAAO,UACTS,EAAeA,EAAa,OAAOV,GAAeC,EAAQ,SAAS,CAAC,GAElEA,EAAO,SACTS,EAAeA,EAAa,OAC1BJ,GAA0BL,EAAO,MAAM,CACzC,GAEEA,EAAO,SACTS,EAAeA,EAAa,OAAOV,GAAeC,EAAQ,QAAQ,CAAC,GAE9DS,CACT,CAQA,SAASC,GAAgBC,EAAOX,EAAQ,CACtC,OAAOW,IAAU,WAAaX,EAAO,OAAS,OAAS,cAAgBW,CACzE,CAMA,SAASC,GAASD,EAAO,CACvB,OAAQX,GAAW,CAEjB,IAAMS,EAAe,CACnB,KAAMT,EAAO,GACb,KAAMU,GAAgBC,EAAOX,CAAM,CACrC,EAEA,OAAIa,GAAc,aAAab,EAAO,EAAE,IAAMS,EAAa,OACzDA,EAAa,kBAAoB,KAE/BT,EAAO,SAAWA,EAAO,QAAUA,EAAO,UAC5CS,EAAa,QAAUD,GAAcR,CAAM,GAG3C,OAAO,KAAKA,CAAM,EAAE,KAAMc,GACxB,CAAC,UAAW,QAAS,UAAW,WAAY,OAAO,EAAE,SAASA,CAAI,CACpE,IAIAL,EAAa,aAAeM,GAAWf,CAAM,GAExCS,CACT,CACF,CAMA,SAASO,GAAsCC,EAAa,CAC1D,IAAMR,EAAe,CAAC,EAEtB,OAAIQ,EAAY,QAGdR,EAAa,MAAQQ,EAAY,MAAM,MAAM,KAAK,EAAE,KAAK;AAAA,CAAI,GAE3DA,EAAY,OACdR,EAAa,KAAOQ,EAAY,MAE9BA,EAAY,OAAO,IACrBR,EAAa,OAAS,GAAAL,QAAG,OAAOa,EAAY,OAAO,CAAC,EAAE,KAAK,GAGzDA,EAAY,OACdR,EAAa,KAAOQ,EAAY,MAG3BR,CACT,CAMA,SAASS,GAA4BD,EAAa,CAChD,IAAMR,EAAe,CAAC,EAElB,OAAOQ,GAAgB,SACzBR,EAAa,OAAS,GAAAL,QAAG,OAAOa,CAAW,EAAE,KAAK,EAElD,OAAO,OACLR,EACAO,GAAsCC,CAAW,CACnD,EAGF,IAAME,EAAStB,GACbY,EAAa,MACbA,EAAa,KACbA,EAAa,MACf,EAEA,OAAIU,IACFV,EAAa,MAAQU,GAGhBV,CACT,CAMA,SAASW,GAAiBpB,EAAQqB,EAAU,CAM1C,MAAO,CAACC,EAAiBL,IAAgB,CAGvC,IAAMM,GAAYN,GAAa,QAAUjB,EAAO,IAAI,MAAM,KAAK,EACzDwB,EAAwBN,GAA4BD,CAAW,EAErE,OAAOK,EAAgB,OACrBC,EAAS,IAAKE,IAAa,CACzB,GAAIJ,EAAS,KAAK,EAClB,KAAMrB,EAAO,GAGb,GAAIyB,EACJ,GAAGD,CACL,EAAE,CACJ,CACF,CACF,CAOA,SAASE,GAAmBC,EAASN,EAAU,CAC7C,OAAOM,EACJ,OAAQ3B,GAAW,OAAO,OAAOA,EAAQ,YAAY,CAAC,EACtD,OAAO,CAACsB,EAAiBM,IAAe,CACvC,IAAMC,EAAqB3B,GAAU0B,EAAW,UAAU,EAC1D,OAAON,EAAgB,OACrBO,EAAmB,OAAOT,GAAiBQ,EAAYP,CAAQ,EAAG,CAAC,CAAC,CACtE,CACF,EAAG,CAAC,CAAC,CACT,CAMA,SAASN,GAAWe,EAAoB,CACtC,IAAMC,EAAqBC,GAAiBF,CAAkB,EACxDrB,EAAe,CACnB,OAAQsB,EAAmB,QACxB,IAAInB,GAAS,SAAS,CAAC,EACvB,OAAOmB,EAAmB,MAAM,IAAInB,GAAS,SAAS,CAAC,CAAC,EACxD,OAAOmB,EAAmB,SAAS,IAAInB,GAAS,UAAU,CAAC,CAAC,EAC5D,OAAOmB,EAAmB,QAAQ,IAAInB,GAAS,SAAS,CAAC,CAAC,EAC1D,OAAOmB,EAAmB,MAAM,IAAInB,GAAS,OAAO,CAAC,CAAC,CAC3D,EACMqB,EAAW,IAAIC,GAEfC,EAAeT,GAAmBK,EAAmB,QAASE,CAAQ,EACzE,OAAOP,GAAmBK,EAAmB,MAAOE,CAAQ,CAAC,EAC7D,OAAOP,GAAmBK,EAAmB,SAAUE,CAAQ,CAAC,EAEnE,OAAIE,EAAa,OAAS,IACxB1B,EAAa,YAAc0B,GAGtB1B,CACT,CAgBA,SAAS2B,GAA6BC,EAASC,EAAsB,CAMnE,OAAOC,GAASF,CAAO,EAAE,IAAI,UAAuB,CAClD,GAAI,KAAK,KAAK,WAAWC,CAAoB,EAAG,CAC9C,IAAME,EAA2B,KAAK,IAAI,MACxCF,EAAqB,MACvB,EACI,KAAK,OAAO,KAAK,SAASE,CAAwB,EACpD,KAAK,OAAO,GAEZ,KAAK,OAAO,KAAKA,CAAwB,EAAI,KAAK,KAClD,KAAK,OAAO,EAEhB,CACF,CAAC,CACH,CAQO,SAASC,GAAMC,EAAc,CAClC,IAAMC,EAAsBD,EAAa,KAAK,EACxCE,EAAuB,KAEzBC,EAAa,CAAC,EAEZC,EAAa,IAAI,GAAAC,QAAQ,UAAU,CACvC,oBAAqBH,EACrB,iBAAkB,GAClB,cAAe,GACf,gBAAiB,GACjB,kBAAmB,CAACI,EAAWC,IAAc,GAAA7C,QAAG,OAAO6C,CAAS,EAChE,UAAW,CAAC,YAAa,WAAY,cAAc,CACrD,CAAC,EAED,GAAI,CACFJ,EAAaT,GACXU,EAAW,MAAMH,EAAqB,EAAI,EAC1CC,CACF,CACF,MAAiB,CACf,MAAM,IAAI,MAAM;AAAA,CAAwC,CAC1D,CACA,OAAO7B,GACL8B,GAAY,OAAS,CACnB,MAAO,kCACP,QAAS,KACX,CACF,CACF,CKjSA,IAAOK,GAAQ,CACb,QAAS,0CACT,MAAO,gDACP,KAAM,iCACN,IAAK,kCACL,YAAa,CACX,UAAW,CACT,KAAM,SACN,KAAM,CACJ,UACA,UACA,YACA,QACA,WACA,UACA,cACA,SACA,WACA,OACA,OACA,UACF,CACF,EACA,eAAgB,CACd,KAAM,SACN,KAAM,CAAC,WAAY,UAAU,CAC/B,EACA,SAAU,CACR,KAAM,QACN,MAAO,CACL,KAAM,QACR,CACF,EACA,eAAgB,CACd,KAAM,SACN,KAAM,CAAC,QAAS,WAAY,MAAM,CACpC,EACA,WAAY,CACV,KAAM,SACN,SAAU,CAAC,OAAQ,MAAM,EACzB,qBAAsB,GACtB,WAAY,CACV,KAAM,CAAE,KAAM,8BAA+B,EAC7C,KAAM,CAAE,KAAM,QAAS,CACzB,CACF,EACA,UAAW,CACT,KAAM,SACN,QAAS,qBACX,EACA,iBAAkB,CAChB,KAAM,SACN,qBAAsB,GACtB,SAAU,CAAC,QAAQ,EACnB,WAAY,CACV,OAAQ,CACN,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,OAAQ,MAAM,EACzB,qBAAsB,GACtB,WAAY,CACV,KAAM,CACJ,YACE,8EACF,KAAM,QACR,EACA,KAAM,CACJ,YACE,uLACF,KAAM,yBACR,EACA,MAAO,CACL,YACE,0GACF,KAAM,QACR,EACA,MAAO,CACL,YACE,wJACF,KAAM,QACR,EACA,MAAO,CACL,YACE,sDACF,KAAM,yBACR,EACA,OAAQ,CACN,YACE,qEACF,KAAM,SACR,EACA,kBAAmB,CACjB,YACE,ySACF,KAAM,SACR,EACA,YAAa,CACX,YACE,qJACF,KAAM,SACR,EACA,QAAS,CACP,KAAM,QACN,YACE,iIACF,MAAO,CAAE,KAAM,0BAA2B,CAC5C,EACA,KAAM,CACJ,YACE,yIACF,KAAM,wBACR,EACA,aAAc,CACZ,YAAa,yCACb,KAAM,gCACR,CACF,CACF,CACF,EACA,YAAa,CACX,KAAM,QACN,MAAO,CACL,KAAM,SACN,SAAU,CAAC,KAAM,OAAQ,IAAI,EAC7B,qBAAsB,GACtB,WAAY,CACV,GAAI,CACF,KAAM,QACR,EACA,KAAM,CACJ,YACE,yDACF,KAAM,QACR,EACA,GAAI,CACF,YACE,uDACF,KAAM,QACR,EACA,MAAO,CACL,YACE,iHACF,KAAM,QACR,EACA,MAAO,CACL,YAAa,kCACb,KAAM,QACR,EACA,KAAM,CACJ,YAAa,yCACb,KAAM,QACR,EACA,OAAQ,CACN,YAAa,gDACb,KAAM,QACR,EACA,KAAM,CACJ,YAAa,sCACb,KAAM,wBACR,EACA,MAAO,CACL,YACE,6JACF,KAAM,QACR,EACA,MAAO,CACL,YACE,qDACF,KAAM,SACN,QAAS,EACT,QAAS,EACX,EACA,MAAO,CACL,YACE,sDACF,KAAM,yBACR,EACA,KAAM,CACJ,YACE,qHACF,KAAM,8BACR,CACF,CACF,CACF,CACF,CACF,CACF,CACF,EXlLA,IAAMC,GAAM,IAAI,GAAAC,QAGhB,SAASC,GAAsBC,EAAyBC,EAAoB,CAC1E,GAAI,CAACJ,GAAI,SAASG,EAASC,CAAO,EAChC,MAAM,IAAI,MACR,2DAA2DJ,GAAI,WAAW,CAAC;AAAA,CAC7E,CAEJ,CAEA,IAAOK,GAAQ,CACb,OACEC,EACAC,EACe,CACf,IAAIC,EAAeF,EAEnB,OAAIG,GAAQ,eAAeF,EAAU,WAAW,IAAM,QACpDC,EAAeE,GAAWJ,CAAiB,EAClCG,GAAQ,eAAeF,EAAU,WAAW,IAAM,QAE3DC,EAAeE,GAAWJ,CAAO,EACxB,OAAOA,GAAY,WAE5BE,EAAe,KAAK,MAAMF,CAAO,GAGnCJ,GAAsBS,GAASH,CAAY,EAGpCA,CACT,CACF,EY9BA,SAASI,GACPC,EACAC,EACAC,EACQ,CACR,OAAOF,EACH,GAAGA,CAAc,GAAGE,CAAS,GAAGD,CAAc,GAC9CA,CACN,CAEA,SAASE,GACPC,EACAC,EACAC,EACa,CAUb,IAAMC,EAAe,CACnB,GAAGH,EACH,GAAGC,EACH,KAAMD,EAAoB,KAC1B,GAAIC,EAAoB,GACxB,GAAIC,EAAS,KAAK,CACpB,EAEA,OAAID,EAAoB,SACtBE,EAAa,OAASR,GACpBK,EAAoB,OACpBC,EAAoB,OACpB;AAAA,CACF,IAEEE,EAAa,OAASA,EAAa,MAAQA,EAAa,UAC1DA,EAAa,MAAQC,GAAI,YACvBD,EAAa,MACbA,EAAa,KACbA,EAAa,MACf,GAGKA,CACT,CAEA,SAASE,GACPC,EACAC,EACAC,EACAN,EACe,CACf,OAAOI,EAAa,OAClB,CAACG,EAAqBC,KACpBH,EAAkB,QAAQ,CAACI,EAAYC,IAAW,CAE9CD,IAAeD,EAAY,IAC3BF,EAAuBG,CAAU,EAEjCF,EAAOA,EAAK,OACVD,EAAuBG,CAAU,EAAE,IAAKV,GACtCF,GACEW,EACAT,EACAC,CACF,CACF,CACF,EAEAO,EAAOG,IAAW,EAAIH,EAAK,OAAOC,CAAW,EAAID,CAErD,CAAC,EACMA,GAET,CAAC,CACH,CACF,CAEA,SAASI,GACPC,EACAP,EACAC,EACAN,EACe,CACf,IAAMa,EAAW,gBAAgBD,CAAQ,EAEzC,OAAIC,EAAS,aAAeR,EAAkB,OAAS,IACrDQ,EAAS,YAAcV,GACrBU,EAAS,YACTR,EACAC,EACAN,CACF,GAGFa,EAAS,OAASA,EAAS,OAAO,IAAKC,GACrCA,EAAO,aACH,CACE,GAAGA,EACH,aAAcH,GACZG,EAAO,aACPT,EACAC,EACAN,CACF,CACF,EACAc,CACN,EAEOD,CACT,CAEA,SAASE,GACPH,EACAI,EACe,CACf,IAAMH,EAAW,gBAAgBD,CAAQ,EAEzC,OAAIC,EAAS,cACXA,EAAS,YAAcA,EAAS,YAAY,OACzCL,GACC,CAACQ,EAAY,KACVC,GACCA,IAAuBT,EAAY,MACnCS,IAAuBT,EAAY,EACvC,CACJ,GAGFK,EAAS,OAASA,EAAS,OACxB,OAAQC,GAAW,CAACE,EAAY,SAASF,EAAO,IAAI,CAAC,EACrD,IAAKA,GACJA,EAAO,aACH,CACE,GAAGA,EACH,aAAcC,GACZD,EAAO,aACPE,CACF,CACF,EACAF,CACN,EACKD,CACT,CAsBA,IAAOK,GAAQ,CACbN,EACAO,EAAkC,CAAC,OAAQ,WAAY,QAAQ,IAC7C,CAClB,IAAMC,EAAS,IAAIC,GAAkBT,CAAQ,EAEvCU,EAAoBF,EACvB,kBAAkBD,CAAkB,EACpC,IAAI,CAAC,CAAE,KAAAI,CAAK,IAAMA,CAAI,EAEnBC,EAAyCF,EAAkB,OAC/D,CAACf,EAAME,KACLF,EAAKE,CAAU,EAAIW,EAAO,sBAAsBX,CAAU,EACnDF,GAET,CAAC,CACH,EACMkB,EAAuBL,EAAO,uBAAuB,EAErDP,EAAWF,GACfC,EACAU,EACAE,EACA,IAAIE,GAAQD,CAAoB,CAClC,EAEA,OAAOV,GAAsBF,EAAUS,CAAiB,CAC1D,EC1MA,IAAMK,GAAgB,UAChBC,GAAmB,SACnBC,GAAiB,OAEjBC,GAA8B,CAClC,QACA,OACA,QACA,SACA,OACF,EAEMC,GAAmC,CAAC,OAAQ,QAAS,OAAO,EAElE,SAASC,GAAiBC,EAAiBC,EAAyB,CAClE,OAAOD,EAAQ,KAAKC,CAAO,EAAI,IAAIA,CAAO,IAAMA,CAClD,CAEA,SAASC,GAA2BC,EAAyB,CAC3D,OACE,OAAO,OAAOA,EAAQ,OAAO,GAC7B,OAAO,OAAOA,EAAQ,mBAAmB,GACzC,OAAO,OAAOA,EAAQ,OAAO,GAC7B,OAAO,OAAOA,EAAQ,QAAQ,GAC9B,OAAO,OAAOA,EAAQ,OAAO,CAEjC,CAEA,SAASC,GAAKC,EAAiBC,EAAkB,GAAY,CAC3D,OAAOD,EAAM,IAAKE,GAAc,GAAGD,CAAO,KAAKC,CAAS,EAAE,EAAE,KAAK;AAAA,CAAI,CACvE,CAEA,SAASC,GAAkBC,EAAcC,EAAwB,CAC/D,OAAID,IAAS,OAEJ,GAAGA,CAAI,IAAIC,CAAM,GAEtBD,IAAS,SACJC,EAASD,EAAO,GAElB,GAAGA,CAAI,KAAKC,CAAM,GAC3B,CAEA,SAASC,GAAwBR,EAAwB,CACvD,OAAO,OAAO,QAAQA,CAAM,EACzB,OAAO,CAAC,CAACM,CAAI,IAAMZ,GAA4B,SAASY,CAAI,CAAC,EAC7D,OAAO,CAAC,CAACA,CAAI,IAAMA,IAAS,QAAUN,EAAO,iBAAiB,EAC9D,IAAI,CAAC,CAACM,EAAMC,CAAM,IAAMF,GAAkBC,EAAMC,CAAM,CAAC,EACvD,KAAK,GAAG,CACb,CAEA,SAASE,GAAQC,EAAiC,CAChD,OAAOA,EACJ,IACEC,GACC,GAAGA,EAAQ,OAAS,WAAa,GAAK,GAAGA,EAAQ,IAAI,IAAI,GAAGA,EAAQ,IAAI,EAC5E,EACC,IAAKA,GAAYf,GAAiBJ,GAAkBmB,CAAO,CAAC,EAC5D,KAAK;AAAA,KAAQ,CAClB,CAEA,SAASC,GAAMZ,EAAgBG,EAAkB,GAAY,CAC3D,IAAIU,EAAeV,EAAUP,GAAiBL,GAAeS,EAAO,IAAI,EACxE,OAAIA,EAAO,OACTa,EAAe,GAAGZ,GAAKD,EAAO,KAAMG,CAAO,CAAC;AAAA,EAAKU,CAAY,IAE3Dd,GAA2BC,CAAM,IACnCa,GAAgB,KAAKL,GAAwBR,CAAM,CAAC,KAElDA,EAAO,UACTa,GAAgB,KAAKJ,GAAQT,EAAO,OAAO,CAAC,IAE1CA,EAAO,eACTa,GAAgB;AAAA,EAEhBA,GAAgBC,GAAYd,EAAO,aAAc,KAAM,GAAGG,CAAO,MAAM,EACvEU,GAAgB,GAAGV,CAAO,KAGrBU,CACT,CAEA,SAASE,GAAOC,EAAmBb,EAAkB,GAAY,CAC/D,OAAOa,EACJ,IAAKhB,GAAWY,GAAMZ,EAAQG,CAAO,CAAC,EACtC,KAAK;AAAA,CAAK,EACV,OAAOa,EAAQ,OAAS,EAAI;AAAA;AAAA,EAAU,EAAE,CAC7C,CAEA,SAASC,GAAgCC,EAAmC,CAC1E,OAAO,OAAO,QAAQA,CAAW,EAAE,KAAK,CAAC,CAACZ,CAAI,IAC5CX,GAAiC,SAASW,CAAI,CAChD,CACF,CAEA,SAASa,GAA6BD,EAAkC,CACtE,OACE,OAAO,QAAQA,CAAW,EACvB,OAAO,CAAC,CAACZ,CAAI,IAAMX,GAAiC,SAASW,CAAI,CAAC,EAGlE,IAAI,CAAC,CAACA,EAAMC,CAAM,IAAMF,GAAkBC,EAAMC,CAAM,CAAC,EACvD,KAAK,GAAG,CAEf,CAEA,SAASa,GAAWF,EAA0Bf,EAAkB,GAAY,CAC1E,IAAIU,EAAe,GAAGV,CAAO,GAAGP,GAAiBL,GAAe2B,EAAY,IAAI,CAAC,OAAOtB,GACtFL,GACA2B,EAAY,EACd,CAAC,GACD,OAAIA,EAAY,OACdL,EAAe,GAAGZ,GAAKiB,EAAY,KAAMf,CAAO,CAAC;AAAA,EAAKU,CAAY,IAEhEI,GAAgCC,CAAW,IAC7CL,GAAgB,KAAKM,GAA6BD,CAAW,CAAC,KAE5DA,EAAY,QACdL,GAAgB,KAAKjB,GAAiBH,GAAgByB,EAAY,KAAK,CAAC,IAEnEL,CACT,CAEA,SAASQ,GACPC,EACAnB,EAAkB,GACV,CACR,OAAOmB,EACJ,IAAKJ,GAAgB,GAAGE,GAAWF,EAAaf,CAAO,CAAC;AAAA,CAAK,EAC7D,KAAK,EAAE,CACZ,CAEe,SAARW,GACLS,EACAC,EAAmC,CAAC,EACpCrB,EAAkB,GACV,CACR,OACEY,GAAOQ,EAAc,OAAQpB,CAAO,EACpCkB,GAAYE,EAAc,aAAe,CAAC,EAAGpB,CAAO,CAExD,CCjJA,IAAAsB,GAAe,WCCf,IAAMC,GAA6C,CACjD,CAAE,KAAM,WAAY,MAAO,aAAc,EACzC,CAAE,KAAM,WAAY,MAAO,IAAK,EAChC,CAAE,KAAM,WAAY,MAAO,KAAM,CACnC,EAEMC,GAA2D,CAC/D,IAAK,CACH,CAAE,KAAM,UAAW,MAAO,MAAO,EACjC,CAAE,KAAM,WAAY,MAAO,KAAM,EACjC,CAAE,KAAM,WAAY,MAAO,MAAO,EAClC,CAAE,KAAM,UAAW,MAAO,OAAQ,EAClC,CAAE,KAAM,UAAW,MAAO,KAAM,EAChC,CAAE,KAAM,UAAW,MAAO,KAAM,CAClC,EACA,IAAK,CAAC,CAAE,KAAM,IAAK,MAAO,KAAM,CAAC,EACjC,MAAO,CAAC,CAAE,KAAM,OAAQ,MAAO,IAAK,CAAC,EACrC,MAAO,CAAC,CAAE,KAAM,UAAW,MAAO,KAAM,CAAC,CAC3C,EAEMC,GAA+D,CACnE,aAAc,CAAC,CAAE,KAAM,UAAW,MAAO,IAAK,CAAC,EAC/C,aAAc,CAAC,CAAE,KAAM,UAAW,MAAO,IAAK,CAAC,EAC/C,aAAc,CAAC,CAAE,KAAM,UAAW,MAAO,IAAK,CAAC,CACjD,EAEMC,GAAoC,CACxC,CAAE,KAAM,QAAS,MAAO,WAAY,EACpC,CAAE,KAAM,QAAS,MAAO,QAAS,EACjC,CAAE,KAAM,YAAa,MAAO,aAAc,EAC1C,CAAE,KAAM,WAAY,MAAO,WAAY,EACvC,CAAE,KAAM,WAAY,MAAO,EAAG,EAC9B,CAAE,KAAM,WAAY,MAAO,KAAM,CACnC,EAEMC,GAAoC,CACxC,CAAE,KAAM,WAAY,MAAO,WAAY,EACvC,CAAE,KAAM,WAAY,MAAO,EAAG,CAChC,EAEA,SAASC,GAAkBC,EAAoC,CAC7D,MAAO,GAAGA,EAAW,IAAI,IAAIA,EAAW,KAAK,EAC/C,CAEO,SAASC,GACdC,EACAC,EACAC,EACQ,CACR,OAAOV,GAAyB,OAAOC,GAAiBO,CAAO,GAAK,CAAC,CAAC,EACnE,OAAON,GAAqBO,CAAU,GAAK,CAAC,CAAC,EAC7C,OAAOC,GAAuB,CAAC,CAAC,EAChC,IAAIL,EAAiB,EACrB,KAAK,GAAG,CACb,CAEO,SAASM,GACdC,EACQ,CACR,OAAOT,GAAgB,OAAOS,GAAsB,CAAC,CAAC,EACnD,IAAIP,EAAiB,EACrB,KAAK,GAAG,CACb,CAEO,SAASQ,GACdC,EACQ,CACR,OAAOV,GAAgB,OAAOU,GAAsB,CAAC,CAAC,EACnD,IAAIT,EAAiB,EACrB,KAAK,GAAG,CACb,CC3EA,IAAAU,GAAe,WAWf,SAASC,GACPC,EACAC,EACQ,CACR,IAAMC,GAAcD,GAAmB,CAAC,GAAG,KACxCE,GAAeA,EAAW,OAAS,OACtC,GAAG,MAEH,OACED,GACA,CAACF,EAAO,OACR,CACE,UACA,OACA,OACA,WACA,WACA,YACA,OACF,EAAE,SAASA,EAAO,IAAI,EAEfE,EAEFF,EAAO,OAAS,OACzB,CAEO,SAASI,GAAaC,EAAyB,CACpD,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,SAAU,KAAK,EACvB,QAAQ,KAAM,KAAK,EACnB,OAAO,KAAK,CACjB,CAEO,SAASC,GAAkBD,EAAyB,CACzD,OAAOA,EACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,SAAU,QAAQ,EAC1B,QAAQ,KAAM,KAAK,EACnB,OAAO,QAAQ,CACpB,CAIO,SAASE,GAAWC,EAA6B,CACtD,IAAMC,EAAaD,GAAc,WAEjC,OAAOC,IAAe,YAAcA,IAAe,YACrD,CAEO,SAASC,GACdC,EACAC,EACS,CACT,OACEA,EAAY,OAASA,EAAY,KAChCD,EAAmB,gBAAgBC,EAAY,IAAI,GAAG,cACrD,KACFA,EAAY,OAAS,UAEzB,CAWO,SAASC,GAAYC,EAAyB,CACnD,OAAOA,EAAM,IAAIV,EAAY,EAAE,KAAK,EAAE,CACxC,CAEO,SAASW,GAAUf,EAAgBgB,EAAyB,CACjE,GAAIhB,EAAO,KAAM,CACf,IAAMiB,EAAY,QAAQjB,EAAO,IAAI,GACjCkB,EAAe;AAAA,EAAKF,CAAO,MAAMC,CAAS,yCAAyCJ,GAAYb,EAAO,IAAI,CAAC,6DAE/G,OAAAkB,GAAgB;AAAA,EAAKF,CAAO,MAAMhB,EAAO,IAAI,SAASiB,CAAS,iDAExDC,CACT,CACA,MAAO,EACT,CAGO,SAASC,GACdnB,EACAoB,EACAJ,EACkB,CAClB,IAAME,EAAe,gBAAgBlB,CAAM,EAI3C,OAAAkB,EAAa,eAAiBlB,EAAO,MAAQ,WAAWA,EAAO,KAAK,IAAM,GAC1EkB,EAAa,mBAAqBlB,EAAO,MACrC,eAAeA,EAAO,KAAK,IAC3B,GAEJkB,EAAa,MAAQnB,GAAcC,EAAQoB,EAAS,YAAY,EAEhEF,EAAa,MAAQlB,EAAO,MACxB,SAASA,EAAO,IAAI,IAAIA,EAAO,KAAK,GACpC,SAASA,EAAO,IAAI,GACxBkB,EAAa,MAAQ,GAAAG,QAAG,OAAOrB,EAAO,OAASA,EAAO,IAAI,EAC1DkB,EAAa,SAAWH,GAAUf,EAAQgB,CAAO,EAE/C,CAAChB,EAAO,gBACRA,EAAO,OAAS,aACfA,EAAO,cAAc,QAAU,CAAC,GAAG,OAAS,IAI7CkB,EAAa,aAAa,OAASlB,EAAO,aAAa,OAAO,IAC3DsB,IAAiB,CAChB,GAAGA,EACH,eAAgBA,EAAY,OAAS,SACvC,EACF,GAGKJ,CACT,CAEO,SAASK,GAAiBlB,EAAyB,CACxD,OAAOA,IAAY,WAAa,GAAK,GAAGA,CAAO,IACjD,CAEO,SAASmB,GACdJ,EACAK,EACAb,EACA,CACA,IAAIc,EAAa,6BACbC,EAAa,gBACXlB,EAAamB,GAAeR,EAAU,WAAW,EACvD,OAAIb,GAAWE,CAAU,GACvBiB,EAAa,6BACbC,EAAa,kBACJF,EAAO,gBAAgBb,EAAY,IAAI,GAAG,QAAU,MAC7Dc,EAAa,6BACbC,EAAa,iBAER,CAAE,WAAAD,EAAY,WAAAC,CAAW,CAClC,CF9HA,SAASE,GAAQC,EAA0BC,EAAyB,CAClE,IAAMC,EAAmBF,EAAO,OAAS,gBAAkB,GAE3D,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,uCAAuCA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,wCAAwCE,CAAgB,IAAIF,EAAO,QAAQ,EACtN,CAEA,SAASG,GAAoBC,EAAyBH,EAAyB,CAC7E,OAAOG,EACJ,IAAKC,GACJ,GAAAC,QAAG,OAAO,GAAGC,GAAiBF,EAAQ,IAAI,CAAC,GAAGA,EAAQ,IAAI,EAAE,CAC9D,EACC,IAAI,CAACG,EAAeC,IAAW,CAC9B,IAAIC,EAAe,wCAAwCF,CAAa,aACxE,OAAIC,IAAW,IACbC,EAAe,QAAQA,CAAY,IAE9B;AAAA,EAAKT,CAAO,WAAWS,CAAY,EAC5C,CAAC,EACA,KAAK,EAAE,CACZ,CAKA,SAASC,GACPP,EACAH,EACQ,CACR,OAAOG,EACJ,IAAKC,GACJ,GAAAC,QAAG,OAAO,GAAGC,GAAiBF,EAAQ,IAAI,CAAC,GAAGA,EAAQ,IAAI,EAAE,CAC9D,EACC,IAAI,CAACG,EAAeC,IAAW,CAC9B,IAAIC,EAAe,wBAAwBF,CAAa,aACxD,OAAIC,IAAW,IACbC,EAAe,QAAQA,CAAY,IAE9B;AAAA,EAAKT,CAAO,WAAWS,CAAY,EAC5C,CAAC,EACA,KAAK,EAAE,CACZ,CAEA,SAASE,GAAcZ,EAA0BC,EAAyB,CACxE,IAAMC,EAAmBF,EAAO,OAAS,+BAAiC,GAEpEa,GAAgBb,EAAO,SAAS,QAAU,GAAK,EAAI,EAAI,EACvDc,EAAWX,GAAoBH,GAAQ,SAAW,CAAC,EAAGC,CAAO,EAE7Dc,EAASf,EAAO,OAAS,MAAMA,EAAO,KAAK,OAASA,EAAO,MAC3DgB,EAAY;AAAA,EAClBf,CAAO;AAAA,EACPA,CAAO,yCAAyCY,CAAY,KAAKE,CAAM,aAAaD,CAAQ;AAAA,EAC5Fb,CAAO,eAEP,MAAO,GAAGA,CAAO,MAAMD,EAAO,IAAI,sBAAsBA,EAAO,KAAK,aAAagB,CAAS;AAAA,EAC1Ff,CAAO,MAAMD,EAAO,cAAc,GAAGA,EAAO,kBAAkB,GAAGE,CAAgB,IAAIF,EAAO,QAAQ,EACtG,CAEA,SAASiB,GACPjB,EACAC,EACAiB,EACAC,EACAC,EACQ,CAER,IAAMC,EAAYrB,EAAO,eACrB,MACAA,EAAO,OACL,MACA,MACAsB,EAAStB,EAAO,eAAiB,SAAW,UAC5Cc,EAAWH,GAAsBX,GAAQ,SAAW,CAAC,EAAGC,CAAO,EAC/Dc,EAASf,EAAO,OAAS,MAAMA,EAAO,KAAK,OAASA,EAAO,MAC3DgB,EAAY,GAAGf,CAAO;AAAA,EAC5BA,CAAO,iBAAiBc,CAAM,aAAaD,CAAQ;AAAA,EACnDb,CAAO,eAUP,MAAO,GAR6BkB,EACjC,4BAA4BnB,EAAO,IAAI,EACvC,IACEuB,GACC,GAAGtB,CAAO,cAAcsB,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE;AAAA,CAChF,EACC,KAAK,EAAE,CAE2B,GAAGtB,CAAO,uBAAuBD,EAAO,IAAI;AAAA,EACjFC,CAAO,cAAcD,EAAO,KAAK;AAAA,EACjCgB,CAAS;AAAA,EACTf,CAAO,eAAeqB,CAAM,aAAaD,CAAS,GAAGrB,EAAO,cAAc,GAAGA,EAAO,kBAAkB;AAAA,EACtGC,CAAO,QAAQD,EAAO,IAAI;AAAA,EAC1BwB,GAAOxB,GAAQ,cAAc,QAAU,CAAC,EAAG,GAAGC,CAAO,OAAQiB,EAAUC,EAAQC,CAAoB,CAAC;AAAA,EACpGnB,CAAO,MAAMD,EAAO,QAAQ,EAC9B,CAEA,SAASyB,GACPzB,EACAC,EACAiB,EACAC,EACAC,EACQ,CACR,OAAIpB,EAAO,aACFiB,GACLjB,EACAC,EACAiB,EACAC,EACAC,CACF,EAEKR,GAAcZ,EAAQC,CAAO,CACtC,CAEA,SAASyB,GAAQ1B,EAA0BC,EAAyB,CAClE,IAAMC,EAAmBF,EAAO,OAAS,8BAAgC,GAEzE,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,0BAA0BA,EAAO,KAAK,cAAcA,EAAO,cAAc,GAAGA,EAAO,kBAAkB,GAAGE,CAAgB,IAAIF,EAAO,QAAQ,EAC/K,CAEA,SAAS2B,GAAY3B,EAA0BC,EAAyB,CACtE,IAAMC,EAAmBF,EAAO,OAAS,8BAAgC,GAEzE,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,0BAA0BA,EAAO,KAAK,eAAeA,EAAO,cAAc,GAAGA,EAAO,kBAAkB,GAAGE,CAAgB,IAAIF,EAAO,QAAQ,EAChL,CAEA,SAAS4B,GAAcxB,EAAyByB,EAA0B,CACxE,OAAOzB,EACJ,IAAKC,GAAY,CAChB,IAAIK,EAAe,GAAAJ,QAAG,OACpB,GAAGC,GAAiBF,EAAQ,IAAI,CAAC,GAAGA,EAAQ,IAAI,EAClD,EACA,OAAIwB,IACFnB,EAAe,MAAMA,CAAY,QAE5BA,CACT,CAAC,EACA,KAAK,KAAK,CACf,CAEA,SAASoB,GAAO9B,EAA0BC,EAAyB,CACjE,IAAMC,EAAmBF,EAAO,OAAS,gBAAkB,GAKrDgB,EAJWY,GACf5B,GAAQ,SAAW,CAAC,EACpBA,GAAQ,QAAU,EACpB,EAEM+B,EAAW,GAAG9B,CAAO,MAAMD,EAAO,IAAI,uFAAuFA,EAAO,KAAK,IAAIA,EAAO,cAAc,GAAGE,CAAgB,IACrL8B,EAAkB,GAAG/B,CAAO,MAAMD,EAAO,IAAI,SAASA,EAAO,IAAI,mCAAmCA,EAAO,KAAK,YAAYA,EAAO,KAAK,YAAYgB,CAAS,KAEnK,MAAO,GAAGe,CAAQ;AAAA,EAAKC,CAAe,GAAGhC,EAAO,QAAQ,EAC1D,CAEA,SAASiC,GACPjC,EACAC,EACAiB,EACQ,CACR,IAAMhB,EAAmBF,EAAO,OAAS,gBAAkB,GACrDkC,EAAaC,GAAejB,EAAU,WAAW,EACjDkB,EAAgBC,GAAWH,CAAU,EAAI,cAAgB,aAE/D,MAAO,GAAGjC,CAAO,MAAMD,EAAO,IAAI,8DAA8DA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,IAAIE,CAAgB,GAAGkC,CAAa,IAAIpC,EAAO,QAAQ,EACzN,CAEA,SAASsC,GAAStC,EAA0BC,EAAyB,CACnE,IAAMC,EAAmBF,EAAO,OAAS,gBAAkB,GACrDuC,EAAQC,GAAUxC,EAAQC,CAAO,EAEvC,MAAO,GAAGA,CAAO,MAAMD,EAAO,IAAI,2EAA2EA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,IAAIE,CAAgB,IAAIqC,CAAK,EAC5M,CAEA,SAASE,GAAUzC,EAA0BC,EAAyB,CACpE,IAAMe,EAAY;AAAA,EAClBf,CAAO;AAAA,EACPA,CAAO,gDAAgDD,EAAO,KAAK;AAAA,EACnEC,CAAO,gDAAgDD,EAAO,KAAK,KAAKA,EAAO,KAAK;AAAA,EACpFC,CAAO,iBAEP,MAAO,GAAGA,CAAO,MAAMD,EAAO,IAAI,cAAcgB,CAAS;AAAA,EACzDf,CAAO,gBAAgBD,EAAO,KAAK,KAAKA,EAAO,QAAQ,EACzD,CAEA,SAAS0C,GAAM1C,EAA0BC,EAAyB,CAChE,IAAMC,EAAmBF,EAAO,OAAS,8BAAgC,GAEzE,MAAO,GAAGC,CAAO,MAAMD,EAAO,IAAI,uCAAuCA,EAAO,KAAK,YAAYA,EAAO,KAAK,gBAAgBA,EAAO,KAAK,sDAAsDE,CAAgB,IAAIF,EAAO,QAAQ,EACpO,CAEA,IAAM2C,GAAsB,IAAI,IAQ9B,CACA,CAAC,UAAW5C,EAAO,EACnB,CAAC,UAAW0B,EAAO,EACnB,CAAC,UAAWC,EAAO,EACnB,CAAC,cAAeC,EAAW,EAC3B,CAAC,SAAUG,EAAM,EACjB,CAAC,OAAQG,EAAQ,EACjB,CAAC,WAAYA,EAAQ,EACrB,CAAC,OAAQA,EAAQ,EACjB,CAAC,WAAYK,EAAQ,EACrB,CAAC,YAAaG,EAAS,EACvB,CAAC,QAASC,EAAK,CAEjB,CAAC,EAED,SAASE,GACP5C,EACAC,EACAiB,EACAC,EACAC,EACQ,CACR,IAAMyB,EAASC,GAAe9C,EAAQkB,EAAUjB,CAAO,EACjD8C,EAAwB5B,EAAO,0BACnCnB,EAAO,KACPoB,CACF,EACA2B,EAAsB,QAASxB,GAAgB,CAC7CH,EAAqB,IAAIG,EAAY,EAAE,CACzC,CAAC,EACD,IAAMyB,EAAeC,GACnBF,EACA9C,EACAiB,EACAC,CACF,EAEA,OAEGwB,GAAoB,IAAI3C,EAAO,IAAI,GAAKyB,IACvCoB,EACA5C,EACAiB,EACAC,EACAC,CACF,EACA4B,EACA;AAAA,CAEJ,CAEA,SAASxB,GACP0B,EACAjD,EACAiB,EACAC,EACAC,EACQ,CACR,OAAO8B,EACJ,IAAKlD,GACJ4C,GAAM5C,EAAQC,EAASiB,EAAUC,EAAQC,CAAoB,CAC/D,EACC,KAAK,EAAE,CACZ,CAGA,SAAS+B,GACP5B,EACAtB,EACAiB,EACAC,EACQ,CAER,IAAMJ,EAAS,GAAGqC,GAAkB7B,EAAY,OAAS,GAAG,CAAC,GAIvD8B,EAAkB9B,EAAY,MAChC,WAAWA,EAAY,KAAK,IAC5B,GACE+B,EAAsB/B,EAAY,MACpC,eAAeA,EAAY,KAAK,IAChC,GACEF,EAAYE,EAAY,MAAQ,aAAaA,EAAY,KAAK,GAAK,GACnEgC,EAAShC,EAAY,MAEvB,aAAaA,EAAY,KAAO,IAAMA,EAAY,KAAO,IAAM,GAAG,GAAGA,EAAY,KAAK,GAEtF,aAAaA,EAAY,KAAO,IAAMA,EAAY,KAAO,EAAE,GAGzDiC,EAAQrC,EAAO,gBAAgBI,EAAY,IAAI,GAAG,aACpD,mBAAmBA,EAAY,IAAI,IACnC,GACEkC,EAAQtC,EAAO,gBAAgBI,EAAY,EAAE,GAAG,aAClD,mBAAmBA,EAAY,EAAE,IACjC,GACEmC,EAAkB,MAAMnC,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,GAElF,GAAIoC,GAAgBxC,EAAQI,CAAW,EAAG,CAGxC,GAAM,CAAE,WAAAqC,EAAY,WAAAC,CAAW,EAAIC,GACjC5C,EACAC,EACAI,CACF,EAGIwC,EAAe,GACnB,GAAIxC,EAAY,KAAM,CACpB,IAAMyC,EAAY,QAAQN,CAAe,GACnCO,EAAc;AAAA,EAAKhE,CAAO,MAAM+D,CAAS,iBAAiBzC,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,0DAC9GgB,EAAQ;AAAA,EAAKtC,CAAO,MAAM+D,CAAS,aAAaE,GAAY3C,EAAY,IAAI,CAAC,yFACnFwC,EAAeE,EAAc1B,CAC/B,CAIA,IAAM4B,EAAkB;AAAA,EAAKlE,CAAO,MAAMsB,EAAY,IAAI,iBAAiBA,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,aAAaR,CAAM,2BAA2BwC,CAAM,IAAIK,CAAU,GAAGJ,CAAK,GAAGH,CAAe,GAAGC,CAAmB,GAAGjC,CAAS,IACvP+C,EAAgB;AAAA,EAAKnE,CAAO,cAAcsB,EAAY,IAAI,IAAIA,EAAY,EAAE,IAAIA,EAAY,EAAE,SAASA,EAAY,EAAE,aAAagC,CAAM,IAAIE,CAAK,GAAGI,CAAU,GAAGR,CAAe,GAAGhC,CAAS,IAClM,OAAO8C,EAAkBC,EAAgBL,CAC3C,CAIA,GAAIxC,EAAY,KAAM,CACpB,IAAMyC,EAAY,QAAQN,CAAe,GACnCW,EAAgB,KAAKL,CAAS,GAC9BM,EAAY;AAAA,EAAKrE,CAAO,MAAMoE,CAAa,uEAC3CF,EAAkB;AAAA,EAAKlE,CAAO,MAAMsB,EAAY,IAAI,SAAS8C,CAAa,oBAAoBb,CAAK,GAAGH,CAAe,GAAGhC,CAAS,IACjI+C,EAAgB;AAAA,EAAKnE,CAAO,MAAMoE,CAAa,SAAS9C,EAAY,EAAE,aAAaR,CAAM,IAAI0C,CAAK,GAAGJ,CAAe,GAAGC,CAAmB,GAAGjC,CAAS,IACtJ4C,EAAc;AAAA,EAAKhE,CAAO,MAAMoE,CAAa,SAASL,CAAS,0DAC/DzB,EAAQ;AAAA,EAAKtC,CAAO,MAAM+D,CAAS,aAAaE,GAAY3C,EAAY,IAAI,CAAC,yFAEnF,OAAO+C,EAAYH,EAAkBC,EAAgBH,EAAc1B,CACrE,CAEA,MAAO;AAAA,EAAKtC,CAAO,MAAMsB,EAAY,IAAI,SAASA,EAAY,EAAE,aAAaR,CAAM,YAAYwC,CAAM,IAAIC,CAAK,GAAGC,CAAK,GAAGJ,CAAe,GAAGC,CAAmB,GAAGjC,CAAS,GAC5K,CAEA,SAAS4B,GACPsB,EACAtE,EACAiB,EACAC,EACQ,CACR,OAAOoD,EACJ,IAAKhD,GAAgB4B,GAAW5B,EAAatB,EAASiB,EAAUC,CAAM,CAAC,EACvE,KAAK,EAAE,CACZ,CAGe,SAARqD,GACLC,EACAvD,EAA2B,CAAC,EAC5BjB,EAAkB,GACV,CACR,IAAMyE,EAAmBC,GACvBxC,GAAejB,EAAU,QAAQ,EACjCiB,GAAejB,EAAU,WAAW,EACpCA,GAAU,eAAiB,CAAC,CAC9B,EACM0D,EAAkBC,GAAoB3D,EAAS,cAAgB,CAAC,CAAC,EACjE4D,EAAkBC,GAAoB7D,EAAS,cAAgB,CAAC,CAAC,EACjE8D,EAAS,IAAIC,GAAkBR,CAAa,EAC5CS,EAAoC,IAAI,IACxCC,EAAU3D,GACdiD,EAAc,OACdxE,EACAiB,EACA8D,EACAE,CACF,EA4BME,EAAwBnC,GAC5B+B,EAAO,qBAAqB,OACzBzD,GAAgB,CAAC2D,EAAqB,IAAI3D,EAAY,EAAE,CAC3D,EACAtB,EACAiB,EACA8D,CACF,EAEA,MAAO;AAAA,IACLN,CAAgB;AAAA,UACVE,CAAe;AAAA,UACfE,CAAe;AAAA;AAAA,EAEvBK,CAAO,GAAGC,CAAqB;AAAA;AAAA,CAGjC,CG/bA,IAAIC,GAAG,YAAYC,GAAE,WAAWC,GAAG,YAAYC,GAAG,WAAeC,GAAG,WAAWC,GAAG,SAASC,EAAEC,EAAEC,EAAE,CAAC,GAAGP,GAAE,UAAU,MAAM,OAAOA,GAAE,UAAU,MAAM,KAAKK,EAAEC,EAAEC,CAAC,GAAGD,GAAG,MAAMA,EAAE,KAAKA,EAAE,IAAIC,GAAG,MAAMA,EAAEF,EAAE,UAAUE,EAAEF,EAAE,QAAQ,IAAIG,EAAE,IAAIR,GAAEO,EAAED,CAAC,EAAE,OAAOE,EAAE,IAAIH,EAAE,SAASC,EAAEC,CAAC,CAAC,EAAEC,CAAC,EAAEC,GAAG,SAASJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,GAAGR,GAAE,UAAU,KAAK,OAAOA,GAAE,UAAU,KAAK,KAAKK,EAAEC,EAAEC,EAAEC,CAAC,EAAE,KAAKD,GAAG,MAAMA,EAAE,KAAKA,EAAE,IAAIC,GAAG,MAAMA,EAAEH,EAAE,UAAUG,EAAEH,EAAE,QAAQE,EAAEC,EAAE,EAAED,EAAEF,EAAEE,CAAC,EAAED,EAAE,OAAOD,CAAC,EAAEK,GAAG,SAASL,EAAEC,EAAEC,EAAEC,EAAE,CAAC,GAAGR,GAAE,UAAU,WAAW,OAAOA,GAAE,UAAU,WAAW,KAAKK,EAAEC,EAAEC,EAAEC,CAAC,EAAE,KAAKD,GAAG,MAAMA,EAAE,KAAKA,EAAE,IAAIC,GAAG,MAAMA,EAAEH,EAAE,UAAUG,EAAEH,EAAE,QAAQE,EAAEC,GAAGH,EAAEC,GAAG,EAAED,EAAEE,GAAG,CAAC,EAAMI,GAAG,CAAC,oBAAoB,kCAAkC,qBAAqB,wBAAwB,8BAA8B,gBAAgB,EAAEC,GAAE,SAASP,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAE,IAAI,MAAMF,GAAGK,GAAGN,CAAC,CAAC,EAAE,GAAGG,EAAE,KAAKH,EAAE,MAAM,mBAAmB,MAAM,kBAAkBG,EAAEI,EAAC,EAAE,CAACL,EAAE,MAAMC,EAAE,OAAOA,CAAC,EAAEK,GAAG,SAASR,EAAEC,EAAEC,EAAE,CAAC,QAAQC,EAAE,EAAEM,EAAE,EAAEN,EAAED,EAAE,EAAEC,EAAEM,GAAGT,EAAEC,GAAG,IAAIE,GAAG,GAAG,OAAOM,CAAC,EAAEC,GAAG,SAASV,EAAEC,EAAE,CAAC,OAAOD,EAAEC,CAAC,EAAED,EAAEC,EAAE,CAAC,GAAG,EAAED,EAAEC,EAAE,CAAC,GAAG,GAAGD,EAAEC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAEU,GAAG,SAASX,EAAEC,EAAE,CAAC,IAAIC,EAAEF,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,GAAG,GAAGE,GAAG,SAASF,EAAE,CAAC,GAAG,IAAI,CAAC,IAAIG,EAAEH,EAAE,CAAC,EAAES,EAAEN,GAAG,EAAE,EAAES,EAAET,GAAG,EAAE,EAAEU,EAAEV,EAAE,EAAEW,EAAEX,GAAG,EAAEA,EAAE,GAAGI,GAAE,CAAC,EAAE,IAAIQ,EAAE,EAAEN,EAAEO,EAAEH,GAAG,EAAE,EAAEA,EAAEI,EAAET,GAAGR,EAAEe,EAAEC,CAAC,EAAED,GAAGC,EAAE,IAAIE,EAAEJ,EAAE,GAAGA,EAAEL,EAAEU,EAAEX,GAAGR,EAAEe,EAAEG,CAAC,GAAGJ,GAAG,GAAG,KAAKM,EAAED,EAAE,GAAG,CAACV,EAAE,CAAC,IAAIY,EAAE,GAAG,IAAIrB,EAAE,CAAC,GAAG,GAAGoB,EAAEC,GAAGA,GAAG,IAAIrB,EAAE,CAAC,EAAE,EAAE,CAACoB,EAAE,YAAYb,GAAE,CAAC,EAAE,IAAIe,EAAE,IAAI3B,IAAGM,GAAG,EAAEkB,GAAGC,EAAEnB,EAAE,EAAEmB,GAAG,EAAE,EAAE,OAAOE,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEP,EAAEG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAED,EAAE,EAAEhB,GAAGA,GAAG,EAAEA,EAAEqB,EAAE,SAAS,EAAE,EAAE,EAAEF,EAAE,EAAE,IAAItB,GAAGwB,EAAE,OAAO,EAAE,CAAC,EAAE,EAAEH,EAAE,EAAEP,EAAE,EAAE,KAAK,IAAI,OAAOQ,CAAC,CAAC,CAAC,UAAUlB,GAAG,EAAEF,EAAE,CAAC,GAAG,KAAK,SAAS,OAAOU,GAAGV,EAAE,CAAC,EAAE,EAAEO,GAAE,CAAC,CAAC,EAAEgB,GAAG,SAASvB,EAAE,CAAC,QAAQC,EAAE,EAAE,GAAGA,GAAGD,EAAE,EAAEC,EAAE,CAAC,OAAOA,EAAE,CAAC,EAAEuB,GAAG,SAASxB,EAAEC,EAAEC,EAAE,CAAC,IAAIC,GAAGF,GAAG,GAAG,EAAEQ,GAAGT,EAAEC,CAAC,EAAE,IAAI,EAAEQ,EAAEP,GAAGK,GAAE,CAAC,EAAE,QAAQK,EAAE,GAAGH,EAAEI,EAAED,EAAEE,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAEL,EAAEM,EAAE,IAAIxB,GAAG,KAAKkB,GAAG,EAAE,EAAEO,EAAE,IAAItB,GAAGqB,EAAE,EAAE,GAAG,EAAEE,EAAE,IAAIxB,GAAGsB,EAAE,EAAE,GAAG,EAAEG,EAAE,IAAIzB,GAAGsB,EAAE,IAAIN,CAAC,EAAEU,EAAE,KAAKV,GAAG,GAAGa,EAAE,IAAI9B,GAAEuB,EAAEI,EAAEV,CAAC,EAAEc,EAAG,IAAI/B,GAAEuB,EAAEI,EAAEV,CAAC,EAAEE,EAAE,KAAKD,EAAE,GAAG,CAAC,IAAIc,EAAEJ,GAAGV,EAAE,CAAC,EAAEe,EAAEzB,GAAG,EAAE0B,GAAI,GAAGF,EAAE,GAAG,EAAEG,GAAG9B,EAAE4B,CAAC,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,MAAMzB,EAAE,GAAG0B,EAAGE,GAAG,GAAGJ,GAAG,EAAEK,GAAEH,EAAGhB,EAAE,EAAEoB,GAAEH,EAAEC,EAAE,GAAGE,GAAED,IAAG7B,GAAGwB,EAAEG,EAAEG,KAAI9B,GAAGwB,EAAE,EAAEG,EAAEC,IAAID,GAAGE,KAAIb,EAAE,EAAEL,CAAC,EAAE,EAAEgB,EAAEA,GAAG,IAAIjB,GAAGiB,EAAEL,EAAE,EAAER,CAAC,EAAEH,GAAGD,GAAGiB,EAAE,CAACA,EAAE,EAAE,CAAC,IAAII,GAAG/B,GAAG,EAAEY,GAAGf,EAAEkC,EAAE,EAAElC,EAAEkC,GAAG,CAAC,GAAG,KAAK/B,EAAE,GAAG,EAAEA,GAAG,EAAEW,GAAGC,CAAC,OAAOA,GAAG,EAAE,EAAED,EAAE,KAAKD,IAAIN,GAAE,CAAC,EAAE,QAAQ4B,EAAE,EAAEC,GAAGxB,GAAG,IAAIA,GAAG,GAAG,EAAEyB,GAAGzB,EAAE,EAAE0B,GAAG,EAAEA,IAAIxB,EAAE,EAAEwB,GAAG,CAAC,IAAIC,GAAEpB,EAAEmB,EAAE,EAAE,GAAGC,GAAE,EAAE,CAACnB,EAAEkB,EAAE,EAAE,CAACC,GAAE,QAAQ,CAAC,IAAIvB,EAAE,EAAEA,EAAEuB,GAAE,EAAEvB,EAAE,CAACS,EAAEU,CAAC,EAAEG,GAAG,GAAGH,EAAEA,EAAEC,EAAEC,SAASF,GAAGlB,EAAE,CAAC,CAAC,IAAIkB,GAAG5B,GAAE,CAAC,EAAES,EAAE,EAAEA,EAAEJ,EAAE,EAAEI,EAAE,CAAC,IAAIwB,EAAEpB,EAAEK,EAAET,CAAC,CAAC,IAAIyB,GAAEf,EAAGV,CAAC,EAAEP,EAAEc,GAAGiB,CAAC,EAAEnB,EAAEL,CAAC,GAAGwB,GAAGC,IAAG7B,CAAC,CAAC,MAAM,CAACT,EAAE,GAAG,EAAE,CAAC,EAAEM,EAAE,EAAEgB,EAAE,EAAEC,EAAG,EAAEL,CAAC,CAAC,CAAC,EAAEqB,GAAG,SAAS1C,EAAEC,EAAE,CAAC,IAAIC,EAAE,EAAEC,EAAE,GAAGM,EAAE,IAAId,GAAE,GAAG,EAAEiB,EAAEZ,EAAEC,CAAC,EAAEY,EAAEJ,EAAE,SAAS,EAAE,GAAG,EAAEK,EAAEL,EAAE,SAAS,IAAI,GAAG,EAAEM,EAAE,IAAInB,GAAGa,EAAE,OAAO,GAAG,EAAE,GAAGG,EAAE,IAAI,CAAC,IAAII,EAAEQ,GAAGxB,EAAEC,EAAE,EAAE,CAAC,EAAEgB,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAEf,GAAGW,EAAE,IAAIO,EAAEF,GAAG,EAAEG,EAAEpB,EAAEC,CAAC,EAAEmB,GAAGb,GAAE,CAAC,EAAE,QAAQc,EAAE,EAAEC,EAAE,EAAEG,EAAEP,EAAE,EAAEQ,EAAGD,EAAEE,GAAG,EAAE1B,GAAG,GAAG,EAAEsB,GAAGH,CAAC,EAAEO,GAAGF,EAAE,EAAEE,EAAER,IAAI,CAAC,IAAIS,EAAED,GAAG,EAAE,GAAGN,IAAIrB,EAAE4B,CAAC,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,KAAKD,EAAE,IAAI,GAAGF,GAAG,EAAEZ,EAAE,EAAEV,CAAC,EAAEe,EAAE,EAAEG,CAAC,EAAEM,GAAGD,EAAGC,EAAER,EAAE,MAAMS,EAAED,GAAG,EAAEL,IAAItB,EAAE4B,CAAC,EAAE5B,EAAE4B,EAAE,CAAC,GAAG,KAAKD,EAAE,IAAI,GAAGD,GAAI,EAAEb,EAAE,EAAEV,CAAC,EAAEe,EAAE,EAAEI,CAAC,EAAEG,EAAEP,EAAE,EAAEG,CAAC,EAAEA,EAAEH,EAAE,EAAEG,CAAC,EAAEK,EAAGR,EAAE,EAAEI,CAAC,EAAEA,EAAEJ,EAAE,EAAEI,CAAC,CAAC,CAAC,EAAEnB,EAAE,KAAKI,GAAE,CAAC,CAAC,KAAK,CAAC,IAAIJ,EAAES,EAAE,IAAIV,EAAEC,EAAED,GAAG,EAAE,CAAC,IAAI2B,EAAG7B,EAAE,EAAEC,CAAC,EAAEY,EAAEX,CAAC,EAAE2B,GAAI,EAAEhB,EAAEX,EAAE,CAAC,EAAE2B,EAAG,EAAE,CAAC,EAAE5B,CAAC,CAAC,IAAI6B,EAAE,EAAE,IAAI5B,EAAE,EAAEA,EAAEC,EAAE,EAAED,EAAE,CAAC,IAAI6B,EAAElB,EAAEX,CAAC,EAAE6B,EAAE,IAAIxB,GAAE,CAAC,EAAEuB,GAAGC,GAAG,GAAGA,EAAE,CAAC,CAAC,IAAIC,GAAET,GAAGO,CAAC,EAAE,EAAEG,GAAE,GAAGD,GAAEE,GAAGD,GAAEH,EAAE,IAAII,GAAGA,GAAG,GAAG3B,GAAE,CAAC,EAAEM,EAAEV,GAAG,EAAEoB,GAAGW,EAAE,EAAE,EAAEhC,EAAE,EAAEA,EAAEC,EAAE,EAAED,EAAE,CAAC,IAAI6B,EAAElB,EAAEX,CAAC,EAAE,EAAEY,EAAED,EAAEX,CAAC,EAAE6B,GAAGC,GAAE,EAAED,CAAC,CAAC,CAAC,IAAII,EAAE,IAAIxC,GAAEsC,IAAG,CAAC,EAAEG,EAAED,EAAE,SAAS,EAAEF,EAAC,EAAEI,GAAGF,EAAE,SAASF,EAAC,EAAE,IAAIlB,EAAEiB,EAAC,EAAE,EAAE9B,EAAE8B,GAAE9B,EAAE,EAAE,EAAEA,EAAE,CAAC,IAAIoC,GAAGvB,EAAEb,CAAC,EAAEE,GAAGiC,GAAGnC,EAAEoC,GAAGvB,EAAEb,EAAE,CAAC,EAAEoC,GAAGxB,EAAEZ,CAAC,GAAG,GAAG8B,GAAE9B,EAAE,CAAC,CAAC,IAAIa,EAAE,CAAC,GAAGkB,IAAG1B,GAAE,CAAC,EAAEL,EAAE,EAAEA,EAAEC,EAAE,EAAED,EAAE,CAAC,IAAIqC,GAAE1B,EAAEX,CAAC,EAAE,GAAGqC,GAAE,CAAC,IAAIC,EAAEzB,EAAEwB,EAAC,EAAEnC,GAAGgC,EAAElC,EAAEsC,EAAEzB,EAAEwB,EAAC,EAAEC,GAAG,GAAGR,GAAEO,GAAE,CAAC,CAAC,CAAC,MAAM,CAACtC,EAAE,CAAC,EAAEoC,GAAG,EAAEL,GAAE,EAAEI,CAAC,CAAC,CAAC,EAAEO,GAAGnB,GAAG,IAAI7B,GAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEiD,GAAGpB,GAAG,IAAI7B,GAAE,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEkD,GAAGrB,GAAG,IAAI7B,GAAE,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEmD,GAAG,SAAS9C,EAAEC,EAAE,CAAC,QAAQC,EAAEF,EAAE,OAAOG,EAAE,IAAIL,GAAGI,CAAC,EAAEO,EAAE,EAAEA,EAAEP,EAAE,EAAEO,EAAEN,EAAEM,CAAC,EAAER,EAAEA,GAAG,GAAGD,EAAES,CAAC,EAAE,OAAON,CAAC,EAAE4C,GAAG,IAAIpD,GAAE,IAAIG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,SAAS,UAAU,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAEkD,GAAGF,GAAGC,GAAG,CAAC,EAAEE,GAAG,IAAItD,GAAE,IAAIG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,SAAS,UAAU,UAAU,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAEoD,GAAGJ,GAAGG,GAAG,CAAC,EAAEE,GAAG,SAASnD,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEH,EAAE,OAAOS,EAAER,EAAE,OAAOW,EAAEZ,EAAEG,EAAE,CAAC,EAAEU,GAAG,GAAGX,EAAE,GAAG,EAAEY,EAAE,CAACZ,EAAE,EAAEU,GAAGL,GAAE,CAAC,EAAE,QAAQQ,EAAE,EAAEC,EAAEd,EAAE,EAAEe,GAAGd,GAAG,GAAG,EAAEoB,GAAGX,CAAC,EAAEI,EAAEE,EAAE,GAAGD,EAAEH,GAAGI,EAAET,GAAG,CAAC,IAAIU,EAAEF,GAAG,EAAEG,GAAGpB,EAAEmB,CAAC,EAAEnB,EAAEmB,EAAE,CAAC,GAAG,EAAEnB,EAAEmB,EAAE,CAAC,GAAG,MAAMF,EAAE,GAAGF,GAAGA,GAAGC,EAAEI,GAAGP,EAAEZ,EAAE,EAAEiB,CAAC,EAAEhB,EAAE,EAAEa,CAAC,EAAEE,GAAGD,EAAEd,EAAE,EAAEa,CAAC,CAAC,EAAEE,GAAGH,GAAGI,EAAE,GAAGT,IAAIF,GAAE,CAAC,CAAC,EAAE6C,GAAG,SAASpD,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAE,EAAEM,EAAER,EAAE,OAAOW,EAAEH,EAAE,GAAG,EAAEI,EAAED,GAAG,EAAEE,EAAEF,EAAEC,EAAEsC,GAAGnD,EAAE,SAASG,EAAEA,GAAGH,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,CAAC,EAAEC,EAAE,SAAS,EAAEW,CAAC,EAAEV,CAAC,EAAEiD,GAAGnD,EAAE,SAASG,EAAEA,GAAGH,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,CAAC,EAAEC,EAAE,SAASW,EAAEC,CAAC,EAAEX,CAAC,EAAEiD,GAAGnD,EAAE,SAASG,EAAEA,GAAGH,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG,CAAC,EAAEC,EAAE,SAASY,EAAEC,CAAC,EAAEZ,CAAC,EAAEiD,GAAGnD,EAAE,SAASG,CAAC,EAAEF,EAAE,SAASa,CAAC,EAAEZ,CAAC,CAAC,EAAEmD,GAAG,SAASrD,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAEM,EAAER,EAAE,EAAEW,EAAEZ,EAAES,CAAC,EAAEI,EAAED,GAAG,EAAE,EAAEX,EAAE,EAAEW,EAAE,EAAE,IAAIE,EAAEF,GAAG,EAAEZ,EAAES,EAAE,CAAC,GAAG,EAAET,EAAES,EAAE,CAAC,GAAG,GAAGM,GAAGN,GAAG,GAAGK,EAAE,GAAGD,GAAG,EAAE,OAAOJ,GAAGT,EAAE,OAAO,QAAQC,EAAE,EAAEQ,EAAE,EAAEP,GAAGE,GAAGF,EAAEF,EAAES,CAAC,EAAER,EAAE,EAAEA,EAAE,GAAGa,CAAC,EAAEZ,GAAGE,GAAG,IAAIT,GAAEmB,CAAC,EAAEd,EAAES,CAAC,CAAC,GAAG,GAAG,EAAEM,EAAEf,EAAE,QAAQ,CAAC,GAAGa,GAAG,EAAE,OAAOZ,EAAE,EAAEc,EAAEb,GAAGA,EAAE,IAAIF,EAAE,SAASS,EAAEM,CAAC,EAAEd,EAAE,CAAC,EAAEA,EAAE,GAAGa,EAAEZ,GAAGH,GAAGC,EAAES,EAAEM,CAAC,EAAE,GAAGF,GAAG,EAAE,CAAC,IAAIG,EAAEhB,EAAES,CAAC,EAAEQ,EAAED,EAAE,EAAEE,EAAEF,GAAG,EAAE,EAAEG,EAAEH,GAAG,EAAEI,EAAE,EAAEC,EAAE,EAAEJ,EAAE,EAAEC,EAAE,EAAEC,GAAGnB,EAAE,EAAES,CAAC,GAAG,GAAGS,EAAE,GAAGlB,EAAE,EAAES,CAAC,GAAG,IAAIU,EAAEH,GAAG,GAAGK,EAAEH,EAAEA,EAAE,GAAGC,IAAInB,EAAE,EAAES,CAAC,EAAE,KAAK,EAAEW,EAAEpB,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,GAAGS,GAAG,GAAGC,GAAGnB,EAAE,EAAES,CAAC,GAAG,GAAGT,EAAE,EAAES,CAAC,EAAE,IAAI,GAAGW,EAAEpB,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,IAAIU,GAAGnB,EAAE,EAAES,CAAC,GAAG,GAAGT,EAAE,EAAES,CAAC,EAAE,KAAK,GAAGW,EAAEpB,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,EAAET,EAAE,EAAES,CAAC,GAAG,KAAK,EAAEA,EAAE,IAAIa,EAAEpB,EAAEA,EAAE,SAASD,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,IAAIN,GAAEM,EAAE,CAAC,EAAEwB,EAAEH,EAAE,OAAOH,EAAE,GAAGF,GAAG,EAAEK,EAAE,IAAItB,EAAE,SAASS,EAAEA,GAAGU,CAAC,EAAEM,CAAC,UAAUR,GAAG,EAAEb,GAAGkB,EAAEtB,EAAES,GAAG,EAAEgB,CAAC,MAAM,CAAC,IAAIC,EAAGzB,EAAE,EAAE,GAAGgB,GAAG,EAAE,CAAC,IAAIU,EAAEe,GAAG1C,EAAES,CAAC,EAAEW,GAAGX,GAAGA,EAAEkB,EAAE,CAAC,GAAG1B,EAAE,EAAEyB,EAAGC,EAAE,CAAC,CAAC,MAAMD,GAAInB,GAAE,CAAC,GAAGc,EAAE+B,GAAGD,IAAInD,EAAE,SAASS,EAAEA,GAAGW,CAAC,EAAEE,EAAE,SAASG,CAAC,EAAEC,CAAE,CAAC,CAAC,IAAIE,EAAE5B,EAAES,GAAG,EAAE,GAAGmB,EAAE,CAACA,GAAG,IAAIA,GAAG5B,EAAES,GAAG,EAAET,EAAES,GAAG,GAAG,GAAG,MAAMmB,EAAE,MAAMA,EAAEA,EAAE,KAAK,EAAE5B,EAAES,GAAG,GAAG,IAAIoB,EAAG7B,EAAES,GAAG,EAAEoB,EAAG,GAAGtB,GAAE,CAAC,EAAE,QAAQuB,EAAE,CAACc,GAAGC,GAAGF,EAAE,EAAEZ,EAAE,EAAEA,EAAE,GAAG,EAAEA,EAAE,CAAC,IAAIC,GAAEH,IAAKE,GAAG,GAAG,EAAE,EAAE,GAAGC,IAAG,EAAE,CAAC,IAAIC,GAAE,IAAItC,GAAE,CAAC,EAAE,EAAEK,EAAES,GAAG,CAAC,CAAC,EAAEqB,EAAEC,CAAC,EAAE,CAAC,EAAEE,GAAE,SAAS,EAAE,CAAC,EAAE,EAAEA,GAAE,SAAS,EAAE,CAAC,EAAE,EAAE,IAAIrC,GAAGqC,GAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAMD,IAAG,GAAG7B,EAAEqB,GAAGxB,EAAES,EAAE,GAAGsB,EAAE,EAAE,EAAEtB,EAAEN,EAAE,CAAC,EAAE2B,EAAEC,CAAC,EAAE5B,EAAE,CAAC,GAAG6B,IAAG,IAAI/B,EAAE,GAAGM,GAAE,CAAC,EAAEuB,EAAEC,CAAC,EAAE9B,EAAE,EAAE8B,CAAC,EAAE,CAAC,IAAIG,GAAGjC,EAAE,EAAE6B,EAAEK,EAAED,GAAG,CAAC,EAAEE,EAAEF,GAAG,CAAC,EAAEG,GAAGH,GAAG,CAAC,EAAEI,GAAGtC,EAAEe,EAAE,CAAC,EAAEuB,IAAI/B,GAAE,CAAC,EAAE,IAAIgC,IAAGxB,GAAG,GAAG,EAAEQ,GAAGe,EAAE,EAAED,GAAG,EAAEG,EAAED,IAAG,EAAEE,GAAE,EAAEa,GAAItD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGF,GAAG,GAAG,EAAEG,GAAGD,IAAGH,EAAE,IAAI,EAAE,IAAImB,IAAIvD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGH,EAAE,GAAG,EAAEI,GAAGD,IAAGJ,EAAE,IAAI,EAAE,IAAIqB,IAAIxD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGJ,EAAE,GAAG,EAAE,IAAI,EAAEP,EAAE,EAAEA,GAAG,CAAC,IAAI6B,GAAGpB,GAAG,EAAEiB,CAAE,EAAEI,GAAGrB,GAAG,EAAEiB,CAAE,EAAEK,GAAGxB,EAAE,EAAEqB,EAAE,EAAEI,GAAGzB,EAAE,EAAEqB,EAAE,EAAEK,GAAGzB,EAAE,EAAEmB,EAAE,EAAEO,GAAG1B,EAAE,EAAEmB,EAAE,EAAEf,GAAGD,IAAGsB,KAAK,EAAE,IAAIE,GAAG,GAAGF,GAAGG,GAAGD,KAAK/D,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,EAAExC,EAAEwC,EAAE,CAAC,GAAG,GAAGxC,EAAEwC,EAAE,CAAC,GAAG,OAAOD,GAAE,GAAGwB,GAAG,GAAGvB,GAAGD,IAAGU,GAAGU,EAAE,IAAI,EAAE,IAAIM,GAAGf,GAAGS,EAAE,IAAI3D,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,EAAExC,EAAEwC,EAAE,CAAC,GAAG,MAAMD,GAAE,IAAI,GAAGU,GAAGU,EAAE,GAAG,GAAGnB,GAAGD,IAAGQ,GAAGU,EAAE,IAAI,EAAE,IAAIS,GAAGlB,GAAGS,EAAE,IAAIzD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,EAAExC,EAAEwC,EAAE,CAAC,GAAG,MAAMD,GAAE,IAAI,GAAGQ,GAAGU,EAAE,GAAG,GAAG,GAAGjB,GAAGD,IAAGmB,KAAK,EAAEJ,EAAGjB,GAAG,EAAEiB,CAAE,IAAItD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGmB,IAAI,GAAGlB,GAAGD,IAAGqB,KAAK,EAAEJ,GAAGrB,EAAE,EAAEqB,EAAE,IAAIxD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGqB,IAAI,GAAGpB,GAAGD,IAAGuB,KAAK,EAAEP,GAAGnB,EAAE,EAAEmB,EAAE,IAAIvD,EAAEwC,CAAC,EAAExC,EAAEwC,EAAE,CAAC,GAAG,KAAKD,GAAE,IAAI,GAAGuB,IAAI,GAAGE,GAAG,EAAE/D,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAE+D,IAAI,MAAM,CAAC,IAAIG,GAAGH,IAAIE,IAAI,GAAGC,IAAIH,GAAGG,IAAI,EAAElE,EAAE,EAAE,CAAC,EAAE,EAAEA,EAAE,EAAEkE,EAAE,EAAEA,GAAG,IAAIlE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,GAAGA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAE+D,IAAIA,GAAG/D,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ8B,EAAE,EAAEA,EAAEmC,GAAG,EAAEnC,EAAET,EAAEmB,GAAEV,CAAC,EAAET,EAAEG,EAAEM,CAAC,EAAEU,IAAGyB,GAAGzC,GAAGyC,GAAG,IAAIE,GAAG3B,GAAEuB,GAAG,GAAGI,GAAG,EAAE,CAAC,IAAIC,GAAG,CAACD,GAAGE,GAAGrE,EAAE,EAAEmE,GAAGC,GAAGJ,KAAKI,GAAGJ,IAAI,QAAQlC,EAAE,EAAEA,EAAEsC,GAAG,EAAEtC,EAAET,EAAEmB,GAAEV,CAAC,EAAE9B,EAAE,EAAEqE,GAAGvC,CAAC,EAAEU,IAAG4B,GAAGJ,IAAII,GAAGD,GAAG,CAAC,CAAC,QAAQrC,EAAE,EAAEA,EAAEkC,GAAG,EAAElC,EAAET,EAAEmB,GAAEV,CAAC,EAAET,EAAE8C,GAAGrC,CAAC,EAAEU,IAAGwB,EAAE,CAAC,GAAGxB,IAAGhB,EAAE,KAAKA,EAAEH,EAAE,QAAQA,EAAEmB,IAAG,EAAEnB,EAAEG,GAAG,OAAOgB,GAAEnB,EAAE,OAAOpB,EAAED,EAAE,GAAGwC,GAAEnB,EAAEvB,GAAGuB,EAAE,EAAEmB,EAAC,CAAC,SAASvC,GAAG,GAAGD,EAAE,GAAGkB,EAAEM,EAAE,QAAQM,EAAE,EAAEA,EAAEZ,EAAE,EAAEY,EAAET,EAAES,CAAC,EAAET,EAAEG,EAAEM,CAAC,OAAON,IAAIH,EAAEvB,GAAGuB,EAAEG,CAAC,GAAG,OAAOxB,EAAE,EAAEc,EAAEO,CAAC,CAACf,GAAE,CAAC,CAAC,CAAC,EAAEgE,GAAG,SAASvE,EAAEC,EAAE,CAAC,GAAGD,EAAE,QAAQ,EAAE,OAAOA,EAAE,CAAC,EAAE,QAAQE,EAAE,IAAIP,GAAEM,CAAC,EAAEE,EAAE,EAAEM,EAAE,EAAEN,EAAEH,EAAE,OAAO,EAAEG,EAAE,CAAC,IAAIS,EAAEZ,EAAEG,CAAC,EAAED,EAAE,IAAIU,EAAEH,CAAC,EAAEA,GAAGG,EAAE,MAAM,CAAC,OAAOV,CAAC,EAAE,SAASsE,GAAGxE,EAAEC,EAAE,CAAC,QAAQC,EAAE,CAAC,EAAEC,EAAE,CAAC,CAACF,EAAEQ,EAAE,EAAEG,EAAE,EAAEZ,EAAE,QAAQ,CAAC,IAAIa,EAAEF,GAAGX,EAAEG,GAAGF,CAAC,EAAE,GAAG,OAAOY,GAAG,SAAS,CAAC,IAAIV,GAAGF,EAAE,KAAKY,EAAE,EAAE,QAAQA,EAAE,IAAIX,EAAE,KAAKD,EAAEY,EAAE,CAAC,EAAED,GAAGC,EAAE,KAAKX,EAAE,KAAKD,CAAC,EAAEY,EAAE,EAAE,GAAG,CAACA,EAAE,GAAG,CAAC,IAAIC,EAAEuC,GAAGrD,EAAEa,EAAEZ,CAAC,EAAEa,GAAGP,GAAE,CAAC,EAAEN,EAAEY,EAAE,EAAEA,EAAE,GAAGX,EAAE,KAAKY,CAAC,EAAEF,GAAGE,EAAE,OAAOT,GAAGQ,EAAE,EAAE,EAAEC,EAAE,MAAM,EAAED,EAAE,EAAE,IAAIC,EAAED,EAAE,EAAE,OAAOC,EAAE,MAAM,EAAE,CAACL,EAAEI,EAAE,EAAEA,EAAE,EAAE,CAAC,MAAMJ,EAAEI,EAAEb,EAAEA,EAAE,SAASS,CAAC,CAAC,CAAC,OAAO8D,GAAGrE,EAAEU,CAAC,CAAC,CAAC,IAAI6D,IAAI,IAAI,CAAC,IAAIzE,EAAE,OAAO,SAAS,IAAI,SAAS,eAAe,IAAI,OAAO,OAAO,SAASC,EAAE,CAAC,EAAE,CAAC,IAAIC,EAAEC,EAAEF,EAAEQ,EAAEG,EAAEC,EAAE,IAAI,QAAQ,CAAC6D,EAAEC,IAAI,CAAClE,EAAEiE,EAAE9D,EAAE+D,CAAC,CAAC,EAAE7D,EAAE,GAAGC,EAAE,OAAO,OAAO,CAAC,EAAEZ,CAAC,EAAEa,EAAE,iBAAiBC,EAAE,CAACyD,EAAEC,IAAI,CAAC,MAAMA,CAAC,EAAEzD,EAAE,GAAG,SAASC,EAAEuD,EAAE,CAAC,OAAOxD,EAAEwD,CAAC,CAAC,IAAItD,EAAEC,EAAEC,EAAE,QAAQ,IAAI,KAAK,OAAO,EAAEG,EAAE,QAAQ,MAAM,KAAK,OAAO,EAAE,OAAO,OAAOtB,EAAEY,CAAC,EAAEA,EAAE,KAAK,IAAIW,EAAGvB,EAAE,WAAWwB,EAAEC,EAAE,GAAGC,EAAG,SAASC,EAAE4C,EAAEC,EAAE,CAACD,GAAGR,GAAGS,CAAC,CAAC,CAAC,IAAI5C,EAAEC,GAAEC,GAAEC,GAAGC,EAAEC,EAAEC,GAAGC,GAAG,SAASC,IAAG,CAAC,IAAImC,EAAE/C,EAAE,OAAOxB,EAAE,MAAM4B,EAAE,IAAI,UAAU2C,CAAC,EAAEvE,EAAE,OAAO8B,GAAE,IAAI,WAAWyC,CAAC,EAAEvE,EAAE,OAAO6B,GAAE,IAAI,WAAW0C,CAAC,EAAEvE,EAAE,QAAQ+B,GAAG,IAAI,YAAYwC,CAAC,EAAEvE,EAAE,OAAOgC,EAAE,IAAI,WAAWuC,CAAC,EAAEvE,EAAE,QAAQiC,EAAE,IAAI,YAAYsC,CAAC,EAAEvE,EAAE,QAAQkC,GAAG,IAAI,aAAaqC,CAAC,EAAEvE,EAAE,QAAQmC,GAAG,IAAI,aAAaoC,CAAC,CAAC,CAAC,IAAIlC,EAAE,CAAC,EAAEC,GAAE,CAAC,EAAEa,EAAG,CAAC,EAAEC,GAAG,GAAG,SAASC,IAAI,CAACoB,GAAGpC,CAAC,CAAC,CAAC,SAASiB,IAAI,CAACF,GAAG,GAAG,CAACpD,EAAE,UAAU,CAAC0E,EAAE,aAAaA,EAAE,KAAK,EAAEA,EAAE,kBAAkB,GAAGC,GAAG,KAAK,EAAEF,GAAGnC,EAAC,CAAC,CAAC,SAASiB,IAAI,CAACkB,GAAGtB,CAAE,CAAC,CAAC,SAASK,GAAGe,EAAE,CAACjC,GAAE,QAAQiC,CAAC,CAAC,CAAC,IAAId,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGW,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASV,GAAGU,EAAE,CAACd,IAAI,CAAC,SAASK,GAAGS,EAAE,CAAC,GAAGd,KAAKA,IAAI,IAAIC,KAAK,OAAO,cAAcA,EAAE,EAAEA,GAAG,MAAMC,IAAI,CAAC,IAAIa,EAAEb,GAAGA,GAAG,KAAKa,EAAE,CAAC,CAAC,CAAC,SAAST,GAAGQ,EAAE,CAACA,EAAE,WAAWA,EAAE,IAAIjD,EAAEiD,CAAC,EAAE9C,EAAE,GAAG8C,GAAG,2CAA2C,IAAIC,EAAE,IAAI,YAAY,aAAaD,CAAC,EAAE,MAAM9D,EAAE+D,CAAC,EAAEA,CAAC,CAAC,IAAIR,GAAG,wCAAwCC,GAAGM,GAAGA,EAAE,WAAWP,EAAE,EAAEE,GAAGK,GAAGA,EAAE,WAAW,SAAS,EAAE,SAASJ,IAAI,CAAC,IAAII,EAAE,mBAAmB,OAAON,GAAGM,CAAC,EAAEA,EAAEvD,EAAEuD,CAAC,CAAC,CAAC,IAAIK,GAAG,SAASC,GAAGN,EAAE,CAAC,GAAGA,GAAGK,IAAIrD,EAAG,OAAO,IAAI,WAAWA,CAAE,EAAE,GAAGL,EAAE,OAAOA,EAAEqD,CAAC,EAAE,KAAK,iDAAiD,CAAC,SAASO,GAAGP,EAAE,CAAC,OAAOhD,EAAG,QAAQ,QAAQ,EAAE,KAAK,IAAIsD,GAAGN,CAAC,CAAC,EAAEtD,EAAEsD,CAAC,EAAE,KAAKC,GAAG,IAAI,WAAWA,CAAC,EAAE,IAAIK,GAAGN,CAAC,CAAC,CAAC,CAAC,SAASQ,GAAGR,EAAEC,EAAEQ,EAAE,CAAC,OAAOF,GAAGP,CAAC,EAAE,KAAKU,GAAG,YAAY,YAAYA,EAAET,CAAC,CAAC,EAAE,KAAKQ,EAAEC,GAAG,CAAC3D,EAAE,0CAA0C2D,CAAC,EAAE,EAAElB,GAAGkB,CAAC,CAAC,CAAC,CAAC,CAAC,SAASC,GAAGX,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,MAAM,CAACV,GAAG,OAAO,YAAY,sBAAsB,YAAY,CAACN,GAAGO,CAAC,GAAG,CAACN,GAAGM,CAAC,GAAG,OAAO,OAAO,WAAW,MAAMA,EAAE,CAAC,YAAY,aAAa,CAAC,EAAE,KAAKW,GAAG,CAAC,IAAIC,EAAE,YAAY,qBAAqBD,EAAEH,CAAC,EAAE,OAAOI,EAAE,KAAKH,EAAE,SAASI,EAAE,CAAC,OAAO/D,EAAE,kCAAkC+D,CAAC,EAAE,EAAE/D,EAAE,2CAA2C,EAAEyD,GAAGP,EAAEQ,EAAEC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEF,GAAGP,EAAEQ,EAAEC,CAAC,CAAC,CAAC,SAASK,IAAI,CAAC,MAAM,CAAC,EAAEC,EAAE,CAAC,CAAC,SAASC,IAAI,CAAC,SAASjB,EAAEU,EAAEE,EAAE,CAAC,OAAOM,GAAER,EAAE,QAAQzD,EAAEiE,GAAE,EAAErD,GAAE,EAAEoB,GAAGiC,GAAE,CAAC,EAAE3B,GAAG,kBAAkB,EAAE2B,EAAC,CAAC5B,GAAG,kBAAkB,EAAE,SAASW,EAAES,EAAE,CAACV,EAAEU,EAAE,QAAQ,CAAC,CAAC,IAAID,EAAEM,GAAG,EAAE,OAAOV,KAAKT,GAAG,EAAEe,GAAG3D,EAAGqD,GAAGI,EAAER,CAAC,EAAE,MAAM/D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAIiF,GAAEC,GAAEC,GAAG,CAAC,OAAO,CAACrB,EAAEC,IAAI,CAAC,IAAIQ,EAAEa,GAAGtB,CAAC,EAAEU,EAAEY,GAAGrB,CAAC,EAAEE,EAAE,WAAW,IAAIoB,GAAE,QAAQd,CAAC,CAAC,EAAEN,EAAE,UAAUoB,GAAE,KAAK,IAAId,CAAC,EAAEC,CAAC,CAAC,CAAC,EAAE,MAAMc,EAAE,CAAC,KAAK,aAAa,YAAYvB,EAAE,CAAC,KAAK,QAAQ,gCAAgCA,CAAC,IAAI,KAAK,OAAOA,CAAC,CAAC,CAAC,IAAIC,GAAGF,GAAG,CAAC,KAAKA,EAAE,OAAO,GAAGA,EAAE,MAAM,EAAEvE,CAAC,CAAC,EAAE,MAAMgG,EAAE,CAAC,YAAYxB,EAAE,CAAC,KAAK,OAAOA,EAAE,KAAK,IAAIA,EAAE,EAAE,CAAC,SAASA,EAAE,CAACvC,EAAE,KAAK,IAAI,GAAG,CAAC,EAAEuC,CAAC,CAAC,UAAU,CAAC,OAAOvC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,eAAeuC,EAAE,CAACvC,EAAE,KAAK,IAAI,GAAG,CAAC,EAAEuC,CAAC,CAAC,gBAAgB,CAAC,OAAOvC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,WAAWuC,EAAE,CAACA,EAAEA,EAAE,EAAE,EAAE5C,EAAE,KAAK,IAAI,EAAE,EAAE4C,CAAC,CAAC,YAAY,CAAC,OAAO5C,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,aAAa4C,EAAE,CAACA,EAAEA,EAAE,EAAE,EAAE5C,EAAE,KAAK,IAAI,EAAE,EAAE4C,CAAC,CAAC,cAAc,CAAC,OAAO5C,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK4C,EAAEQ,EAAE,CAAC,KAAK,iBAAiB,CAAC,EAAE,KAAK,SAASR,CAAC,EAAE,KAAK,eAAeQ,CAAC,CAAC,CAAC,iBAAiBR,EAAE,CAACvC,EAAE,KAAK,IAAI,IAAI,CAAC,EAAEuC,CAAC,CAAC,kBAAkB,CAAC,OAAOvC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAIgE,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC5B,EAAEC,EAAEQ,IAAI,CAAC,IAAIC,EAAE,IAAIe,GAAGzB,CAAC,EAAE,MAAMU,EAAE,KAAKT,EAAEQ,CAAC,EAAEiB,GAAG1B,EAAE2B,KAAKD,EAAE,EAAEH,GAAE,CAAC,MAAMvB,GAAGA,EAAE,OAAO,CAAC,IAAI,IAAI,UAAUA,GAAG,CAAC,IAAIC,EAAE,gEAAgE,OAAOA,EAAE,KAAKD,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAACA,EAAEC,IAAI,CAAC,QAAQQ,EAAE,EAAEC,EAAEV,EAAE,OAAO,EAAEU,GAAG,EAAEA,IAAI,CAAC,IAAIE,EAAEZ,EAAEU,CAAC,EAAEE,IAAI,IAAIZ,EAAE,OAAOU,EAAE,CAAC,EAAEE,IAAI,MAAMZ,EAAE,OAAOU,EAAE,CAAC,EAAED,KAAKA,IAAIT,EAAE,OAAOU,EAAE,CAAC,EAAED,IAAI,CAAC,GAAGR,EAAE,KAAKQ,EAAEA,IAAIT,EAAE,QAAQ,IAAI,EAAE,OAAOA,CAAC,EAAE,UAAUA,GAAG,CAAC,IAAIC,EAAEsB,GAAE,MAAMvB,CAAC,EAAES,EAAET,EAAE,OAAO,EAAE,IAAI,IAAI,OAAOA,EAAEuB,GAAE,eAAevB,EAAE,MAAM,GAAG,EAAE,OAAOU,GAAG,CAAC,CAACA,CAAC,EAAE,CAACT,CAAC,EAAE,KAAK,GAAG,EAAE,CAACD,GAAG,CAACC,IAAID,EAAE,KAAKA,GAAGS,IAAIT,GAAG,MAAMC,EAAE,IAAI,IAAID,CAAC,EAAE,QAAQA,GAAG,CAAC,IAAIC,EAAEsB,GAAE,UAAUvB,CAAC,EAAES,EAAER,EAAE,CAAC,EAAES,EAAET,EAAE,CAAC,EAAE,MAAM,CAACQ,GAAG,CAACC,EAAE,KAAKA,IAAIA,EAAEA,EAAE,OAAO,EAAEA,EAAE,OAAO,CAAC,GAAGD,EAAEC,EAAE,EAAE,SAASV,GAAG,CAAC,GAAGA,IAAI,IAAI,MAAM,IAAIA,EAAEuB,GAAE,UAAUvB,CAAC,EAAEA,EAAEA,EAAE,QAAQ,MAAM,EAAE,EAAE,IAAIC,EAAED,EAAE,YAAY,GAAG,EAAE,OAAOC,IAAI,GAAGD,EAAEA,EAAE,OAAOC,EAAE,CAAC,CAAC,EAAE,KAAK,IAAID,IAAIuB,GAAE,UAAUvB,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAACA,EAAEC,IAAIsB,GAAE,UAAUvB,EAAE,IAAIC,CAAC,CAAC,EAAE4B,GAAG,IAAI,CAAC,GAAG,OAAO,QAAQ,UAAU,OAAO,OAAO,iBAAiB,WAAW,OAAO7B,GAAG,OAAO,gBAAgBA,CAAC,EAAER,GAAG,kBAAkB,CAAC,EAAEsC,GAAG9B,IAAI8B,GAAGD,GAAG,GAAG7B,CAAC,EAAE+B,GAAG,CAAC,QAAQ,IAAI/B,IAAI,CAAC,QAAQC,EAAE,GAAGQ,EAAE,GAAGC,EAAEV,EAAE,OAAO,EAAEU,GAAG,IAAI,CAACD,EAAEC,IAAI,CAAC,IAAIE,EAAEF,GAAG,EAAEV,EAAEU,CAAC,EAAEP,EAAE,IAAI,EAAE,GAAG,OAAOS,GAAG,SAAS,MAAM,IAAI,UAAU,2CAA2C,EAAE,GAAG,CAACA,EAAE,MAAM,GAAGX,EAAEW,EAAE,IAAIX,EAAEQ,EAAEc,GAAE,MAAMX,CAAC,CAAC,CAAC,OAAOX,EAAEsB,GAAE,eAAetB,EAAE,MAAM,GAAG,EAAE,OAAOY,GAAG,CAAC,CAACA,CAAC,EAAE,CAACJ,CAAC,EAAE,KAAK,GAAG,GAAGA,EAAE,IAAI,IAAIR,GAAG,GAAG,EAAE,SAAS,CAACD,EAAEC,IAAI,CAACD,EAAE+B,GAAG,QAAQ/B,CAAC,EAAE,OAAO,CAAC,EAAEC,EAAE8B,GAAG,QAAQ9B,CAAC,EAAE,OAAO,CAAC,EAAE,SAASQ,EAAEuB,EAAE,CAAC,QAAQC,GAAE,EAAEA,GAAED,EAAE,QAAQA,EAAEC,EAAC,IAAI,GAAGA,KAAI,CAAC,QAAQC,GAAEF,EAAE,OAAO,EAAEE,IAAG,GAAGF,EAAEE,EAAC,IAAI,GAAGA,KAAI,CAAC,OAAOD,GAAEC,GAAE,CAAC,EAAEF,EAAE,MAAMC,GAAEC,GAAED,GAAE,CAAC,CAAC,CAAC,QAAQvB,EAAED,EAAET,EAAE,MAAM,GAAG,CAAC,EAAEY,EAAEH,EAAER,EAAE,MAAM,GAAG,CAAC,EAAEY,EAAE,KAAK,IAAIH,EAAE,OAAOE,EAAE,MAAM,EAAEE,EAAED,EAAEsB,EAAE,EAAEA,EAAEtB,EAAEsB,IAAI,GAAGzB,EAAEyB,CAAC,IAAIvB,EAAEuB,CAAC,EAAE,CAACrB,EAAEqB,EAAE,KAAK,CAAC,QAAQC,EAAE,CAAC,EAAED,EAAErB,EAAEqB,EAAEzB,EAAE,OAAOyB,IAAIC,EAAE,KAAK,IAAI,EAAE,OAAOA,EAAEA,EAAE,OAAOxB,EAAE,MAAME,CAAC,CAAC,EAAEsB,EAAE,KAAK,GAAG,CAAC,CAAC,EAAEC,GAAG,OAAO,YAAY,IAAI,IAAI,YAAY,OAAOC,GAAG,CAACtC,EAAEC,EAAE,EAAEQ,EAAE,MAAM,CAAC,QAAQC,EAAET,EAAEQ,EAAEG,EAAEX,EAAED,EAAEY,CAAC,GAAG,EAAEA,GAAGF,IAAI,EAAEE,EAAE,GAAGA,EAAEX,EAAE,IAAID,EAAE,QAAQqC,GAAG,OAAOA,GAAG,OAAOrC,EAAE,SAASC,EAAEW,CAAC,CAAC,EAAE,QAAQC,EAAE,GAAGZ,EAAEW,GAAG,CAAC,IAAIE,EAAEd,EAAEC,GAAG,EAAE,GAAG,EAAEa,EAAE,KAAK,CAACD,GAAG,OAAO,aAAaC,CAAC,EAAE,QAAQ,CAAC,IAAIqB,EAAEnC,EAAEC,GAAG,EAAE,GAAG,IAAIa,EAAE,MAAM,IAAI,CAACD,GAAG,OAAO,cAAcC,EAAE,KAAK,EAAEqB,CAAC,EAAE,QAAQ,CAAC,IAAIC,EAAEpC,EAAEC,GAAG,EAAE,GAAG,IAAIa,EAAE,MAAM,IAAIA,GAAGA,EAAE,KAAK,GAAGqB,GAAG,EAAEC,EAAEtB,GAAGA,EAAE,IAAI,GAAGqB,GAAG,GAAGC,GAAG,EAAEpC,EAAEC,GAAG,EAAE,GAAGa,EAAE,MAAMD,GAAG,OAAO,aAAaC,CAAC,MAAM,CAAC,IAAIkB,EAAElB,EAAE,MAAMD,GAAG,OAAO,aAAa,MAAMmB,GAAG,GAAG,MAAMA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAOnB,CAAC,EAAE0B,GAAG,CAAC,EAAEC,GAAGxC,GAAG,CAAC,QAAQC,EAAE,EAAEQ,EAAE,EAAEA,EAAET,EAAE,OAAO,EAAES,EAAE,CAAC,IAAIC,EAAEV,EAAE,WAAWS,CAAC,EAAEC,GAAG,IAAIT,IAAIS,GAAG,KAAKT,GAAG,EAAES,GAAG,OAAOA,GAAG,OAAOT,GAAG,EAAE,EAAEQ,GAAGR,GAAG,CAAC,CAAC,OAAOA,CAAC,EAAEwC,GAAG,CAACzC,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,GAAG,EAAEA,EAAE,GAAG,MAAO,GAAE,QAAQE,EAAEH,EAAEI,EAAEJ,EAAEC,EAAE,EAAEI,EAAE,EAAEA,EAAEd,EAAE,OAAO,EAAEc,EAAE,CAAC,IAAIqB,EAAEnC,EAAE,WAAWc,CAAC,EAAE,GAAGqB,GAAG,OAAOA,GAAG,MAAM,CAAC,IAAIC,EAAEpC,EAAE,WAAW,EAAEc,CAAC,EAAEqB,EAAE,QAAQA,EAAE,OAAO,IAAIC,EAAE,IAAI,CAAC,GAAGD,GAAG,IAAI,CAAC,GAAG1B,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE0B,CAAC,SAASA,GAAG,KAAK,CAAC,GAAG1B,EAAE,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,EAAElC,EAAEQ,GAAG,EAAE,IAAI0B,EAAE,EAAE,SAASA,GAAG,MAAM,CAAC,GAAG1B,EAAE,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,EAAE,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,EAAE,EAAE,KAAK,CAAC,GAAG1B,EAAE,GAAGI,EAAE,MAAMZ,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,GAAG,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,GAAG,EAAE,GAAGlC,EAAEQ,GAAG,EAAE,IAAI0B,EAAE,EAAE,CAAC,CAAC,OAAOlC,EAAEQ,CAAC,EAAE,EAAEA,EAAEG,CAAC,EAAE,SAAS8B,GAAG1C,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAED,EAAE,EAAEA,EAAE+B,GAAGxC,CAAC,EAAE,EAAEY,EAAE,IAAI,MAAMF,CAAC,EAAEG,EAAE4B,GAAGzC,EAAEY,EAAE,EAAEA,EAAE,MAAM,EAAE,OAAOX,IAAIW,EAAE,OAAOC,GAAGD,CAAC,CAAC,IAAI+B,GAAG,IAAI,CAAC,GAAG,CAACJ,GAAG,OAAO,CAAC,IAAIvC,EAAE,KAAK,GAAG,CAACA,EAAE,OAAO,KAAKuC,GAAGG,GAAG1C,EAAE,EAAE,CAAC,CAAC,OAAOuC,GAAG,MAAM,CAAC,EAAEnC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE,SAASJ,EAAEC,EAAE,CAACG,GAAG,KAAKJ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,IAAIC,CAAC,EAAEE,EAAE,eAAeH,EAAEI,GAAG,UAAU,CAAC,EAAE,WAAW,CAAC,KAAKJ,EAAE,CAAC,IAAIC,EAAEG,GAAG,KAAKJ,EAAE,KAAK,IAAI,EAAE,GAAG,CAACC,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAEH,EAAE,IAAIC,EAAED,EAAE,SAAS,EAAE,EAAE,MAAMA,EAAE,CAACA,EAAE,IAAI,IAAI,MAAMA,EAAE,GAAG,CAAC,EAAE,MAAMA,EAAE,CAACA,EAAE,IAAI,IAAI,MAAMA,EAAE,GAAG,CAAC,EAAE,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACZ,EAAE,KAAK,CAACA,EAAE,IAAI,IAAI,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,QAAQU,EAAE,EAAEC,EAAE,EAAEA,EAAEJ,EAAEI,IAAI,CAAC,IAAIqB,EAAE,GAAG,CAACA,EAAEnC,EAAE,IAAI,IAAI,SAASA,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,CAAC,GAAGgC,IAAI,QAAQtB,IAAI,EAAE,MAAM,IAAIV,EAAE,WAAW,CAAC,EAAE,GAAGgC,GAAG,KAAK,MAAMtB,IAAIZ,EAAEQ,EAAEK,CAAC,EAAEqB,CAAC,CAAC,OAAOtB,IAAIb,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGa,CAAC,EAAE,MAAMb,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACZ,EAAE,KAAK,CAACA,EAAE,IAAI,IAAI,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQU,EAAE,EAAEA,EAAEH,EAAEG,IAAIb,EAAE,IAAI,IAAI,SAASA,EAAE,IAAIC,EAAEQ,EAAEI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAIV,EAAE,WAAW,EAAE,CAAC,CAAC,OAAOO,IAAIV,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGa,CAAC,CAAC,EAAE,gBAAgB,CAAC,SAASb,EAAE,CAAC,OAAO2C,GAAG,CAAC,EAAE,SAAS3C,EAAEC,EAAE,CAACA,IAAI,MAAMA,IAAI,IAAIrD,EAAE0F,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,GAAGC,GAAG,GAAGD,EAAE,OAAO,KAAKC,CAAC,CAAC,EAAE,MAAMD,EAAE,CAACA,EAAE,QAAQA,EAAE,OAAO,OAAO,IAAIpD,EAAE0F,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,EAAE,aAAaA,EAAE,CAAC,MAAM,CAAC,QAAQ,MAAM,QAAQ,EAAE,QAAQ,IAAI,QAAQ,MAAM,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,aAAaA,EAAEC,EAAEQ,EAAE,CAAC,MAAO,EAAC,EAAE,iBAAiBT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,SAASA,EAAEC,EAAE,CAACA,IAAI,MAAMA,IAAI,IAAIlD,EAAEuF,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,GAAGC,GAAG,GAAGD,EAAE,OAAO,KAAKC,CAAC,CAAC,EAAE,MAAMD,EAAE,CAACA,EAAE,QAAQA,EAAE,OAAO,OAAO,IAAIjD,EAAEuF,GAAGtC,EAAE,MAAM,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE4C,GAAG,CAAC5C,EAAEC,IAAI,CAAC3C,GAAE,KAAK,EAAE0C,EAAEA,EAAEC,CAAC,CAAC,EAAE4C,GAAG,CAAC7C,EAAEC,IAAI,KAAK,KAAKD,EAAEC,CAAC,EAAEA,EAAE6C,GAAG9C,GAAG,CAACA,EAAE6C,GAAG7C,EAAE,KAAK,EAAE,IAAIC,EAAE8C,GAAG,MAAM/C,CAAC,EAAE,OAAOC,GAAG2C,GAAG3C,EAAED,CAAC,EAAEC,CAAC,EAAE+C,EAAE,CAAC,UAAU,KAAK,MAAMhD,EAAE,CAAC,OAAOgD,EAAE,WAAW,KAAK,IAAI,MAAM,CAAC,CAAC,EAAE,WAAWhD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAGP,EAAE,SAASM,CAAC,GAAGN,EAAE,OAAOM,CAAC,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE6C,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,QAAQ,OAAOA,EAAE,SAAS,OAAO,MAAMA,EAAE,SAAS,MAAM,OAAOA,EAAE,SAAS,OAAO,OAAOA,EAAE,SAAS,OAAO,MAAMA,EAAE,SAAS,MAAM,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,OAAO,EAAE,OAAO,CAAC,OAAOA,EAAE,WAAW,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,OAAO,EAAE,OAAO,CAAC,OAAOA,EAAE,WAAW,OAAO,KAAKA,EAAE,WAAW,KAAK,MAAMA,EAAE,WAAW,MAAM,SAASA,EAAE,WAAW,SAAS,KAAKA,EAAE,WAAW,KAAK,MAAMA,EAAE,WAAW,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,QAAQ,SAASA,EAAE,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQA,EAAE,SAAS,QAAQ,QAAQA,EAAE,SAAS,OAAO,EAAE,OAAO7C,EAAE,iBAAiB,CAAC,EAAE,IAAIS,EAAET,EAAE,WAAWH,EAAEC,EAAEQ,EAAEC,CAAC,EAAE,OAAOP,EAAE,MAAMS,EAAE,IAAI,GAAGA,EAAE,SAASoC,EAAE,UAAU,IAAI,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,IAAI,OAAOpC,EAAE,SAAS,CAAC,GAAGT,EAAE,OAAOS,EAAE,IAAI,GAAGA,EAAE,SAASoC,EAAE,UAAU,KAAK,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,KAAK,OAAOpC,EAAE,UAAU,EAAEA,EAAE,SAAS,MAAMT,EAAE,OAAOS,EAAE,IAAI,GAAGA,EAAE,SAASoC,EAAE,UAAU,KAAK,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,KAAK,QAAQ7C,EAAE,SAASS,EAAE,IAAI,IAAIA,EAAE,SAASoC,EAAE,UAAU,OAAO,KAAKpC,EAAE,WAAWoC,EAAE,UAAU,OAAO,QAAQpC,EAAE,UAAU,KAAK,IAAI,EAAEZ,IAAIA,EAAE,SAASC,CAAC,EAAEW,EAAEZ,EAAE,UAAUY,EAAE,WAAWA,CAAC,EAAE,wBAAwBZ,EAAE,CAAC,OAAOA,EAAE,SAASA,EAAE,SAAS,SAASA,EAAE,SAAS,SAAS,EAAEA,EAAE,SAAS,EAAE,IAAI,WAAWA,EAAE,QAAQ,EAAE,IAAI,WAAW,CAAC,CAAC,EAAE,kBAAkBA,EAAEC,EAAE,CAAC,IAAIQ,EAAET,EAAE,SAASA,EAAE,SAAS,OAAO,EAAE,GAAG,EAAES,GAAGR,GAAG,CAAC,IAAIS,EAAE,QAAUT,EAAE,KAAK,IAAIA,EAAEQ,GAAGA,EAAEC,EAAE,EAAE,SAAS,CAAC,EAAED,GAAG,IAAIR,EAAE,KAAK,IAAIA,EAAE,GAAG,GAAG,IAAIW,EAAEZ,EAAE,SAASA,EAAE,SAAS,IAAI,WAAWC,CAAC,EAAED,EAAE,UAAU,GAAGA,EAAE,SAAS,IAAIY,EAAE,SAAS,EAAEZ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkBA,EAAEC,EAAE,CAAC,GAAGD,EAAE,WAAWC,EAAE,GAAGA,GAAG,EAAED,EAAE,SAAS,KAAKA,EAAE,UAAU,MAAM,CAAC,IAAIS,EAAET,EAAE,SAASA,EAAE,SAAS,IAAI,WAAWC,CAAC,EAAEQ,GAAGT,EAAE,SAAS,IAAIS,EAAE,SAAS,EAAE,KAAK,IAAIR,EAAED,EAAE,SAAS,CAAC,CAAC,EAAEA,EAAE,UAAUC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQD,EAAE,CAAC,IAAIC,EAAE,CAAC,EAAE,OAAOA,EAAE,IAAIE,EAAE,SAASH,EAAE,IAAI,EAAEA,EAAE,GAAG,EAAEC,EAAE,IAAID,EAAE,GAAGC,EAAE,KAAKD,EAAE,KAAKC,EAAE,MAAM,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,KAAKD,EAAE,KAAKG,EAAE,MAAMH,EAAE,IAAI,EAAEC,EAAE,KAAK,KAAKE,EAAE,OAAOH,EAAE,IAAI,EAAEC,EAAE,KAAKD,EAAE,UAAUG,EAAE,OAAOH,EAAE,IAAI,EAAEC,EAAE,KAAKD,EAAE,KAAK,OAAOC,EAAE,KAAK,EAAEA,EAAE,MAAM,IAAI,KAAKD,EAAE,SAAS,EAAEC,EAAE,MAAM,IAAI,KAAKD,EAAE,SAAS,EAAEC,EAAE,MAAM,IAAI,KAAKD,EAAE,SAAS,EAAEC,EAAE,QAAQ,KAAKA,EAAE,OAAO,KAAK,KAAKA,EAAE,KAAKA,EAAE,OAAO,EAAEA,CAAC,EAAE,QAAQD,EAAEC,EAAE,CAACA,EAAE,OAAO,SAASD,EAAE,KAAKC,EAAE,MAAMA,EAAE,YAAY,SAASD,EAAE,UAAUC,EAAE,WAAWA,EAAE,OAAO,QAAQ+C,EAAE,kBAAkBhD,EAAEC,EAAE,IAAI,CAAC,EAAE,OAAOD,EAAEC,EAAE,CAAC,MAAM+C,EAAE,iBAAiB,EAAE,MAAMhD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,OAAOsC,EAAE,WAAWhD,EAAEC,EAAEQ,EAAEC,CAAC,CAAC,EAAE,OAAOV,EAAEC,EAAEQ,EAAE,CAAC,GAAGN,EAAE,MAAMH,EAAE,IAAI,EAAE,CAAC,IAAIU,EAAE,GAAG,CAACA,EAAEP,EAAE,WAAWF,EAAEQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAGC,EAAE,QAAQE,KAAKF,EAAE,SAAS,MAAM,IAAIP,EAAE,WAAW,EAAE,CAAC,CAAC,OAAOH,EAAE,OAAO,SAASA,EAAE,IAAI,EAAEA,EAAE,OAAO,UAAU,KAAK,IAAI,EAAEA,EAAE,KAAKS,EAAER,EAAE,SAASQ,CAAC,EAAET,EAAEC,EAAE,UAAUD,EAAE,OAAO,SAAS,EAAE,OAAOA,EAAEC,EAAE,CAAC,OAAOD,EAAE,SAASC,CAAC,EAAED,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,MAAMA,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAEC,CAAC,EAAE,QAAQS,KAAKD,EAAE,SAAS,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,SAASC,CAAC,EAAED,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,QAAQA,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAI,IAAI,EAAE,QAAQQ,KAAK,OAAO,KAAKT,EAAE,QAAQ,EAAEC,EAAE,KAAKQ,CAAC,EAAE,OAAOR,CAAC,EAAE,QAAQD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEsC,EAAE,WAAWhD,EAAEC,EAAE,MAAM,CAAC,EAAE,OAAOS,EAAE,KAAKD,EAAEC,CAAC,EAAE,SAASV,EAAE,CAAC,GAAG,CAACG,EAAE,OAAOH,EAAE,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEb,EAAE,KAAK,SAAS,GAAGY,GAAGZ,EAAE,KAAK,UAAU,MAAO,GAAE,IAAIc,EAAE,KAAK,IAAId,EAAE,KAAK,UAAUY,EAAEF,CAAC,EAAE,GAAGI,EAAE,GAAGD,EAAE,SAASZ,EAAE,IAAIY,EAAE,SAASD,EAAEA,EAAEE,CAAC,EAAEL,CAAC,MAAO,SAAQ0B,EAAE,EAAEA,EAAErB,EAAEqB,IAAIlC,EAAEQ,EAAE0B,CAAC,EAAEtB,EAAED,EAAEuB,CAAC,EAAE,OAAOrB,CAAC,EAAE,MAAMd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAE,CAAC,GAAGZ,EAAE,SAAS5C,EAAE,SAASwD,EAAE,IAAI,CAACH,EAAE,MAAO,GAAE,IAAII,EAAEd,EAAE,KAAK,GAAGc,EAAE,UAAU,KAAK,IAAI,EAAEb,EAAE,WAAW,CAACa,EAAE,UAAUA,EAAE,SAAS,UAAU,CAAC,GAAGD,EAAE,OAAOC,EAAE,SAASb,EAAE,SAASQ,EAAEA,EAAEC,CAAC,EAAEI,EAAE,UAAUJ,EAAEA,EAAE,GAAGI,EAAE,YAAY,GAAGF,IAAI,EAAE,OAAOE,EAAE,SAASb,EAAE,MAAMQ,EAAEA,EAAEC,CAAC,EAAEI,EAAE,UAAUJ,EAAEA,EAAE,GAAGE,EAAEF,GAAGI,EAAE,UAAU,OAAOA,EAAE,SAAS,IAAIb,EAAE,SAASQ,EAAEA,EAAEC,CAAC,EAAEE,CAAC,EAAEF,CAAC,CAAC,GAAGsC,EAAE,kBAAkBlC,EAAEF,EAAEF,CAAC,EAAEI,EAAE,SAAS,UAAUb,EAAE,SAASa,EAAE,SAAS,IAAIb,EAAE,SAASQ,EAAEA,EAAEC,CAAC,EAAEE,CAAC,MAAO,SAAQuB,EAAE,EAAEA,EAAEzB,EAAEyB,IAAIrB,EAAE,SAASF,EAAEuB,CAAC,EAAElC,EAAEQ,EAAE0B,CAAC,EAAE,OAAOrB,EAAE,UAAU,KAAK,IAAIA,EAAE,UAAUF,EAAEF,CAAC,EAAEA,CAAC,EAAE,OAAOV,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAET,EAAE,GAAGQ,IAAI,EAAEC,GAAGV,EAAE,SAASS,IAAI,GAAGN,EAAE,OAAOH,EAAE,KAAK,IAAI,IAAIU,GAAGV,EAAE,KAAK,WAAWU,EAAE,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,OAAOO,CAAC,EAAE,SAASV,EAAEC,EAAEQ,EAAE,CAACuC,EAAE,kBAAkBhD,EAAE,KAAKC,EAAEQ,CAAC,EAAET,EAAE,KAAK,UAAU,KAAK,IAAIA,EAAE,KAAK,UAAUC,EAAEQ,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACT,EAAE,OAAOH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIU,EAAEC,EAAEqB,EAAEnC,EAAE,KAAK,SAAS,GAAG,EAAEY,EAAE,IAAIuB,GAAGA,EAAE,SAAS9E,EAAE,OAAOyD,EAAE,GAAGD,EAAEsB,EAAE,eAAe,CAAC,GAAGrB,EAAE,GAAGD,EAAEiC,GAAG7C,CAAC,EAAE,CAACY,EAAE,MAAM,IAAIV,EAAE,WAAW,EAAE,EAAEgC,KAAK1B,EAAE,GAAGA,EAAER,EAAEkC,EAAE,UAAUA,EAAE,SAASA,EAAEA,EAAE,SAAS1B,EAAEA,EAAER,CAAC,EAAEkC,EAAE,MAAM,UAAU,MAAM,KAAKA,EAAE1B,EAAEA,EAAER,CAAC,GAAG5C,EAAE,IAAI8E,EAAEtB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAIA,EAAE,UAAUC,CAAC,CAAC,EAAE,MAAMd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,OAAOoC,EAAE,WAAW,MAAMhD,EAAEC,EAAE,EAAES,EAAED,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAEwC,GAAG,CAACjD,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,IAAIE,EAAEF,EAAE,GAAG,MAAMV,CAAC,GAAGtD,EAAEsD,CAAC,EAAE,KAAKa,GAAG,CAACZ,EAAE,IAAI,WAAWY,CAAC,CAAC,EAAED,GAAGrB,GAAGqB,CAAC,CAAC,EAAEC,GAAG,CAAC,GAAGJ,EAAEA,EAAE,MAAO,MAAK,sBAAsBT,CAAC,WAAW,CAAC,EAAEY,GAAGtB,GAAGsB,CAAC,CAAC,EAAEsC,GAAG,CAAClD,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,IAAI,CAACV,EAAE,eAAeH,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,CAAC,CAAC,EAAEsC,GAAG,CAAC,EAAEC,GAAG,CAACpD,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,KAAK,EAAE,IAAIE,EAAE,GAAG,OAAOuC,GAAG,QAAQtC,GAAG,CAACD,GAAGC,EAAE,UAAUZ,CAAC,IAAIY,EAAE,OAAOb,EAAEC,EAAEQ,EAAEC,CAAC,EAAEE,EAAE,GAAG,CAAC,EAAEA,CAAC,EAAEyC,GAAG,CAACrD,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAEC,EAAEqB,EAAEC,EAAEJ,IAAI,CAAC,IAAIC,GAAEhC,EAAE8B,GAAG,QAAQR,GAAE,MAAMvB,EAAEC,CAAC,CAAC,EAAED,EAAEkC,GAAE,MAAMD,EAAC,GAAG,SAASqB,GAAEC,EAAE,CAAC,SAASC,GAAEC,GAAG,CAACzB,IAAI,EAAEG,GAAGe,GAAGlD,EAAEC,EAAEwD,GAAG/C,EAAEE,EAAEwB,CAAC,EAAEvB,IAAI,EAAEtB,GAAG2C,EAAC,CAAC,CAACkB,GAAGG,EAAEtB,GAAEuB,GAAE,IAAI,CAAC1C,IAAI,EAAEvB,GAAG2C,EAAC,CAAC,CAAC,GAAGsB,GAAED,CAAC,CAAC,CAACjE,GAAG4C,EAAC,EAAE,OAAOzB,GAAG,SAASwC,GAAGxC,EAAE6C,GAAExC,CAAC,EAAEwC,GAAE7C,CAAC,CAAC,EAAEiD,GAAG1D,GAAG,CAAC,IAAIC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,KAAK,IAAI,EAAE,KAAK,KAAK,IAAI,EAAEQ,EAAER,EAAED,CAAC,EAAE,GAAG,OAAOS,EAAE,IAAI,MAAM,IAAI,MAAM,2BAA2BT,CAAC,EAAE,EAAE,OAAOS,CAAC,EAAEkD,GAAG,CAAC3D,EAAEC,IAAI,CAAC,IAAIQ,EAAE,EAAE,OAAOT,IAAIS,GAAG,KAAKR,IAAIQ,GAAG,KAAKA,CAAC,EAAEN,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,KAAK,YAAY,IAAI,YAAY,GAAG,kBAAkB,GAAG,WAAW,KAAK,CAAC,KAAK,aAAa,YAAYH,EAAE,CAAC,KAAK,MAAMA,CAAC,CAAC,EAAE,YAAY,KAAK,eAAe,EAAE,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,OAAOA,EAAE,CAAC,KAAK,KAAKA,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,MAAM,WAAW,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,KAAK,CAAC,IAAI,MAAMA,EAAE,CAAC,KAAK,OAAO,MAAMA,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,QAAQ,CAAC,IAAI,SAASA,EAAE,CAAC,KAAK,OAAO,SAASA,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,YAAYA,EAAEC,EAAEQ,EAAEC,EAAE,CAACV,IAAIA,EAAE,MAAM,KAAK,OAAOA,EAAE,KAAK,MAAMA,EAAE,MAAM,KAAK,GAAGG,EAAE,YAAY,KAAK,KAAKF,EAAE,KAAK,KAAKQ,EAAE,KAAK,KAAKC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,KAAK,YAAY,KAAK,QAAQ,CAAC,IAAI,KAAKV,EAAE,CAACA,EAAE,KAAK,MAAM,KAAK,SAAS,KAAK,MAAM,CAAC,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,KAAK,aAAa,KAAK,SAAS,CAAC,IAAI,MAAMA,EAAE,CAACA,EAAE,KAAK,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,OAAOG,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,OAAOA,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,EAAE,WAAWH,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAGD,EAAE+B,GAAG,QAAQ/B,CAAC,EAAE,CAACA,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,IAAIS,EAAE,CAAC,aAAa,GAAG,cAAc,CAAC,EAAE,GAAGR,EAAE,OAAO,OAAOQ,EAAER,CAAC,EAAEA,EAAE,cAAc,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,QAAQO,EAAEV,EAAE,MAAM,GAAG,EAAE,OAAOkC,IAAG,CAAC,CAACA,EAAC,EAAEtB,EAAET,EAAE,KAAKU,EAAE,IAAIC,EAAE,EAAEA,EAAEJ,EAAE,OAAOI,IAAI,CAAC,IAAIqB,EAAErB,IAAIJ,EAAE,OAAO,EAAE,GAAGyB,GAAGlC,EAAE,OAAO,MAAM,GAAGW,EAAET,EAAE,WAAWS,EAAEF,EAAEI,CAAC,CAAC,EAAED,EAAEU,GAAE,MAAMV,EAAEH,EAAEI,CAAC,CAAC,EAAEX,EAAE,aAAaS,CAAC,IAAI,CAACuB,GAAGA,GAAGlC,EAAE,gBAAgBW,EAAEA,EAAE,QAAQ,MAAM,CAACuB,GAAGlC,EAAE,OAAO,QAAQmC,EAAE,EAAEjC,EAAE,OAAOS,EAAE,IAAI,GAAG,CAAC,IAAIoB,EAAE7B,EAAE,SAASU,CAAC,EAAEA,EAAEkB,GAAG,QAAQR,GAAE,QAAQV,CAAC,EAAEmB,CAAC,EAAE,IAAIC,GAAE9B,EAAE,WAAWU,EAAE,CAAC,cAAcZ,EAAE,cAAc,CAAC,CAAC,EAAE,GAAGW,EAAEqB,GAAE,KAAKG,IAAI,GAAG,MAAM,IAAIjC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAKU,EAAE,KAAKD,CAAC,CAAC,EAAE,QAAQZ,EAAE,CAAC,QAAQC,IAAI,CAAC,GAAGE,EAAE,OAAOH,CAAC,EAAE,CAAC,IAAIS,EAAET,EAAE,MAAM,WAAW,OAAOC,EAAEQ,EAAEA,EAAE,OAAO,CAAC,IAAI,IAAI,GAAGA,CAAC,IAAIR,CAAC,GAAGQ,EAAER,EAAEQ,CAAC,CAACR,EAAEA,EAAE,GAAGD,EAAE,IAAI,IAAIC,CAAC,GAAGD,EAAE,KAAKA,EAAEA,EAAE,MAAM,CAAC,EAAE,SAASA,EAAEC,EAAE,CAAC,QAAQQ,EAAE,EAAEC,EAAE,EAAEA,EAAET,EAAE,OAAOS,IAAID,GAAGA,GAAG,GAAGA,EAAER,EAAE,WAAWS,CAAC,EAAE,EAAE,OAAOV,EAAES,IAAI,GAAGN,EAAE,UAAU,MAAM,EAAE,YAAYH,EAAE,CAAC,IAAIC,EAAEE,EAAE,SAASH,EAAE,OAAO,GAAGA,EAAE,IAAI,EAAEA,EAAE,UAAUG,EAAE,UAAUF,CAAC,EAAEE,EAAE,UAAUF,CAAC,EAAED,CAAC,EAAE,eAAeA,EAAE,CAAC,IAAIC,EAAEE,EAAE,SAASH,EAAE,OAAO,GAAGA,EAAE,IAAI,EAAE,GAAGG,EAAE,UAAUF,CAAC,IAAID,EAAEG,EAAE,UAAUF,CAAC,EAAED,EAAE,cAAe,SAAQS,EAAEN,EAAE,UAAUF,CAAC,EAAEQ,GAAG,CAAC,GAAGA,EAAE,YAAYT,EAAE,CAACS,EAAE,UAAUT,EAAE,UAAU,KAAK,CAACS,EAAEA,EAAE,SAAS,CAAC,EAAE,WAAWT,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,UAAUH,CAAC,EAAE,GAAGS,EAAE,MAAM,IAAIN,EAAE,WAAWM,CAAC,EAAE,QAAQC,EAAEP,EAAE,SAASH,EAAE,GAAGC,CAAC,EAAEW,EAAET,EAAE,UAAUO,CAAC,EAAEE,EAAEA,EAAEA,EAAE,UAAU,CAAC,IAAIC,EAAED,EAAE,KAAK,GAAGA,EAAE,OAAO,KAAKZ,EAAE,IAAIa,IAAIZ,EAAE,OAAOW,CAAC,CAAC,OAAOT,EAAE,OAAOH,EAAEC,CAAC,CAAC,EAAE,WAAWD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,IAAIT,EAAE,OAAOH,EAAEC,EAAEQ,EAAEC,CAAC,EAAE,OAAOP,EAAE,YAAYS,CAAC,EAAEA,CAAC,EAAE,YAAYZ,EAAE,CAACG,EAAE,eAAeH,CAAC,CAAC,EAAE,OAAOA,EAAE,CAAC,OAAOA,IAAIA,EAAE,MAAM,EAAE,aAAaA,EAAE,CAAC,MAAM,CAAC,CAACA,EAAE,OAAO,EAAE,OAAOA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,MAAMA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,OAAOA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,SAAS,IAAI,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,OAAOA,EAAE,CAAC,OAAOA,EAAE,SAAS,IAAI,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,SAAS,KAAK,EAAE,wBAAwBA,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAI,IAAI,IAAI,EAAED,EAAE,CAAC,EAAE,OAAOA,EAAE,MAAMC,GAAG,KAAKA,CAAC,EAAE,gBAAgBD,EAAEC,EAAE,CAAC,OAAOE,EAAE,kBAAkB,EAAEF,EAAE,SAAS,GAAG,GAAG,EAAED,EAAE,KAAK,MAAMC,EAAE,SAAS,GAAG,GAAG,EAAED,EAAE,KAAK,MAAMC,EAAE,SAAS,GAAG,GAAG,EAAED,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,UAAUA,EAAE,CAAC,GAAG,CAACG,EAAE,MAAMH,EAAE,IAAI,EAAE,MAAO,IAAG,IAAIC,EAAEE,EAAE,gBAAgBH,EAAE,GAAG,EAAE,OAAOC,IAAID,EAAE,SAAS,OAAO,EAAE,EAAE,EAAE,UAAUA,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAEC,CAAC,EAAE,MAAO,GAAE,MAAM,CAAC,CAAC,OAAOE,EAAE,gBAAgBH,EAAE,IAAI,CAAC,EAAE,UAAUA,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,GAAG,CAACA,EAAEP,EAAE,WAAWH,EAAEC,CAAC,CAAC,OAAOY,EAAE,CAAC,OAAOA,EAAE,KAAK,CAAC,IAAID,EAAET,EAAE,gBAAgBH,EAAE,IAAI,EAAE,GAAGY,EAAE,OAAOA,EAAE,GAAGH,EAAE,CAAC,GAAG,CAACN,EAAE,MAAMO,EAAE,IAAI,EAAE,MAAO,IAAG,GAAGP,EAAE,OAAOO,CAAC,GAAGP,EAAE,QAAQO,CAAC,IAAIP,EAAE,IAAI,EAAE,MAAO,GAAE,SAASA,EAAE,MAAMO,EAAE,IAAI,EAAE,MAAO,IAAG,MAAO,EAAC,EAAE,QAAQV,EAAEC,EAAE,CAAC,OAAOD,EAAEG,EAAE,OAAOH,EAAE,IAAI,EAAE,GAAGG,EAAE,MAAMH,EAAE,IAAI,IAAIG,EAAE,wBAAwBF,CAAC,IAAI,KAAKA,EAAE,KAAK,GAAGE,EAAE,gBAAgBH,EAAEG,EAAE,wBAAwBF,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,KAAK,QAAQ,CAAC,QAAQD,EAAE,EAAEA,GAAGG,EAAE,aAAaH,IAAI,GAAG,CAACG,EAAE,QAAQH,CAAC,EAAE,OAAOA,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiBH,EAAE,CAAC,IAAIC,EAAEE,EAAE,UAAUH,CAAC,EAAE,GAAG,CAACC,EAAE,MAAM,IAAIE,EAAE,WAAW,CAAC,EAAE,OAAOF,CAAC,EAAE,UAAUD,GAAGG,EAAE,QAAQH,CAAC,EAAE,aAAaA,EAAEC,EAAE,GAAG,CAAC,OAAOD,EAAE,OAAO,OAAO,IAAIG,EAAE,SAASH,CAAC,EAAEC,GAAG,KAAKA,EAAEE,EAAE,OAAO,GAAGH,EAAE,GAAGC,EAAEE,EAAE,QAAQF,CAAC,EAAED,EAAEA,CAAC,EAAE,YAAYA,EAAE,CAACG,EAAE,QAAQH,CAAC,EAAE,IAAI,EAAE,UAAUA,EAAEC,EAAE,GAAG,CAAC,IAAIQ,EAAEN,EAAE,aAAaH,EAAEC,CAAC,EAAE,OAAOQ,EAAE,YAAY,MAAMA,CAAC,EAAEA,CAAC,EAAE,kBAAkB,CAAC,KAAKT,EAAE,CAAC,IAAIC,EAAEE,EAAE,UAAUH,EAAE,KAAK,IAAI,EAAEA,EAAE,WAAWC,EAAE,WAAWD,EAAE,WAAW,OAAOA,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAMH,GAAGA,GAAG,EAAE,MAAMA,GAAGA,EAAE,IAAI,QAAQ,CAACA,EAAEC,IAAID,GAAG,EAAEC,EAAE,eAAeD,EAAEC,EAAE,CAACE,EAAE,QAAQH,CAAC,EAAE,CAAC,WAAWC,CAAC,CAAC,EAAE,UAAUD,GAAGG,EAAE,QAAQH,CAAC,EAAE,UAAUA,EAAE,CAAC,QAAQC,EAAE,CAAC,EAAEQ,EAAE,CAACT,CAAC,EAAES,EAAE,QAAQ,CAAC,IAAIC,EAAED,EAAE,IAAI,EAAER,EAAE,KAAKS,CAAC,EAAED,EAAE,KAAK,GAAGC,EAAE,MAAM,CAAC,CAAC,OAAOT,CAAC,EAAE,OAAOD,EAAEC,EAAE,CAAC,OAAOD,GAAG,aAAaC,EAAED,EAAEA,EAAE,IAAIG,EAAE,iBAAiBA,EAAE,eAAe,GAAGpD,EAAE,YAAYoD,EAAE,cAAc,yEAAyE,EAAE,IAAIM,EAAEN,EAAE,UAAUA,EAAE,KAAK,KAAK,EAAEO,EAAE,EAAE,SAASE,EAAEE,EAAE,CAAC,OAAOX,EAAE,iBAAiBF,EAAEa,CAAC,CAAC,CAAC,SAASD,EAAEC,EAAE,CAAC,GAAGA,EAAE,OAAOD,EAAE,QAAQ,QAAQA,EAAE,QAAQ,GAAGD,EAAEE,CAAC,GAAG,EAAEJ,GAAGD,EAAE,QAAQG,EAAE,IAAI,CAAC,CAACH,EAAE,QAAQK,GAAG,CAAC,GAAG,CAACA,EAAE,KAAK,OAAO,OAAOD,EAAE,IAAI,EAAEC,EAAE,KAAK,OAAOA,EAAEd,EAAEa,CAAC,CAAC,CAAC,CAAC,EAAE,MAAMb,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAED,IAAI,IAAIG,EAAE,CAACH,EAAEI,EAAE,GAAGH,GAAGP,EAAE,KAAK,MAAM,IAAIA,EAAE,WAAW,EAAE,EAAE,GAAG,CAACO,GAAG,CAACE,EAAE,CAAC,IAAIE,EAAEX,EAAE,WAAWM,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,GAAGA,EAAEK,EAAE,KAAKD,EAAEC,EAAE,KAAKX,EAAE,aAAaU,CAAC,EAAE,MAAM,IAAIV,EAAE,WAAW,EAAE,EAAE,GAAG,CAACA,EAAE,MAAMU,EAAE,IAAI,EAAE,MAAM,IAAIV,EAAE,WAAW,EAAE,CAAC,CAAC,IAAIgC,EAAE,CAAC,KAAKnC,EAAE,KAAKC,EAAE,WAAWQ,EAAE,OAAO,CAAC,CAAC,EAAE2B,EAAEpC,EAAE,MAAMmC,CAAC,EAAE,OAAOC,EAAE,MAAMD,EAAEA,EAAE,KAAKC,EAAE1B,EAAEP,EAAE,KAAKiC,EAAEvB,IAAIA,EAAE,QAAQsB,EAAEtB,EAAE,OAAOA,EAAE,MAAM,OAAO,KAAKsB,CAAC,GAAGC,CAAC,EAAE,QAAQpC,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,CAACG,EAAE,aAAaF,EAAE,IAAI,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAER,EAAE,KAAKS,EAAED,EAAE,QAAQG,EAAET,EAAE,UAAUO,CAAC,EAAE,OAAO,KAAKP,EAAE,SAAS,EAAE,QAAQW,GAAG,CAAC,QAAQqB,EAAEhC,EAAE,UAAUW,CAAC,EAAEqB,GAAG,CAAC,IAAIC,EAAED,EAAE,UAAUvB,EAAE,SAASuB,EAAE,KAAK,GAAGhC,EAAE,YAAYgC,CAAC,EAAEA,EAAEC,CAAC,CAAC,CAAC,EAAE3B,EAAE,QAAQ,KAAK,IAAII,EAAEJ,EAAE,MAAM,OAAO,QAAQC,CAAC,EAAED,EAAE,MAAM,OAAO,OAAOI,EAAE,CAAC,CAAC,EAAE,OAAOb,EAAEC,EAAE,CAAC,OAAOD,EAAE,SAAS,OAAOA,EAAEC,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEP,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEY,EAAEF,EAAE,KAAKG,EAAEU,GAAE,SAASvB,CAAC,EAAE,GAAG,CAACa,GAAGA,IAAI,KAAKA,IAAI,KAAK,MAAM,IAAIV,EAAE,WAAW,EAAE,EAAE,IAAIW,EAAEX,EAAE,UAAUS,EAAEC,CAAC,EAAE,GAAGC,EAAE,MAAM,IAAIX,EAAE,WAAWW,CAAC,EAAE,GAAG,CAACF,EAAE,SAAS,MAAM,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAE,OAAOS,EAAE,SAAS,MAAMA,EAAEC,EAAEZ,EAAEQ,CAAC,CAAC,EAAE,OAAOT,EAAE,CAAC,IAAIC,EAAE,CAAC,MAAM,KAAK,OAAO,KAAK,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,MAAME,EAAE,UAAU,MAAMA,EAAE,UAAU,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,GAAG,EAAEM,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,OAAOS,GAAG,SAAS,QAAQ,OAAO,OAAOR,EAAEQ,EAAE,SAAS,OAAOA,EAAE,MAAM,KAAK,IAAI,CAAC,EAAER,CAAC,EAAE,OAAOD,EAAEC,EAAE,IAAI,CAAC,OAAOA,GAAG,KAAKA,GAAG,MAAME,EAAE,MAAMH,EAAEC,EAAE,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAE,IAAI,CAAC,OAAOA,GAAG,KAAKA,GAAG,MAAME,EAAE,MAAMH,EAAEC,EAAE,CAAC,CAAC,EAAE,UAAUD,EAAEC,EAAE,CAAC,QAAQQ,EAAET,EAAE,MAAM,GAAG,EAAEU,EAAE,GAAGE,EAAE,EAAEA,EAAEH,EAAE,OAAO,EAAEG,EAAE,GAAGH,EAAEG,CAAC,EAAE,CAACF,GAAG,IAAID,EAAEG,CAAC,EAAE,GAAG,CAACT,EAAE,MAAMO,EAAET,CAAC,CAAC,OAAOY,EAAE,CAAC,GAAGA,EAAE,OAAO,GAAG,MAAMA,CAAC,CAAC,CAAC,EAAE,MAAMb,EAAEC,EAAEQ,EAAE,CAAC,OAAO,OAAOA,EAAE,MAAMA,EAAER,EAAEA,EAAE,KAAKA,GAAG,KAAKE,EAAE,MAAMH,EAAEC,EAAEQ,CAAC,CAAC,EAAE,QAAQT,EAAEC,EAAE,CAAC,GAAG,CAAC8B,GAAG,QAAQ/B,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAEN,EAAE,WAAWF,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAED,EAAE,KAAK,GAAG,CAACC,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,IAAIS,EAAEW,GAAE,SAAStB,CAAC,EAAEY,EAAEV,EAAE,UAAUO,EAAEE,CAAC,EAAE,GAAGC,EAAE,MAAM,IAAIV,EAAE,WAAWU,CAAC,EAAE,GAAG,CAACH,EAAE,SAAS,QAAQ,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,OAAOO,EAAE,SAAS,QAAQA,EAAEE,EAAEZ,CAAC,CAAC,EAAE,OAAOA,EAAEC,EAAE,CAAC,IAAIQ,EAAEc,GAAE,QAAQvB,CAAC,EAAEU,EAAEa,GAAE,QAAQtB,CAAC,EAAEW,EAAEW,GAAE,SAASvB,CAAC,EAAEa,EAAEU,GAAE,SAAStB,CAAC,EAAEa,EAAEqB,EAAEC,EAAE,GAAGtB,EAAEX,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEmC,EAAErB,EAAE,KAAKA,EAAEX,EAAE,WAAWF,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEmC,EAAEtB,EAAE,KAAK,CAACqB,GAAG,CAACC,EAAE,MAAM,IAAIjC,EAAE,WAAW,EAAE,EAAE,GAAGgC,EAAE,QAAQC,EAAE,MAAM,MAAM,IAAIjC,EAAE,WAAW,EAAE,EAAE,IAAI6B,EAAE7B,EAAE,WAAWgC,EAAEvB,CAAC,EAAEqB,GAAEF,GAAG,SAAS/B,EAAEU,CAAC,EAAE,GAAGuB,GAAE,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI9B,EAAE,WAAW,EAAE,EAAE,GAAG8B,GAAEF,GAAG,SAAS9B,EAAEQ,CAAC,EAAEwB,GAAE,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI9B,EAAE,WAAW,EAAE,EAAE,IAAI+B,GAAE,GAAG,CAACA,GAAE/B,EAAE,WAAWiC,EAAEvB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAGmB,IAAIE,GAAE,CAAC,IAAIoB,GAAEnD,EAAE,MAAM6B,EAAE,IAAI,EAAEuB,EAAEpD,EAAE,UAAUgC,EAAEvB,EAAE0C,EAAC,EAAE,GAAGC,EAAE,MAAM,IAAIpD,EAAE,WAAWoD,CAAC,EAAE,GAAGA,EAAErB,GAAE/B,EAAE,UAAUiC,EAAEvB,EAAEyC,EAAC,EAAEnD,EAAE,UAAUiC,EAAEvB,CAAC,EAAE0C,EAAE,MAAM,IAAIpD,EAAE,WAAWoD,CAAC,EAAE,GAAG,CAACpB,EAAE,SAAS,OAAO,MAAM,IAAIhC,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,aAAa6B,CAAC,GAAGE,IAAG/B,EAAE,aAAa+B,EAAC,EAAE,MAAM,IAAI/B,EAAE,WAAW,EAAE,EAAE,GAAGiC,IAAID,IAAIoB,EAAEpD,EAAE,gBAAgBgC,EAAE,GAAG,EAAEoB,GAAG,MAAM,IAAIpD,EAAE,WAAWoD,CAAC,EAAEpD,EAAE,eAAe6B,CAAC,EAAE,GAAG,CAACG,EAAE,SAAS,OAAOH,EAAEI,EAAEvB,CAAC,EAAEmB,EAAE,OAAOI,CAAC,OAAOoB,GAAE,CAAC,MAAMA,EAAC,QAAC,CAAQrD,EAAE,YAAY6B,CAAC,CAAC,CAAC,CAAC,EAAE,MAAMhC,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAER,EAAE,KAAKS,EAAEa,GAAE,SAASvB,CAAC,EAAEY,EAAET,EAAE,WAAWM,EAAEC,CAAC,EAAEG,EAAEV,EAAE,UAAUM,EAAEC,EAAE,EAAE,EAAE,GAAGG,EAAE,MAAM,IAAIV,EAAE,WAAWU,CAAC,EAAE,GAAG,CAACJ,EAAE,SAAS,MAAM,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,aAAaS,CAAC,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAEM,EAAE,SAAS,MAAMA,EAAEC,CAAC,EAAEP,EAAE,YAAYS,CAAC,CAAC,EAAE,QAAQZ,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAER,EAAE,KAAK,GAAG,CAACQ,EAAE,SAAS,QAAQ,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOM,EAAE,SAAS,QAAQA,CAAC,CAAC,EAAE,OAAOT,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAER,EAAE,KAAK,GAAG,CAACQ,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,IAAIO,EAAEa,GAAE,SAASvB,CAAC,EAAEY,EAAET,EAAE,WAAWM,EAAEC,CAAC,EAAEG,EAAEV,EAAE,UAAUM,EAAEC,EAAE,EAAE,EAAE,GAAGG,EAAE,MAAM,IAAIV,EAAE,WAAWU,CAAC,EAAE,GAAG,CAACJ,EAAE,SAAS,OAAO,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,aAAaS,CAAC,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAEM,EAAE,SAAS,OAAOA,EAAEC,CAAC,EAAEP,EAAE,YAAYS,CAAC,CAAC,EAAE,SAASZ,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,CAAC,EAAES,EAAER,EAAE,KAAK,GAAG,CAACQ,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAG,CAACM,EAAE,SAAS,SAAS,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOM,EAAE,SAAS,SAASA,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACC,CAAC,CAAC,EAAES,EAAED,EAAE,KAAK,GAAG,CAACC,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,GAAG,CAACO,EAAE,SAAS,QAAQ,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,OAAOO,EAAE,SAAS,QAAQA,CAAC,CAAC,EAAE,MAAMV,EAAE,CAAC,OAAOG,EAAE,KAAKH,EAAE,EAAE,CAAC,EAAE,MAAMA,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,GAAG,OAAOV,GAAG,SAAS,CAAC,IAAIY,EAAET,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACS,CAAC,CAAC,EAAEC,EAAEE,EAAE,IAAI,MAAMF,EAAEV,EAAE,GAAG,CAACU,EAAE,SAAS,QAAQ,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAEO,EAAE,SAAS,QAAQA,EAAE,CAAC,KAAKT,EAAE,KAAKS,EAAE,KAAK,MAAM,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAOV,EAAEC,EAAE,CAACE,EAAE,MAAMH,EAAEC,EAAE,EAAE,CAAC,EAAE,OAAOD,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,iBAAiBH,CAAC,EAAEG,EAAE,MAAMM,EAAE,KAAKR,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,GAAG,OAAOZ,GAAG,SAAS,CAAC,IAAIa,EAAEV,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACU,CAAC,CAAC,EAAEE,EAAEC,EAAE,IAAI,MAAMD,EAAEZ,EAAE,GAAG,CAACY,EAAE,SAAS,QAAQ,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAES,EAAE,SAAS,QAAQA,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAOZ,EAAEC,EAAEQ,EAAE,CAACN,EAAE,MAAMH,EAAEC,EAAEQ,EAAE,EAAE,CAAC,EAAE,OAAOT,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEP,EAAE,iBAAiBH,CAAC,EAAEG,EAAE,MAAMO,EAAE,KAAKT,EAAEQ,CAAC,CAAC,EAAE,SAAST,EAAEC,EAAE,CAAC,GAAGA,EAAE,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAE,GAAG,OAAOT,GAAG,SAAS,CAAC,IAAIU,EAAEP,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAES,EAAEC,EAAE,IAAI,MAAMD,EAAET,EAAE,GAAG,CAACS,EAAE,SAAS,QAAQ,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,MAAMM,EAAE,IAAI,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAG,CAACA,EAAE,OAAOM,EAAE,IAAI,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,IAAIS,EAAET,EAAE,gBAAgBM,EAAE,GAAG,EAAE,GAAGG,EAAE,MAAM,IAAIT,EAAE,WAAWS,CAAC,EAAEH,EAAE,SAAS,QAAQA,EAAE,CAAC,KAAKR,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,UAAUD,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,iBAAiBH,CAAC,EAAE,GAAG,EAAES,EAAE,MAAM,SAAS,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAEA,EAAE,SAASM,EAAE,KAAKR,CAAC,CAAC,EAAE,MAAMD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEP,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEY,EAAEF,EAAE,KAAKE,EAAE,SAAS,QAAQA,EAAE,CAAC,UAAU,KAAK,IAAIX,EAAEQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAEQ,EAAE,IAAI,CAAC,GAAGT,IAAI,GAAG,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAEF,EAAE,OAAOA,GAAG,SAASyD,GAAGzD,CAAC,EAAEA,EAAEA,EAAE,GAAGQ,EAAEA,EAAE,KAAK,MAAMA,EAAE,EAAE,IAAIC,EAAE,GAAG,OAAOV,GAAG,SAASU,EAAEV,MAAM,CAACA,EAAEuB,GAAE,UAAUvB,CAAC,EAAE,GAAG,CAAC,IAAIY,EAAET,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAEC,EAAE,OAAO,CAAC,EAAES,EAAEE,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,IAAIC,EAAE,GAAG,GAAGZ,EAAE,GAAG,GAAGS,GAAG,GAAGT,EAAE,IAAI,MAAM,IAAIE,EAAE,WAAW,EAAE,OAAOO,EAAEP,EAAE,MAAMH,EAAES,EAAE,CAAC,EAAEI,EAAE,GAAG,GAAG,CAACH,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,SAASO,EAAE,IAAI,IAAIT,GAAG,MAAMA,EAAE,OAAO,CAACE,EAAE,MAAMO,EAAE,IAAI,EAAE,MAAM,IAAIP,EAAE,WAAW,EAAE,EAAE,GAAG,CAACU,EAAE,CAAC,IAAIC,EAAEX,EAAE,QAAQO,EAAET,CAAC,EAAE,GAAGa,EAAE,MAAM,IAAIX,EAAE,WAAWW,CAAC,CAAC,CAACb,EAAE,KAAK,CAACY,GAAGV,EAAE,SAASO,EAAE,CAAC,EAAET,GAAG,QAAQ,IAAIkC,EAAEhC,EAAE,aAAa,CAAC,KAAKO,EAAE,KAAKP,EAAE,QAAQO,CAAC,EAAE,MAAMT,EAAE,SAAS,GAAG,SAAS,EAAE,WAAWS,EAAE,WAAW,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAOyB,EAAE,WAAW,MAAMA,EAAE,WAAW,KAAKA,CAAC,EAAEA,CAAC,EAAE,MAAMnC,EAAE,CAAC,GAAGG,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAEH,EAAE,WAAWA,EAAE,SAAS,MAAM,GAAG,CAACA,EAAE,WAAW,OAAOA,EAAE,WAAW,MAAMA,CAAC,CAAC,OAAOC,EAAE,CAAC,MAAMA,CAAC,QAAC,CAAQE,EAAE,YAAYH,EAAE,EAAE,CAAC,CAACA,EAAE,GAAG,IAAI,EAAE,SAASA,EAAE,CAAC,OAAOA,EAAE,KAAK,IAAI,EAAE,OAAOA,EAAEC,EAAEQ,EAAE,CAAC,GAAGN,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,CAACH,EAAE,UAAU,CAACA,EAAE,WAAW,OAAO,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAGM,GAAG,GAAGA,GAAG,GAAGA,GAAG,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,SAASA,EAAE,WAAW,OAAOA,EAAEC,EAAEQ,CAAC,EAAET,EAAE,SAAS,CAAC,EAAEA,EAAE,QAAQ,EAAE,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAGF,EAAE,GAAGE,EAAE,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,IAAIH,EAAE,MAAM,WAAW,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAGA,EAAE,MAAMH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACH,EAAE,WAAW,KAAK,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIU,EAAE,OAAOD,EAAE,IAAI,GAAG,CAACC,EAAED,EAAEZ,EAAE,iBAAiB,CAACA,EAAE,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIW,EAAEd,EAAE,WAAW,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,EAAE,OAAOC,IAAIb,EAAE,UAAUc,GAAGA,CAAC,EAAE,MAAMd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAE,CAAC,GAAGH,EAAE,GAAGE,EAAE,EAAE,MAAM,IAAIT,EAAE,WAAW,EAAE,EAAE,GAAGA,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,EAAEH,EAAE,MAAM,SAAS,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAGA,EAAE,MAAMH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACH,EAAE,WAAW,MAAM,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAEH,EAAE,UAAUA,EAAE,MAAM,MAAMG,EAAE,OAAOH,EAAE,EAAE,CAAC,EAAE,IAAIc,EAAE,OAAOF,EAAE,IAAI,GAAG,CAACE,EAAEF,EAAEZ,EAAE,iBAAiB,CAACA,EAAE,SAAS,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,IAAIgC,EAAEnC,EAAE,WAAW,MAAMA,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,CAAC,EAAE,OAAOC,IAAId,EAAE,UAAUmC,GAAGA,CAAC,EAAE,SAASnC,EAAEC,EAAEQ,EAAE,CAAC,GAAGN,EAAE,SAASH,CAAC,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAGF,EAAE,GAAGQ,GAAG,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,GAAG,EAAEH,EAAE,MAAM,SAAS,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,CAACA,EAAE,OAAOH,EAAE,KAAK,IAAI,GAAG,CAACG,EAAE,MAAMH,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACH,EAAE,WAAW,SAAS,MAAM,IAAIG,EAAE,WAAW,GAAG,EAAEH,EAAE,WAAW,SAASA,EAAEC,EAAEQ,CAAC,CAAC,EAAE,KAAKT,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAGF,EAAE,GAAG,EAAEE,EAAE,KAAKZ,EAAE,MAAM,WAAW,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,IAAIH,EAAE,MAAM,WAAW,EAAE,MAAM,IAAIG,EAAE,WAAW,CAAC,EAAE,GAAG,CAACH,EAAE,WAAW,KAAK,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,GAAG,CAACF,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,WAAW,KAAKA,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,CAAC,EAAE,MAAMZ,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,OAAOZ,EAAE,WAAW,MAAMA,EAAE,WAAW,MAAMA,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,EAAE,CAAC,EAAE,MAAMZ,EAAEC,EAAEQ,EAAE,CAAC,GAAG,CAACT,EAAE,WAAW,MAAM,MAAM,IAAIG,EAAE,WAAW,EAAE,EAAE,OAAOH,EAAE,WAAW,MAAMA,EAAEC,EAAEQ,CAAC,CAAC,EAAE,SAAST,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,MAAMA,EAAE,OAAO,EAAEA,EAAE,SAASA,EAAE,UAAU,SAASA,EAAE,WAAW,QAAQA,EAAE,WAAW,SAAS,MAAM,IAAI,MAAM,0BAA0BA,EAAE,QAAQ,GAAG,EAAE,IAAIQ,EAAEC,EAAEP,EAAE,KAAKH,EAAEC,EAAE,KAAK,EAAEW,EAAET,EAAE,KAAKH,CAAC,EAAEa,EAAED,EAAE,KAAKE,EAAE,IAAI,WAAWD,CAAC,EAAE,OAAOV,EAAE,KAAKO,EAAEI,EAAE,EAAED,EAAE,CAAC,EAAEZ,EAAE,WAAW,OAAOQ,EAAE6B,GAAGxB,CAAC,EAAEb,EAAE,WAAW,WAAWQ,EAAEK,GAAGX,EAAE,MAAMO,CAAC,EAAED,CAAC,EAAE,UAAUT,EAAEC,EAAEQ,EAAE,CAAC,EAAE,CAACA,EAAE,MAAMA,EAAE,OAAO,IAAI,IAAIC,EAAEP,EAAE,KAAKH,EAAES,EAAE,MAAMA,EAAE,IAAI,EAAE,GAAG,OAAOR,GAAG,SAAS,CAAC,IAAIW,EAAE,IAAI,WAAW4B,GAAGvC,CAAC,EAAE,CAAC,EAAEY,EAAE4B,GAAGxC,EAAEW,EAAE,EAAEA,EAAE,MAAM,EAAET,EAAE,MAAMO,EAAEE,EAAE,EAAEC,EAAE,OAAOJ,EAAE,MAAM,CAAC,SAAS,YAAY,OAAOR,CAAC,EAAEE,EAAE,MAAMO,EAAET,EAAE,EAAEA,EAAE,WAAW,OAAOQ,EAAE,MAAM,MAAO,OAAM,IAAI,MAAM,uBAAuB,EAAEN,EAAE,MAAMO,CAAC,CAAC,EAAE,IAAI,IAAIP,EAAE,YAAY,MAAMH,EAAE,CAAC,IAAIC,EAAEE,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,GAAGC,EAAE,OAAO,KAAK,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,GAAG,CAACA,EAAE,MAAMF,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,IAAIM,EAAEN,EAAE,gBAAgBF,EAAE,KAAK,GAAG,EAAE,GAAGQ,EAAE,MAAM,IAAIN,EAAE,WAAWM,CAAC,EAAEN,EAAE,YAAYF,EAAE,IAAI,EAAE,0BAA0B,CAACE,EAAE,MAAM,MAAM,EAAEA,EAAE,MAAM,OAAO,EAAEA,EAAE,MAAM,gBAAgB,CAAC,EAAE,sBAAsB,CAACA,EAAE,MAAM,MAAM,EAAEA,EAAE,eAAeA,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,MAAM,CAACO,EAAEE,EAAEC,EAAEC,EAAEqB,IAAIrB,EAAE,OAAO,IAAI,CAAC,CAAC,EAAEX,EAAE,MAAM,YAAYA,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEC,GAAG,SAASD,EAAE,QAAQ,EAAE,CAAC,EAAEC,GAAG,eAAe,EAAEA,GAAG,SAASD,EAAE,QAAQ,EAAE,CAAC,EAAEC,GAAG,gBAAgB,EAAED,EAAE,MAAM,WAAWA,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,EAAE,MAAM,YAAYA,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAIH,EAAE,IAAI,WAAW,IAAI,EAAEC,EAAE,EAAEQ,EAAE,KAAKR,IAAI,IAAIA,EAAE6B,GAAG9B,CAAC,EAAE,YAAYA,EAAE,EAAEC,CAAC,GAAGE,EAAE,aAAa,OAAO,SAASM,CAAC,EAAEN,EAAE,aAAa,OAAO,UAAUM,CAAC,EAAEN,EAAE,MAAM,UAAU,EAAEA,EAAE,MAAM,cAAc,CAAC,EAAE,0BAA0B,CAACA,EAAE,MAAM,OAAO,EAAE,IAAIH,EAAEG,EAAE,MAAM,YAAY,EAAEA,EAAE,MAAM,eAAe,EAAEA,EAAE,MAAM,CAAC,OAAO,CAAC,IAAIF,EAAEE,EAAE,WAAWH,EAAE,KAAK,MAAM,EAAE,EAAE,OAAOC,EAAE,SAAS,CAAC,OAAOQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,CAACF,EAAEG,EAAEV,EAAE,iBAAiBS,CAAC,EAAEE,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,MAAM,EAAE,SAAS,CAAC,SAAS,IAAID,EAAE,IAAI,CAAC,EAAE,OAAOC,EAAE,OAAOA,EAAEA,CAAC,CAAC,EAAEb,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,sBAAsBD,EAAEC,EAAEQ,EAAE,CAACT,EAAEG,EAAE,aAAa,OAAO,QAAQH,CAAC,EAAEG,EAAE,QAAQ,WAAW,YAAY,EAAEF,EAAEE,EAAE,aAAa,OAAO,SAAS,KAAKF,CAAC,EAAEE,EAAE,QAAQ,WAAW,aAAa,EAAEM,EAAEN,EAAE,aAAa,OAAO,SAAS,KAAKM,CAAC,EAAEN,EAAE,QAAQ,YAAY,aAAa,EAAE,IAAIO,EAAEP,EAAE,KAAK,aAAa,CAAC,EAAES,EAAET,EAAE,KAAK,cAAc,CAAC,EAAEU,EAAEV,EAAE,KAAK,cAAc,CAAC,CAAC,EAAE,YAAY,CAACA,EAAE,UAAU,IAAI,MAAM,IAAI,EAAEA,EAAE,MAAM6C,EAAE,CAAC,EAAE,GAAG,EAAE7C,EAAE,yBAAyB,EAAEA,EAAE,qBAAqB,EAAEA,EAAE,yBAAyB,EAAEA,EAAE,YAAY,CAAC,MAAM6C,CAAC,CAAC,EAAE,KAAKhD,EAAEC,EAAEQ,EAAE,CAACN,EAAE,YAAY,GAAGA,EAAE,sBAAsBH,EAAEC,EAAEQ,CAAC,CAAC,EAAE,MAAM,CAACN,EAAE,YAAY,GAAG,QAAQH,EAAE,EAAEA,EAAEG,EAAE,QAAQ,OAAOH,IAAI,CAAC,IAAIC,EAAEE,EAAE,QAAQH,CAAC,EAAEC,GAAGE,EAAE,MAAMF,CAAC,CAAC,CAAC,EAAE,WAAWD,EAAEC,EAAE,CAAC,IAAIQ,EAAEN,EAAE,YAAYH,EAAEC,CAAC,EAAE,OAAOQ,EAAE,OAAOA,EAAE,OAAO,IAAI,EAAE,YAAYT,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIQ,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACC,CAAC,CAAC,EAAED,EAAES,EAAE,IAAI,MAAM,CAAC,CAAC,IAAIC,EAAE,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,EAAE,KAAK,KAAK,KAAK,KAAK,OAAO,KAAK,aAAa,GAAG,WAAW,KAAK,aAAa,IAAI,EAAE,GAAG,CAAC,IAAID,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEU,EAAE,aAAa,GAAGA,EAAE,WAAWD,EAAE,KAAKC,EAAE,aAAaD,EAAE,KAAKC,EAAE,KAAKa,GAAE,SAASvB,CAAC,EAAES,EAAEN,EAAE,WAAWH,EAAE,CAAC,OAAO,CAACC,CAAC,CAAC,EAAES,EAAE,OAAO,GAAGA,EAAE,KAAKD,EAAE,KAAKC,EAAE,OAAOD,EAAE,KAAKC,EAAE,KAAKD,EAAE,KAAK,KAAKC,EAAE,OAAOD,EAAE,OAAO,GAAG,OAAOG,EAAE,CAACF,EAAE,MAAME,EAAE,KAAK,CAAC,OAAOF,CAAC,EAAE,WAAWV,EAAEC,EAAEQ,EAAEC,EAAE,CAACV,EAAE,OAAOA,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAE,QAAQY,EAAEX,EAAE,MAAM,GAAG,EAAE,QAAQ,EAAEW,EAAE,QAAQ,CAAC,IAAIC,EAAED,EAAE,IAAI,EAAE,GAAGC,EAAE,CAAC,IAAIC,EAAES,GAAE,MAAMvB,EAAEa,CAAC,EAAE,GAAG,CAACV,EAAE,MAAMW,CAAC,CAAC,MAAM,CAAC,CAACd,EAAEc,CAAC,CAAC,CAAC,OAAOA,CAAC,EAAE,WAAWd,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEU,GAAE,MAAM,OAAOvB,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAEC,CAAC,EAAEa,EAAE6C,GAAGjD,EAAEE,CAAC,EAAE,OAAOT,EAAE,OAAOU,EAAEC,CAAC,CAAC,EAAE,eAAed,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAE,CAAC,IAAIC,EAAEb,EAAED,IAAIA,EAAE,OAAOA,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAEc,EAAEb,EAAEsB,GAAE,MAAMvB,EAAEC,CAAC,EAAED,GAAG,IAAImC,EAAEwB,GAAGjD,EAAEE,CAAC,EAAEwB,EAAEjC,EAAE,OAAOW,EAAEqB,CAAC,EAAE,GAAG1B,EAAE,CAAC,GAAG,OAAOA,GAAG,SAAS,CAAC,QAAQuB,EAAE,IAAI,MAAMvB,EAAE,MAAM,EAAEwB,GAAE,EAAEC,GAAEzB,EAAE,OAAOwB,GAAEC,GAAE,EAAED,GAAED,EAAEC,EAAC,EAAExB,EAAE,WAAWwB,EAAC,EAAExB,EAAEuB,CAAC,CAAC7B,EAAE,MAAMiC,EAAED,EAAE,GAAG,EAAE,IAAImB,GAAEnD,EAAE,KAAKiC,EAAE,GAAG,EAAEjC,EAAE,MAAMmD,GAAE7C,EAAE,EAAEA,EAAE,OAAO,EAAEI,CAAC,EAAEV,EAAE,MAAMmD,EAAC,EAAEnD,EAAE,MAAMiC,EAAED,CAAC,CAAC,CAAC,EAAE,aAAanC,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAEW,GAAE,MAAM,OAAOvB,GAAG,SAASA,EAAEG,EAAE,QAAQH,CAAC,EAAEC,CAAC,EAAEY,EAAE8C,GAAG,CAAC,CAAClD,EAAE,CAAC,CAACC,CAAC,EAAEP,EAAE,aAAa,QAAQ,GAAG,IAAIW,EAAEX,EAAE,QAAQA,EAAE,aAAa,QAAQ,CAAC,EAAE,OAAOA,EAAE,eAAeW,EAAE,CAAC,KAAKqB,EAAE,CAACA,EAAE,SAAS,EAAE,EAAE,MAAMA,EAAE,CAACzB,GAAG,QAAQ,QAAQA,EAAE,EAAE,CAAC,EAAE,KAAKyB,EAAEC,EAAEJ,EAAEC,GAAEC,GAAE,CAAC,QAAQoB,GAAE,EAAEC,EAAE,EAAEA,EAAEtB,GAAEsB,IAAI,CAAC,IAAIC,GAAE,GAAG,CAACA,GAAE/C,EAAE,CAAC,MAAM,CAAC,MAAM,IAAIN,EAAE,WAAW,EAAE,CAAC,CAAC,GAAGqD,KAAI,QAAQF,KAAI,EAAE,MAAM,IAAInD,EAAE,WAAW,CAAC,EAAE,GAAGqD,IAAG,KAAK,MAAMF,KAAIlB,EAAEJ,EAAEuB,CAAC,EAAEC,EAAC,CAAC,OAAOF,KAAInB,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGmB,EAAC,EAAE,MAAMnB,EAAEC,EAAEJ,EAAEC,GAAEC,GAAE,CAAC,QAAQoB,GAAE,EAAEA,GAAErB,GAAEqB,KAAI,GAAG,CAAC5C,EAAE0B,EAAEJ,EAAEsB,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAInD,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO8B,KAAIE,EAAE,KAAK,UAAU,KAAK,IAAI,GAAGmB,EAAC,CAAC,CAAC,EAAEnD,EAAE,MAAMS,EAAEC,EAAEC,CAAC,CAAC,EAAE,cAAcd,EAAE,CAAC,GAAGA,EAAE,UAAUA,EAAE,UAAUA,EAAE,MAAMA,EAAE,SAAS,MAAM,GAAG,GAAG,OAAO,eAAe,IAAI,MAAM,IAAI,MAAM,kMAAkM,EAAE,GAAG,CAACA,EAAE,SAASrD,EAAEqD,EAAE,GAAG,EAAEA,EAAE,UAAUA,EAAE,SAAS,MAAM,MAAM,CAAC,MAAM,IAAIG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,eAAeH,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,MAAMC,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,EAAE,IAAI0C,EAAE,CAAC,GAAG,EAAEA,EAAE,KAAK,OAAO,GAAGA,EAAE,GAAG,CAAC,IAAIC,GAAED,EAAE,KAAK,UAAUE,GAAGF,EAAE,KAAK,UAAU,EAAE,OAAO,KAAK,OAAOE,EAAE,EAAED,EAAC,CAAC,CAAC,CAAC,cAAcD,EAAE,CAAC,KAAK,OAAOA,CAAC,CAAC,aAAa,CAAC,IAAIA,EAAE,IAAI,eAAe,GAAGA,EAAE,KAAK,OAAO9C,EAAE,EAAE,EAAE8C,EAAE,KAAK,IAAI,EAAE,EAAEA,EAAE,QAAQ,KAAKA,EAAE,OAAO,KAAKA,EAAE,SAAS,KAAK,MAAM,IAAI,MAAM,iBAAiB9C,EAAE,aAAa8C,EAAE,MAAM,EAAE,IAAIC,GAAE,OAAOD,EAAE,kBAAkB,gBAAgB,CAAC,EAAEE,GAAGG,GAAIH,GAAGF,EAAE,kBAAkB,eAAe,IAAIE,KAAK,QAAQI,IAAIJ,GAAGF,EAAE,kBAAkB,kBAAkB,IAAIE,KAAK,OAAOK,GAAG,KAAK,KAAKF,IAAKE,GAAGN,IAAG,IAAIO,GAAG,CAACC,GAAGC,KAAK,CAAC,GAAGD,GAAGC,GAAG,MAAM,IAAI,MAAM,kBAAkBD,GAAG,KAAKC,GAAG,0BAA0B,EAAE,GAAGA,GAAGT,GAAE,EAAE,MAAM,IAAI,MAAM,QAAQA,GAAE,qCAAqC,EAAE,IAAIU,EAAG,IAAI,eAAe,GAAGA,EAAG,KAAK,MAAMzD,EAAE,EAAE,EAAE+C,KAAIM,IAAII,EAAG,iBAAiB,QAAQ,SAASF,GAAG,IAAIC,EAAE,EAAEC,EAAG,aAAa,cAAcA,EAAG,kBAAkBA,EAAG,iBAAiB,oCAAoC,EAAEA,EAAG,KAAK,IAAI,EAAE,EAAEA,EAAG,QAAQ,KAAKA,EAAG,OAAO,KAAKA,EAAG,SAAS,KAAK,MAAM,IAAI,MAAM,iBAAiBzD,EAAE,aAAayD,EAAG,MAAM,EAAE,OAAOA,EAAG,WAAW,OAAO,IAAI,WAAWA,EAAG,UAAU,CAAC,CAAC,EAAExB,GAAGwB,EAAG,cAAc,GAAG,EAAE,CAAC,EAAEC,GAAG,KAAKA,GAAG,cAAcH,IAAI,CAAC,IAAIC,GAAGD,GAAGF,GAAGI,GAAIF,GAAG,GAAGF,GAAG,EAAE,GAAGI,EAAG,KAAK,IAAIA,EAAGV,GAAE,CAAC,EAAE,OAAOW,GAAG,OAAOH,EAAE,EAAE,MAAMG,GAAG,OAAOH,EAAE,EAAED,GAAGE,GAAGC,CAAE,GAAG,OAAOC,GAAG,OAAOH,EAAE,EAAE,IAAI,MAAM,IAAI,MAAM,eAAe,EAAE,OAAOG,GAAG,OAAOH,EAAE,CAAC,CAAC,GAAGH,IAAI,CAACL,MAAKM,GAAGN,GAAE,EAAEA,GAAE,KAAK,OAAO,CAAC,EAAE,OAAOM,GAAGN,GAAE5G,EAAE,6EAA6E,GAAG,KAAK,QAAQ4G,GAAE,KAAK,WAAWM,GAAG,KAAK,YAAY,EAAE,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,aAAa,KAAK,YAAY,EAAE,KAAK,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,aAAa,KAAK,YAAY,EAAE,KAAK,UAAU,CAAC,CAAC,GAAG,OAAO,eAAe,IAAI,CAAC,GAAG,CAAC1H,EAAE,KAAK,sHAAsH,IAAI0E,EAAE,IAAID,EAAEsB,EAAE,CAAC,SAAS,GAAG,SAASrB,CAAC,CAAC,KAAM,KAAIqB,EAAE,CAAC,SAAS,GAAG,IAAI1B,CAAC,EAAE,IAAI2B,EAAEjC,EAAE,WAAWH,EAAEC,EAAEkC,EAAEzB,EAAEE,CAAC,EAAEuB,EAAE,SAASC,EAAE,SAASD,EAAE,SAASA,EAAE,MAAMC,EAAE,SAAS,KAAKA,EAAE,IAAID,EAAE,KAAK,OAAO,iBAAiBC,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,IAAIJ,EAAE,CAAC,EAAEC,GAAE,OAAO,KAAKG,EAAE,UAAU,EAAEH,GAAE,QAAQqB,IAAG,CAAC,IAAIC,EAAEnB,EAAE,WAAWkB,EAAC,EAAEtB,EAAEsB,EAAC,EAAE,IAAIE,MAAKrD,EAAE,cAAciC,CAAC,EAAEmB,EAAE,GAAGC,EAAC,EAAE,CAAC,EAAE,SAAStB,GAAEoB,GAAEC,EAAEC,GAAEC,GAAGG,EAAG,CAAC,IAAIC,GAAGP,GAAE,KAAK,SAAS,GAAGM,GAAIC,GAAG,OAAO,MAAO,GAAE,IAAIC,GAAG,KAAK,IAAID,GAAG,OAAOD,EAAGH,EAAE,EAAE,GAAGI,GAAG,MAAM,QAAQE,GAAG,EAAEA,GAAGD,GAAGC,KAAKR,EAAEC,GAAEO,EAAE,EAAEF,GAAGD,EAAGG,EAAE,MAAO,SAAQA,GAAG,EAAEA,GAAGD,GAAGC,KAAKR,EAAEC,GAAEO,EAAE,EAAEF,GAAG,IAAID,EAAGG,EAAE,EAAE,OAAOD,EAAE,CAAC,OAAO9B,EAAE,KAAK,CAACsB,GAAEC,EAAEC,GAAEC,GAAGG,KAAMzD,EAAE,cAAciC,CAAC,EAAEF,GAAEoB,GAAEC,EAAEC,GAAEC,GAAGG,CAAE,GAAG5B,EAAE,KAAK,CAACsB,GAAEC,EAAEC,GAAEC,GAAGG,IAAK,CAACzD,EAAE,cAAciC,CAAC,EAAE,IAAIyB,GAAGf,GAAGS,CAAC,EAAE,GAAG,CAACM,GAAG,MAAM,IAAI1D,EAAE,WAAW,EAAE,EAAE,OAAO+B,GAAEoB,GAAEjG,EAAEwG,GAAGN,EAAEC,EAAC,EAAE,CAAC,IAAIK,GAAG,UAAU,EAAE,CAAC,EAAEzB,EAAE,WAAWJ,EAAEI,CAAC,CAAC,EAAEd,GAAG,CAACtB,EAAEC,IAAID,EAAEsC,GAAGhF,GAAE0C,EAAEC,CAAC,EAAE,GAAGmE,GAAE,CAAC,iBAAiB,EAAE,YAAYpE,EAAEC,EAAEQ,EAAE,CAAC,GAAGc,GAAE,MAAMtB,CAAC,EAAE,OAAOA,EAAE,IAAIS,EAAE,GAAGV,IAAI,KAAKU,EAAEP,EAAE,IAAI,MAAM,CAAC,IAAIS,EAAEwD,GAAE,gBAAgBpE,CAAC,EAAEU,EAAEE,EAAE,IAAI,CAAC,GAAGX,EAAE,QAAQ,EAAE,CAAC,GAAG,CAACQ,EAAE,MAAM,IAAIN,EAAE,WAAW,EAAE,EAAE,OAAOO,CAAC,CAAC,OAAOa,GAAE,MAAMb,EAAET,CAAC,CAAC,EAAE,OAAOD,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAEV,EAAEC,CAAC,EAAExC,EAAEgD,GAAG,CAAC,EAAEC,EAAE,IAAIjD,EAAEgD,EAAE,GAAG,CAAC,EAAEC,EAAE,KAAKhD,EAAE+C,EAAE,GAAG,CAAC,EAAEC,EAAE,MAAMjD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,IAAIjD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,IAAIjD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,KAAKU,GAAE,CAACV,EAAE,OAAO,GAAGS,GAAET,EAAE,KAAK,CAAC,KAAK,IAAIS,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAE,KAAKhD,EAAEgD,EAAE,IAAI,CAAC,EAAEC,EAAE,OAAO,IAAIE,EAAEF,EAAE,MAAM,QAAQ,EAAEG,EAAEH,EAAE,MAAM,QAAQ,EAAEI,EAAEJ,EAAE,MAAM,QAAQ,EAAE,OAAOU,GAAE,CAAC,KAAK,MAAMR,EAAE,GAAG,IAAI,GAAGO,GAAE,KAAK,MAAMP,EAAE,GAAG,EAAE,CAAC,KAAK,IAAIO,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE1D,EAAE+C,EAAE,IAAI,CAAC,EAAEG,EAAE,IAAI,IAAI,IAAIQ,GAAE,CAAC,KAAK,MAAMP,EAAE,GAAG,IAAI,GAAGM,GAAE,KAAK,MAAMN,EAAE,GAAG,EAAE,CAAC,KAAK,IAAIM,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE1D,EAAE+C,EAAE,IAAI,CAAC,EAAEI,EAAE,IAAI,IAAI,IAAIO,GAAE,CAAC,KAAK,MAAMN,EAAE,GAAG,IAAI,GAAGK,GAAE,KAAK,MAAML,EAAE,GAAG,EAAE,CAAC,KAAK,IAAIK,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE1D,EAAE+C,EAAE,IAAI,CAAC,EAAEK,EAAE,IAAI,IAAI,IAAIM,GAAE,CAACV,EAAE,MAAM,GAAGS,GAAET,EAAE,IAAI,CAAC,KAAK,IAAIS,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE3D,EAAEgD,EAAE,IAAI,CAAC,EAAEW,GAAE,CAAC,EAAE,CAAC,EAAE,QAAQpB,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,GAAG,CAACT,EAAE,OAAOF,EAAE,KAAK,IAAI,EAAE,MAAM,IAAIE,EAAE,WAAW,EAAE,EAAE,GAAGO,EAAE,EAAE,MAAO,GAAE,IAAIG,EAAEvD,GAAE,MAAM0C,EAAEA,EAAES,CAAC,EAAEN,EAAE,MAAMF,EAAEY,EAAED,EAAEH,EAAEC,CAAC,CAAC,EAAE,gBAAgBV,EAAE,CAAC,IAAIC,EAAEE,EAAE,iBAAiBH,CAAC,EAAE,OAAOC,CAAC,EAAE,QAAQ,OAAO,OAAOD,EAAE,CAAC,IAAIC,EAAEqB,GAAGtB,CAAC,EAAE,OAAOC,CAAC,CAAC,EAAE,SAASoE,GAAGrE,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,GAAGT,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAEQ,EAAE,GAAG,MAAM,IAAI,IAAIG,EAAET,EAAE,WAAWF,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEY,EAAED,EAAE,KAAK,GAAG,CAACC,EAAE,MAAM,IAAI,IAAIC,EAAE,GAAG,OAAOL,EAAE,IAAIK,GAAG,KAAKL,EAAE,IAAIK,GAAG,KAAKL,EAAE,IAAIK,GAAG,KAAKA,GAAGX,EAAE,gBAAgBU,EAAEC,CAAC,EAAE,GAAG,CAAC,OAAOqB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAImC,GAAG,IAAI,CAAC,IAAItE,EAAEvC,EAAE,CAAC2G,GAAE,SAAS,CAAC,EAAE,OAAOA,GAAE,SAAS,EAAEpE,CAAC,EAAEuE,GAAGD,GAAG,SAASE,GAAGxE,EAAEC,EAAEQ,EAAE,CAAC2D,GAAE,QAAQ3D,EAAE,GAAG,CAAC,IAAIC,EAAE0D,GAAE,gBAAgBpE,CAAC,EAAE,OAAOC,EAAE,CAAC,IAAK,GAAE,CAAC,IAAIW,EAAE0D,GAAG,EAAE,GAAG1D,EAAE,EAAE,MAAM,IAAI,KAAKT,EAAE,QAAQS,CAAC,GAAGA,IAAI,IAAIC,EAAE,OAAOA,EAAEV,EAAE,UAAUO,EAAEE,CAAC,EAAEC,EAAE,EAAE,CAAC,IAAK,GAAE,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,OAAOH,EAAE,MAAM,IAAK,GAAE,CAAC,IAAIE,EAAE0D,GAAG,EAAE,OAAO5D,EAAE,OAAOE,EAAE,CAAC,CAAC,IAAK,IAAG,CAAC,IAAIA,EAAE2D,GAAG,EAAEzD,EAAE,EAAE,OAAOvD,GAAEqD,EAAEE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAK,IAAG,IAAK,IAAG,MAAO,EAAC,CAAC,MAAM,GAAG,OAAOqB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASsC,GAAGzE,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIQ,EAAE2D,GAAE,gBAAgBpE,CAAC,EAAE,OAAOoE,GAAE,OAAOjE,EAAE,KAAKM,EAAE,KAAKR,CAAC,CAAC,OAAOS,EAAE,CAAC,GAAG,OAAOP,EAAE,KAAKO,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASgE,GAAG1E,EAAEC,EAAEQ,EAAE,CAAC2D,GAAE,QAAQ3D,EAAE,GAAG,CAAC,IAAIC,EAAE0D,GAAE,gBAAgBpE,CAAC,EAAE,OAAOC,EAAE,CAAC,IAAK,OAAM,OAAOS,EAAE,IAAI,EAAE,IAAI,IAAK,OAAM,CAAC,GAAG,CAACA,EAAE,IAAI,MAAM,IAAI,GAAGA,EAAE,IAAI,IAAI,aAAa,CAAC,IAAIE,EAAEF,EAAE,IAAI,IAAI,aAAaA,CAAC,EAAEG,EAAE0D,GAAG,EAAE9G,EAAEoD,GAAG,CAAC,EAAED,EAAE,SAAS,EAAEnD,EAAEoD,EAAE,GAAG,CAAC,EAAED,EAAE,SAAS,EAAEnD,EAAEoD,EAAE,GAAG,CAAC,EAAED,EAAE,SAAS,EAAEnD,EAAEoD,EAAE,IAAI,CAAC,EAAED,EAAE,SAAS,EAAE,QAAQE,EAAE,EAAEA,EAAE,GAAGA,IAAIzD,EAAEwD,EAAEC,EAAE,EAAE,EAAEF,EAAE,KAAKE,CAAC,GAAG,EAAE,MAAO,EAAC,CAAC,MAAO,EAAC,CAAC,IAAK,OAAM,IAAK,OAAM,IAAK,OAAM,OAAOJ,EAAE,IAAI,EAAE,IAAI,IAAK,OAAM,IAAK,OAAM,IAAK,OAAM,CAAC,GAAG,CAACA,EAAE,IAAI,MAAM,IAAI,GAAGA,EAAE,IAAI,IAAI,aAAa,CAAC,QAAQG,EAAE0D,GAAG,EAAEpC,EAAE1E,EAAEoD,GAAG,CAAC,EAAEuB,EAAE3E,EAAEoD,EAAE,GAAG,CAAC,EAAEmB,EAAEvE,EAAEoD,EAAE,GAAG,CAAC,EAAEoB,GAAExE,EAAEoD,EAAE,IAAI,CAAC,EAAEqB,GAAE,CAAC,EAAEpB,EAAE,EAAEA,EAAE,GAAGA,IAAIoB,GAAE,KAAK7E,EAAEwD,EAAEC,EAAE,EAAE,CAAC,EAAE,OAAOJ,EAAE,IAAI,IAAI,aAAaA,EAAE,IAAIT,EAAE,CAAC,QAAQkC,EAAE,QAAQC,EAAE,QAAQJ,EAAE,QAAQC,GAAE,KAAKC,EAAC,CAAC,CAAC,CAAC,MAAO,EAAC,CAAC,IAAK,OAAM,CAAC,GAAG,CAACxB,EAAE,IAAI,MAAM,IAAI,IAAIG,EAAE0D,GAAG,EAAE,OAAO9G,EAAEoD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAK,OAAM,OAAOH,EAAE,IAAI,IAAI,IAAI,IAAK,OAAM,CAAC,IAAIG,EAAE0D,GAAG,EAAE,OAAOpE,EAAE,MAAMO,EAAET,EAAEY,CAAC,CAAC,CAAC,IAAK,OAAM,CAAC,GAAG,CAACH,EAAE,IAAI,MAAM,IAAI,GAAGA,EAAE,IAAI,IAAI,iBAAiB,CAAC,IAAI4C,GAAE5C,EAAE,IAAI,IAAI,iBAAiBA,EAAE,GAAG,EAAEG,EAAE0D,GAAG,EAAEhH,GAAEsD,GAAG,CAAC,EAAEyC,GAAE,CAAC,EAAE/F,GAAEsD,EAAE,GAAG,CAAC,EAAEyC,GAAE,CAAC,CAAC,CAAC,MAAO,EAAC,CAAC,IAAK,OAAM,OAAO5C,EAAE,IAAI,EAAE,IAAI,IAAK,OAAM,OAAOA,EAAE,IAAI,EAAE,IAAI,QAAQ,MAAM,GAAG,CAAC,OAAO6C,EAAE,CAAC,GAAG,OAAOpD,EAAE,KAAKoD,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASoB,GAAG3E,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAACT,EAAEmE,GAAE,OAAOnE,CAAC,EAAE,IAAIW,EAAEF,EAAE,IAAIG,EAAEH,EAAE,KAAK,OAAOA,EAAEA,EAAE,MAAMT,EAAEmE,GAAE,YAAYpE,EAAEC,EAAEY,CAAC,EAAEuD,GAAE,OAAOxD,EAAET,EAAE,MAAMA,EAAE,KAAKF,EAAEQ,CAAC,CAAC,OAAOK,EAAE,CAAC,GAAG,OAAOX,EAAE,KAAKW,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAAS8D,GAAG5E,EAAEC,EAAEQ,EAAEC,EAAE,CAAC0D,GAAE,QAAQ1D,EAAE,GAAG,CAACT,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAE,IAAIW,EAAEF,EAAE4D,GAAG,EAAE,EAAE,OAAOnE,EAAE,KAAKF,EAAEQ,EAAEG,CAAC,EAAE,EAAE,OAAOC,EAAE,CAAC,GAAG,OAAOV,EAAE,KAAKU,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAIgE,GAAG,CAAC7E,EAAEC,EAAEQ,IAAIgC,GAAGzC,EAAE1C,GAAE2C,EAAEQ,CAAC,EAAE,SAASqE,GAAG9E,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,GAAGT,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAES,GAAG,EAAE,MAAM,IAAI,IAAIE,EAAET,EAAE,SAASF,CAAC,EAAEY,EAAE,KAAK,IAAIH,EAAE8B,GAAG5B,CAAC,CAAC,EAAEE,EAAEzD,EAAEoD,EAAEI,CAAC,EAAE,OAAOgE,GAAGjE,EAAEH,EAAEC,EAAE,CAAC,EAAErD,EAAEoD,EAAEI,CAAC,EAAEC,EAAED,CAAC,OAAOsB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAAS4C,GAAG/E,EAAE,CAAC,GAAG,CAAC,OAAOA,EAAEoE,GAAE,OAAOpE,CAAC,EAAEG,EAAE,MAAMH,CAAC,EAAE,CAAC,OAAOC,EAAE,CAAC,GAAG,OAAOE,EAAE,KAAKF,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAAS+E,GAAGhF,EAAEC,EAAE,CAAC,GAAG,CAAC,OAAOD,EAAEoE,GAAE,OAAOpE,CAAC,EAAEoE,GAAE,OAAOjE,EAAE,KAAKH,EAAEC,CAAC,CAAC,OAAOQ,EAAE,CAAC,GAAG,OAAON,EAAE,KAAKM,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,SAASwE,GAAGjF,EAAEC,EAAEQ,EAAE,CAAC,GAAG,CAAC,OAAOR,EAAEmE,GAAE,OAAOnE,CAAC,EAAEA,EAAEmE,GAAE,YAAYpE,EAAEC,CAAC,EAAEQ,IAAI,EAAEN,EAAE,OAAOF,CAAC,EAAEQ,IAAI,IAAIN,EAAE,MAAMF,CAAC,EAAET,GAAG,kCAAkC,EAAE,CAAC,OAAOkB,EAAE,CAAC,GAAG,OAAOP,EAAE,KAAKO,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAIwE,GAAG,IAAI1F,GAAG,EAAE,EAAE2F,GAAG,EAAEC,GAAG,IAAID,GAAGE,GAAG,CAACrF,EAAEC,EAAEQ,IAAInD,GAAE,WAAW0C,EAAEC,EAAEA,EAAEQ,CAAC,EAAE6E,GAAG,CAACtF,EAAEC,IAAIA,EAAE,UAAU,EAAE,QAAQ,CAAC,CAACD,GAAGA,IAAI,GAAGC,EAAE,WAAW,IAAI,SAASsF,GAAGvF,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAEC,EAAEqB,EAAE,CAAC,IAAIC,EAAEkD,GAAG1E,EAAEC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAMuB,CAAC,EAAE,MAAO,IAAG,IAAIJ,EAAEoC,GAAE,gBAAgB1D,CAAC,EAAEuB,GAAE9B,EAAE,KAAK6B,EAAEhC,EAAEoC,EAAEnC,EAAEQ,CAAC,EAAEyB,GAAED,GAAE,IAAI,OAAOxE,EAAEqD,GAAG,CAAC,EAAEmB,GAAE,UAAUvE,EAAEyE,GAAG,CAAC,EAAED,GAAE,CAAC,OAAOoB,GAAE,CAAC,GAAG,OAAOnD,EAAE,KAAKmD,GAAE,OAAO,aAAa,MAAMA,GAAE,MAAM,CAACA,GAAE,KAAK,CAAC,CAAC,SAASkC,GAAGxF,EAAEC,EAAEQ,EAAEC,EAAEE,EAAEC,EAAEC,EAAE,CAAC,IAAIqB,EAAEmD,GAAGzE,EAAEC,CAAC,EAAE,GAAG,CAAC,IAAIsB,EAAEgC,GAAE,gBAAgBxD,CAAC,EAAEH,EAAE,GAAG2D,GAAE,QAAQpE,EAAEoC,EAAEnC,EAAES,EAAEyB,CAAC,CAAC,OAAOH,EAAE,CAAC,GAAG,OAAO7B,EAAE,KAAK6B,EAAE,OAAO,aAAa,MAAMA,EAAE,MAAM,CAACA,EAAE,KAAK,CAAC,CAAC,IAAIyD,GAAG,CAACzF,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,IAAIE,EAAE,IAAI,KAAK,EAAE,YAAY,EAAEC,EAAE,IAAI,KAAKD,EAAE,EAAE,CAAC,EAAEE,EAAE,IAAI,KAAKF,EAAE,EAAE,CAAC,EAAEuB,EAAEtB,EAAE,kBAAkB,EAAEuB,EAAEtB,EAAE,kBAAkB,EAAEkB,EAAE,KAAK,IAAIG,EAAEC,CAAC,EAAE1E,EAAEsC,GAAG,CAAC,EAAEgC,EAAE,GAAGvE,EAAEwC,GAAG,CAAC,EAAE,EAAEkC,GAAGC,GAAG,IAAIH,GAAEsB,GAAG,CAAC,IAAIC,GAAED,GAAG,EAAE,IAAI,IAAIE,GAAG,KAAK,IAAIF,CAAC,EAAEK,EAAG,OAAO,KAAK,MAAMH,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAEI,GAAG,OAAOJ,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAMD,EAAC,GAAGI,CAAE,GAAGC,EAAE,EAAE,EAAE3B,GAAED,GAAEE,CAAC,EAAEmB,GAAErB,GAAEG,CAAC,EAAEA,EAAED,GAAG0C,GAAG3C,GAAEzB,EAAE,EAAE,EAAEoE,GAAGvB,GAAE5C,EAAE,EAAE,IAAImE,GAAG3C,GAAExB,EAAE,EAAE,EAAEmE,GAAGvB,GAAE7C,EAAE,EAAE,EAAE,EAAEiF,GAAG,CAAC,EAAEC,GAAG,CAAC3F,EAAEC,IAAI,CAACyF,GAAG,OAAO,EAAE,QAAQjF,EAAEA,EAAEnD,GAAE0C,GAAG,GAAG,CAAC,IAAIU,EAAED,GAAG,IAAIC,GAAGD,GAAG,IAAIR,GAAGS,GAAGT,EAAE,EAAE,EAAE,EAAEyF,GAAG,KAAKjF,GAAG,IAAI/C,EAAEuC,GAAG,CAAC,EAAEQ,GAAG,IAAIhD,EAAEwC,GAAG,CAAC,EAAErC,GAAGqC,GAAG,CAAC,CAAC,EAAEA,GAAGS,EAAE,EAAE,CAAC,CAAC,OAAOgF,EAAE,EAAEE,GAAG,CAAC5F,EAAEC,EAAEQ,IAAI,CAAC,IAAIC,EAAEiF,GAAG1F,EAAEQ,CAAC,EAAE,OAAOY,GAAGrB,CAAC,EAAE,GAAGU,CAAC,CAAC,EAAEmF,GAAG,CAAC7F,EAAEC,EAAEQ,IAAImF,GAAG5F,EAAEC,EAAEQ,CAAC,EAAEqF,GAAG,IAAI,KAAK,IAAI,EAAEC,GAAG,IAAI,WAAWC,GAAGhG,GAAG,CAAC,IAAIC,EAAEhD,EAAE,OAAOwD,GAAGT,EAAEC,EAAE,WAAW,OAAO,MAAM,EAAE,GAAG,CAAC,OAAOhD,EAAE,KAAKwD,CAAC,EAAE5C,GAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAEoI,GAAGjG,GAAG,CAAC,IAAIC,EAAE3C,GAAE,OAAO0C,KAAK,EAAE,IAAIS,EAAEsF,GAAG,EAAE,GAAG/F,EAAES,EAAE,MAAM,GAAG,QAAQC,EAAE,EAAEA,GAAG,EAAEA,GAAG,EAAE,CAAC,IAAIE,EAAEX,GAAG,EAAE,GAAGS,GAAGE,EAAE,KAAK,IAAIA,EAAEZ,EAAE,SAAS,EAAE,IAAIa,EAAE,KAAK,IAAIJ,EAAEoC,GAAG,KAAK,IAAI7C,EAAEY,CAAC,EAAE,KAAK,CAAC,EAAEE,EAAEkF,GAAGnF,CAAC,EAAE,GAAGC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAEoF,GAAG,CAAC,EAAEC,GAAG,IAAI7J,GAAG,iBAAiB8J,GAAG,IAAI,CAAC,GAAG,CAACA,GAAG,QAAQ,CAAC,IAAIpG,GAAG,OAAO,WAAW,UAAU,UAAU,WAAW,UAAU,UAAU,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,EAAE,SAASC,EAAE,CAAC,KAAK,WAAW,QAAQ,WAAW,KAAK,IAAI,IAAI,IAAI,KAAK,iBAAiB,KAAKD,EAAE,EAAEmG,GAAG,CAAC,EAAE,QAAQ1F,KAAKyF,GAAGA,GAAGzF,CAAC,IAAI,OAAO,OAAOR,EAAEQ,CAAC,EAAER,EAAEQ,CAAC,EAAEyF,GAAGzF,CAAC,EAAE,IAAIC,EAAE,CAAC,EAAE,QAAQD,KAAKR,EAAES,EAAE,KAAK,GAAGD,CAAC,IAAIR,EAAEQ,CAAC,CAAC,EAAE,EAAE2F,GAAG,QAAQ1F,CAAC,CAAC,OAAO0F,GAAG,OAAO,EAAEC,GAAG,CAACrG,EAAEC,IAAI,CAAC,QAAQQ,EAAE,EAAEA,EAAET,EAAE,OAAO,EAAES,EAAEpD,EAAE4C,GAAG,EAAED,EAAE,WAAWS,CAAC,EAAEpD,EAAE4C,CAAC,EAAE,CAAC,EAAEqG,GAAG,CAACtG,EAAEC,IAAI,CAAC,IAAIQ,EAAE,EAAE,OAAO2F,GAAG,EAAE,QAAQ,CAAC1F,EAAEE,IAAI,CAAC,IAAIC,EAAEZ,EAAEQ,EAAE/C,EAAEsC,EAAEY,EAAE,GAAG,CAAC,EAAEC,EAAEwF,GAAG3F,EAAEG,CAAC,EAAEJ,GAAGC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE6F,GAAG,CAACvG,EAAEC,IAAI,CAAC,IAAIQ,EAAE2F,GAAG,EAAE1I,EAAEsC,GAAG,CAAC,EAAES,EAAE,OAAO,IAAIC,EAAE,EAAE,OAAOD,EAAE,QAAQG,GAAGF,GAAGE,EAAE,OAAO,CAAC,EAAElD,EAAEuC,GAAG,CAAC,EAAES,EAAE,CAAC,EAAE8F,GAAG,IAAI,GAAGC,GAAGzG,GAAG,CAAC7C,EAAG6C,EAAEwG,GAAG,IAAItJ,EAAE,IAAIX,EAAEyD,EAAE,IAAIwB,GAAGxB,CAAC,CAAC,CAAC,EAAE0G,GAAG,CAAC1G,EAAEC,IAAI,CAAC9C,EAAG6C,EAAEyG,GAAGzG,CAAC,CAAC,EAAE2G,GAAGD,GAAG,SAASE,GAAG5G,EAAE,CAAC,GAAG,CAAC,IAAIC,EAAEmE,GAAE,gBAAgBpE,CAAC,EAAE,OAAOG,EAAE,MAAMF,CAAC,EAAE,CAAC,OAAOQ,EAAE,CAAC,GAAG,OAAON,EAAE,KAAKM,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAAC,IAAIoG,GAAG,CAAC7G,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,QAAQE,EAAE,EAAEC,EAAE,EAAEA,EAAEJ,EAAEI,IAAI,CAAC,IAAIC,EAAEpD,EAAEuC,GAAG,CAAC,EAAEkC,EAAEzE,EAAEuC,EAAE,GAAG,CAAC,EAAEA,GAAG,EAAE,IAAImC,EAAEjC,EAAE,KAAKH,EAAE3C,EAAEyD,EAAEqB,EAAEzB,CAAC,EAAE,GAAG0B,EAAE,EAAE,MAAM,GAAG,GAAGxB,GAAGwB,EAAEA,EAAED,EAAE,MAAM,OAAOzB,EAAE,MAAMA,GAAG0B,EAAE,CAAC,OAAOxB,CAAC,EAAE,SAASkG,GAAG9G,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIE,EAAEwD,GAAE,gBAAgBpE,CAAC,EAAEa,EAAEgG,GAAGjG,EAAEX,EAAEQ,CAAC,EAAE,OAAO/C,EAAEgD,GAAG,CAAC,EAAEG,EAAE,CAAC,OAAOC,EAAE,CAAC,GAAG,OAAOX,EAAE,KAAKW,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAAC,SAASiG,GAAG/G,EAAEC,EAAEQ,EAAEC,EAAEE,EAAE,CAAC,IAAIC,EAAEyE,GAAGrF,EAAEQ,CAAC,EAAE,GAAG,CAAC,GAAG,MAAMI,CAAC,EAAE,MAAO,IAAG,IAAIC,EAAEsD,GAAE,gBAAgBpE,CAAC,EAAE,OAAOG,EAAE,OAAOW,EAAED,EAAEH,CAAC,EAAEU,GAAE,CAACN,EAAE,WAAW,GAAGK,GAAEL,EAAE,SAAS,CAAC,KAAK,IAAIK,EAAC,GAAG,EAAEA,GAAE,EAAE,CAAC,KAAK,MAAMA,GAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAMA,GAAE,EAAE,CAAC,CAACA,KAAI,IAAI,UAAU,IAAI,EAAE,EAAE,EAAE1D,EAAEmD,GAAG,CAAC,EAAEQ,GAAE,CAAC,EAAE3D,EAAEmD,EAAE,GAAG,CAAC,EAAEQ,GAAE,CAAC,EAAEN,EAAE,UAAUD,IAAI,GAAGH,IAAI,IAAII,EAAE,SAAS,MAAM,CAAC,OAAOqB,EAAE,CAAC,GAAG,OAAOhC,EAAE,KAAKgC,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAAC,IAAI6E,GAAG,CAAChH,EAAEC,EAAEQ,EAAEC,IAAI,CAAC,QAAQE,EAAE,EAAEC,EAAE,EAAEA,EAAEJ,EAAEI,IAAI,CAAC,IAAIC,EAAEpD,EAAEuC,GAAG,CAAC,EAAEkC,EAAEzE,EAAEuC,EAAE,GAAG,CAAC,EAAEA,GAAG,EAAE,IAAImC,EAAEjC,EAAE,MAAMH,EAAE3C,EAAEyD,EAAEqB,EAAEzB,CAAC,EAAE,GAAG0B,EAAE,EAAE,MAAM,GAAG,GAAGxB,GAAGwB,EAAEA,EAAED,EAAE,MAAM,OAAOzB,EAAE,MAAMA,GAAG0B,EAAE,CAAC,OAAOxB,CAAC,EAAE,SAASqG,GAAGjH,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,GAAG,CAAC,IAAIE,EAAEwD,GAAE,gBAAgBpE,CAAC,EAAEa,EAAEmG,GAAGpG,EAAEX,EAAEQ,CAAC,EAAE,OAAO/C,EAAEgD,GAAG,CAAC,EAAEG,EAAE,CAAC,OAAOC,EAAE,CAAC,GAAG,OAAOX,EAAE,KAAKW,EAAE,OAAO,aAAa,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,CAACX,EAAE,oBAAoBkD,GAAGlD,EAAE,WAAW,EAAE6C,EAAE,kBAAkB,IAAI7C,EAAE,WAAW,EAAE,EAAE6C,EAAE,kBAAkB,MAAM,4BAA4B,IAAIhC,GAAG,CAAC,EAAEY,GAAG,EAAEyC,GAAG,EAAEG,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEI,GAAG,EAAEC,GAAG,EAAEG,GAAG,EAAEK,GAAG,EAAEC,GAAG,EAAEI,GAAG,EAAEC,GAAG,EAAEE,GAAG,EAAEC,GAAG,EAAEE,EAAE,EAAE/F,GAAED,GAAG,EAAEiG,GAAG,KAAKA,GAAGhG,GAAE,GAAG,EAAEiG,GAAG1L,EAAE,aAAauE,IAAImH,GAAG1L,EAAE,aAAayF,GAAE,GAAGlB,CAAC,EAAEoH,GAAG3L,EAAE,MAAMuE,IAAIoH,GAAG3L,EAAE,MAAMyF,GAAE,GAAGlB,CAAC,EAAEqH,GAAG5L,EAAE,eAAeuE,IAAIqH,GAAG5L,EAAE,eAAeyF,GAAE,GAAGlB,CAAC,EAAEsH,GAAG7L,EAAE,QAAQuE,IAAIsH,GAAG7L,EAAE,QAAQyF,GAAE,GAAGlB,CAAC,EAAEuH,GAAG9L,EAAE,uCAAuCuE,IAAIuH,GAAG9L,EAAE,uCAAuCyF,GAAE,GAAGlB,CAAC,EAAEwH,GAAG/L,EAAE,qCAAqC,CAACuE,EAAEC,KAAKuH,GAAG/L,EAAE,qCAAqCyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEwH,GAAGhM,EAAE,oCAAoC,KAAKgM,GAAGhM,EAAE,oCAAoCyF,GAAE,GAAG,EAAEwG,GAAGjM,EAAE,sCAAsC,KAAKiM,GAAGjM,EAAE,sCAAsCyF,GAAE,GAAG,EAAEyG,GAAGlM,EAAE,uCAAuC,CAACuE,EAAEC,EAAEQ,KAAKkH,GAAGlM,EAAE,uCAAuCyF,GAAE,GAAGlB,EAAEC,EAAEQ,CAAC,EAAEmH,GAAGnM,EAAE,mCAAmC,CAACuE,EAAEC,EAAEQ,EAAEC,KAAKkH,GAAGnM,EAAE,mCAAmCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,CAAC,EAAEmH,GAAGpM,EAAE,oCAAoC,CAACuE,EAAEC,EAAEQ,EAAEC,KAAKmH,GAAGpM,EAAE,oCAAoCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,CAAC,EAAEoH,GAAGrM,EAAE,iCAAiC,CAACuE,EAAEC,EAAEQ,EAAEC,KAAKoH,GAAGrM,EAAE,iCAAiCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,CAAC,EAAEqH,GAAGtM,EAAE,sCAAsC,CAACuE,EAAEC,EAAEQ,EAAEC,EAAEE,KAAKmH,GAAGtM,EAAE,sCAAsCyF,GAAE,GAAGlB,EAAEC,EAAEQ,EAAEC,EAAEE,CAAC,EAAEoH,GAAGvM,EAAE,8CAA8CuE,IAAIgI,GAAGvM,EAAE,8CAA8CyF,GAAE,GAAGlB,CAAC,EAAEiI,GAAGxM,EAAE,8CAA8C,CAACuE,EAAEC,KAAKgI,GAAGxM,EAAE,8CAA8CyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEiI,GAAGzM,EAAE,gDAAgDuE,IAAIkI,GAAGzM,EAAE,gDAAgDyF,GAAE,GAAGlB,CAAC,EAAEmI,GAAG1M,EAAE,gDAAgD,CAACuE,EAAEC,KAAKkI,GAAG1M,EAAE,gDAAgDyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEmI,GAAG3M,EAAE,gDAAgDuE,IAAIoI,GAAG3M,EAAE,gDAAgDyF,GAAE,GAAGlB,CAAC,EAAEqI,GAAG5M,EAAE,gDAAgD,CAACuE,EAAEC,KAAKoI,GAAG5M,EAAE,gDAAgDyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEqI,GAAG7M,EAAE,yCAAyCuE,IAAIsI,GAAG7M,EAAE,yCAAyCyF,GAAE,GAAGlB,CAAC,EAAEuI,GAAG9M,EAAE,yCAAyC,CAACuE,EAAEC,KAAKsI,GAAG9M,EAAE,yCAAyCyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEuI,GAAG/M,EAAE,yCAAyCuE,IAAIwI,GAAG/M,EAAE,yCAAyCyF,GAAE,GAAGlB,CAAC,EAAEyI,GAAGhN,EAAE,yCAAyC,CAACuE,EAAEC,KAAKwI,GAAGhN,EAAE,yCAAyCyF,GAAE,GAAGlB,EAAEC,CAAC,EAAEyI,GAAGjN,EAAE,wCAAwCuE,IAAI0I,GAAGjN,EAAE,wCAAwCyF,GAAE,GAAGlB,CAAC,EAAE+C,GAAG,CAAC/C,EAAEC,KAAK8C,GAAG7B,GAAE,IAAIlB,EAAEC,CAAC,EAAExE,EAAE,aAAa6F,GAAG,IAAIqH,GAAGvJ,GAAG,SAASY,GAAG,CAAC2I,IAAIC,GAAG,EAAED,KAAKvJ,GAAGY,EAAE,EAAE,SAAS4I,IAAI,CAAC,GAAG1J,GAAG,IAAIJ,GAAG,EAAEI,GAAG,GAAG,OAAO,SAASc,GAAG,CAAC2I,KAAKA,GAAG,GAAGlN,EAAE,UAAU,GAAG,CAACyB,IAAI6B,GAAG,EAAEhD,EAAEN,CAAC,EAAEuD,GAAG,GAAG,CAACgB,EAAE,CAAC,CAAC4I,GAAG,EAAE,SAASC,IAAI,CAAC,CAACA,GAAG,UAAU,OAAO,OAAOA,GAAG,SAAS,EAAEA,GAAG,UAAU,YAAYA,GAAGA,GAAG,UAAU,UAAUA,GAAGA,GAAG,UAAU,CAAC,EAAEpN,EAAE,cAAcoN,GAAG,SAASC,GAAG9I,EAAE,CAAC,OAAOA,GAAG6I,IAAI,SAAS,CAACpN,EAAE,SAASqN,GAAG,SAASC,GAAG/I,EAAEC,EAAE,CAAC,IAAIQ,EAAEqI,GAAG7I,CAAC,EAAES,EAAED,EAAET,CAAC,EAAE,OAAOU,IAAIA,EAAE,OAAO,QAAQT,GAAG4I,IAAI,SAAS,EAAEnI,EAAE,IAAIV,EAAES,EAAET,CAAC,EAAEU,EAAE,CAACjF,EAAE,YAAYsN,GAAG,SAASC,GAAGhJ,EAAEC,EAAE,CAAC,OAAO8I,GAAG/I,EAAE,IAAIC,CAAC,CAAC,CAACxE,EAAE,WAAWuN,GAAGvN,EAAE,KAAKsN,GAAG,CAAC,EAAE,SAASE,GAAGjJ,EAAE,CAAC,GAAG,CAACA,EAAE,YAAY,KAAK,8DAA8DA,EAAE,YAAY,EAAE,OAAO8I,GAAG9I,EAAE,SAAS,EAAEA,EAAE,GAAG,CAAC,CAACvE,EAAE,QAAQwN,GAAG,SAASC,GAAGlJ,EAAEC,EAAE,CAAC,OAAOD,EAAE,MAAMC,EAAE,GAAG,CAACxE,EAAE,QAAQyN,GAAG,SAASC,GAAGnJ,EAAE,CAAC,OAAOA,EAAE,GAAG,CAACvE,EAAE,WAAW0N,GAAG,SAASC,GAAGpJ,EAAE,CAAC,OAAOA,EAAE,SAAS,CAACvE,EAAE,SAAS2N,GAAG,IAAIC,GAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,GAAGA,GAAE,OAAO,CAAC,QAAQrJ,EAAE,EAAEA,EAAEqJ,GAAE,MAAM,OAAOrJ,IAAIvE,EAAE,aAAa4N,GAAE,MAAMrJ,CAAC,CAAC,EAAEqJ,GAAE,MAAM,OAAO,EAAE5N,EAAE,aAAa4N,GAAE,MAAM,EAAEA,GAAE,OAAO,EAAEA,GAAE,MAAMA,GAAE,OAAOA,GAAE,OAAO,CAAC,CAACA,GAAE,SAASA,GAAE,MAAM,IAAIA,GAAE,OAAO5N,EAAE,eAAe4N,GAAE,IAAI,EAAEjM,EAAEiM,GAAE,MAAM,GAAGA,GAAE,IAAI,CAAC,EAAE,MAAMrJ,EAAEC,EAAE,CAAC7C,EAAEiM,GAAE,MAAM,EAAE,IAAI5I,EAAER,EAAE,kBAAkBS,EAAEV,EAAE,OAAOS,EAAEC,EAAEmC,GAAGnC,EAAE,CAAC,EAAE,IAAIE,EAAE,OAAOyI,GAAE,IAAI3I,GAAG2I,GAAE,MAAMjM,EAAEsD,EAAE,CAAC,EAAE2I,GAAE,QAAQ3I,EAAEE,EAAEnF,EAAE,eAAeiF,CAAC,EAAE2I,GAAE,MAAM,KAAKzI,CAAC,IAAIA,EAAEyI,GAAE,OAAOA,GAAE,IAAIA,GAAE,KAAK3I,GAAGE,CAAC,EAAE,KAAKZ,EAAEC,EAAEQ,EAAE,CAACA,GAAGR,EAAE,kBAAkB,QAAQS,EAAE,EAAEA,EAAEV,EAAE,OAAOU,IAAIT,EAAEQ,EAAEC,CAAC,EAAEV,EAAEU,CAAC,CAAC,CAAC,EAAE,SAAS4I,GAAGtJ,EAAE,CAAC,GAAG,OAAOA,GAAG,SAAS,CAAC,IAAIC,EAAEyC,GAAG1C,CAAC,EAAES,EAAE4I,GAAE,MAAMpJ,EAAE5C,CAAC,EAAE,OAAOgM,GAAE,KAAKpJ,EAAE5C,EAAEoD,CAAC,EAAEA,CAAC,CAAC,OAAOT,CAAC,CAAC,SAASuJ,IAAI,CAAC,KAAK,mDAAmD,CAACA,GAAG,UAAU,OAAO,OAAOV,GAAG,SAAS,EAAEU,GAAG,UAAU,YAAYA,GAAGA,GAAG,UAAU,UAAUA,GAAGA,GAAG,UAAU,CAAC,EAAE9N,EAAE,QAAQ8N,GAAGA,GAAG,UAAU,YAAYA,GAAG,UAAU,YAAY,UAAU,CAAC,IAAIvJ,EAAE,KAAK,IAAIuH,GAAGvH,CAAC,CAAC,EAAE,SAASwJ,EAAExJ,EAAEC,EAAE,CAACD,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAK,KAAK,IAAIuH,GAAGxH,EAAEC,CAAC,EAAE6I,GAAGU,CAAC,EAAE,KAAK,GAAG,EAAE,IAAI,CAAC,OAAOA,EAAE,UAAU,OAAO,OAAOX,GAAG,SAAS,EAAEW,EAAE,UAAU,YAAYA,EAAEA,EAAE,UAAU,UAAUA,EAAEA,EAAE,UAAU,CAAC,EAAE/N,EAAE,SAAS+N,EAAEA,EAAE,UAAU,QAAQA,EAAE,UAAU,QAAQ,UAAU,CAAC,OAAOlI,GAAGmG,GAAG,CAAC,CAAC,EAAE+B,EAAE,UAAU,UAAUA,EAAE,UAAU,UAAU,UAAU,CAAC,OAAOlI,GAAGoG,GAAG,CAAC,CAAC,EAAE8B,EAAE,UAAU,WAAWA,EAAE,UAAU,WAAW,SAASxJ,EAAEC,EAAE,CAAC,IAAIQ,EAAE,KAAK,IAAI4I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEqJ,GAAGrJ,CAAC,EAAE0H,GAAGlH,EAAET,EAAEC,CAAC,CAAC,EAAEuJ,EAAE,UAAU,OAAOA,EAAE,UAAU,OAAO,SAASxJ,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAI,OAAO2I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEqJ,GAAGrJ,CAAC,EAAEQ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAE6I,GAAG7I,CAAC,EAAEa,GAAGsG,GAAGlH,EAAEV,EAAEC,EAAEQ,CAAC,CAAC,CAAC,EAAE+I,EAAE,UAAU,QAAQA,EAAE,UAAU,QAAQ,SAASxJ,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAI,OAAO2I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKQ,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAK,CAAC,CAACoH,GAAGnH,EAAEV,EAAEC,EAAEQ,CAAC,CAAC,EAAE+I,EAAE,UAAU,KAAKA,EAAE,UAAU,KAAK,SAASxJ,EAAEC,EAAEQ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAI2I,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKQ,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKqH,GAAGpH,EAAEV,EAAEC,EAAEQ,CAAC,CAAC,EAAE+I,EAAE,UAAU,UAAUA,EAAE,UAAU,UAAU,SAASxJ,EAAEC,EAAEQ,EAAEC,EAAE,CAAC,IAAIE,EAAE,KAAK,IAAI,OAAOyI,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKQ,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKC,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKY,GAAGyG,GAAGnH,EAAEZ,EAAEC,EAAEQ,EAAEC,CAAC,CAAC,CAAC,EAAE8I,EAAE,UAAU,kBAAkBA,EAAE,UAAU,kBAAkB,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAG0G,GAAGhI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,kBAAkBA,EAAE,UAAU,kBAAkB,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEiI,GAAGhI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,gBAAgB,CAAC,IAAIA,EAAE,UAAU,kBAAkB,IAAIA,EAAE,UAAU,iBAAiB,CAAC,EAAEA,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAG4G,GAAGlI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEmI,GAAGlI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,kBAAkB,CAAC,IAAIA,EAAE,UAAU,oBAAoB,IAAIA,EAAE,UAAU,mBAAmB,CAAC,EAAEA,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOoI,GAAGpI,CAAC,CAAC,EAAEwJ,EAAE,UAAU,oBAAoBA,EAAE,UAAU,oBAAoB,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAID,GAAG,OAAOA,GAAG,WAAWA,EAAEA,EAAE,KAAKqI,GAAGpI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,kBAAkB,CAAC,IAAIA,EAAE,UAAU,oBAAoB,IAAIA,EAAE,UAAU,mBAAmB,CAAC,EAAEA,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAGgH,GAAGtI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEuI,GAAGtI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,WAAW,CAAC,IAAIA,EAAE,UAAU,aAAa,IAAIA,EAAE,UAAU,YAAY,CAAC,EAAEA,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI,OAAOsB,GAAGkH,GAAGxI,CAAC,CAAC,CAAC,EAAEwJ,EAAE,UAAU,aAAaA,EAAE,UAAU,aAAa,SAASxJ,EAAE,CAAC,IAAIC,EAAE,KAAK,IAAIoJ,GAAE,QAAQ,EAAErJ,GAAG,OAAOA,GAAG,SAASA,EAAEA,EAAE,IAAIA,EAAEsJ,GAAGtJ,CAAC,EAAEyI,GAAGxI,EAAED,CAAC,CAAC,EAAE,OAAO,eAAewJ,EAAE,UAAU,WAAW,CAAC,IAAIA,EAAE,UAAU,aAAa,IAAIA,EAAE,UAAU,YAAY,CAAC,EAAEA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAY,UAAU,CAAC,IAAIxJ,EAAE,KAAK,IAAI0I,GAAG1I,CAAC,CAAC,EAAExE,EAAEW,EAAEX,CAAC,CAAC,GAAG,EAAEiO,GAAG1J,GAAO2J,GAAG,8FAA8F,SAASC,GAAGrO,EAAE,CAAC,IAAIC,EAAED,EAAE,OAAOE,EAAE,CAAC,EAAEC,EAAE,EAAEM,EAAE,EAAEG,EAAE,GAAG,QAAQC,EAAE,EAAEA,EAAEZ,EAAEY,IAAI,CAAC,IAAIC,EAAEsN,GAAG,QAAQpO,EAAEa,CAAC,CAAC,EAAE,GAAGC,IAAI,GAAG,GAAGF,EAAE,EAAEA,EAAEE,MAAM,CAACF,GAAGE,EAAE,GAAGX,GAAGS,GAAGH,EAAEA,IAAIG,EAAE,MAAM,GAAG,GAAG,GAAG,GAAGV,EAAE,KAAKC,EAAE,GAAG,EAAEA,IAAI,EAAEM,GAAG,QAAQA,EAAE,GAAGG,EAAE,EAAE,CAAC,CAAC,OAAOA,EAAE,IAAIV,EAAE,MAAMC,EAAES,GAAGH,GAAG,GAAG,EAAE,IAAI,WAAWP,CAAC,CAAC,CAAC,IAAIoO,GAAG,s8xpBAAs8xpBC,GAAGC,GAAG,SAASC,IAAI,CAAC,OAAOD,KAAKA,GAAGhK,GAAG6J,GAAGC,EAAE,CAAC,GAAGC,KAAKA,GAAGJ,GAAG,CAAC,WAAWK,GAAG,WAAW,MAAM,CAAC,GAAGD,EAAE,CAAC,SAASG,IAAI,CAACH,KAAKA,GAAG,OAAO,CAAC,SAASI,GAAG3O,EAAE,CAAC,MAAM,CAAC,KAAKA,EAAE,KAAK,KAAK;AAAA;AAAA,cAEp2gtBA,EAAE,KAAK,aAAaA,EAAE,MAAM,UAAU,CAAC,CAAC,SAAS4O,GAAG5O,EAAE,CAAC,OAAOA,EAAE,IAAI2O,EAAE,CAAC,CAAC,SAASE,GAAG7O,EAAEC,EAAE,CAAC,IAAIC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,GAAGD,CAAC,EAAE,CAAC,GAAGC,EAAE,MAAM,GAAG0O,GAAG1O,EAAE,MAAM,CAAC,EAAE,QAAQC,GAAGH,EAAE,WAAWG,EAAE,KAAKA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI2O,GAAG,MAAM9O,EAAC,CAAC,YAAYC,EAAE,CAAC,KAAK,QAAQA,CAAC,CAAC,OAAO,MAAM,CAAC,OAAOwO,GAAG,EAAE,KAAKxO,GAAG,IAAID,GAAEC,CAAC,CAAC,CAAC,CAAC,OAAO,QAAQ,CAACyO,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,QAAQ,SAAS,UAAU,QAAQ,CAAC,CAAC,OAAOzO,EAAEC,EAAE,MAAMC,EAAE,MAAMM,EAAE,CAAC,GAAG,CAACR,EAAE,MAAM,GAAG,IAAIW,EAAE,IAAI,KAAK,QAAQ,SAASH,GAAG,QAAQ,EAAE,EAAEA,GAAG,IAAIA,GAAG,IAAI,CAAC,EAAEI,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC+N,GAAGjO,EAAEH,CAAC,EAAE,GAAG,CAACI,EAAED,EAAE,OAAOX,EAAEC,EAAEC,CAAC,CAAC,OAAOY,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEF,EAAE,UAAU,GAAGE,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQF,CAAC,CAAC,CAAC,GAAG,CAACC,GAAGC,EAAE,MAAMd,GAAE,OAAO,EAAE,IAAI,MAAMc,CAAC,EAAE,OAAOD,CAAC,CAAC,QAAQZ,EAAEC,EAAE,GAAGC,EAAE,GAAG,CAAC,GAAG,CAACF,EAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAIQ,EAAE,IAAI,KAAK,QAAQ,SAASG,EAAE,GAAGC,EAAE,EAAEC,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC,GAAG,CAACH,EAAEH,EAAE,QAAQR,EAAEC,EAAEC,CAAC,EAAEU,EAAEJ,EAAE,gBAAgBK,EAAEL,EAAE,eAAe,OAAOO,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEN,EAAE,UAAU,GAAGM,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQN,CAAC,CAAC,CAAC,GAAGM,EAAE,MAAMf,GAAE,OAAO,EAAE,IAAI,MAAMe,CAAC,EAAE,MAAM,CAAC,QAAQH,EAAE,QAAQC,EAAE,QAAQC,CAAC,CAAC,CAAC,KAAKb,EAAEC,EAAE,GAAGC,EAAE,GAAG,CAAC,GAAG,CAACF,EAAE,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,IAAIQ,EAAE,IAAI,KAAK,QAAQ,SAASG,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC,GAAG,CAACL,EAAE,KAAKR,EAAEC,EAAEC,CAAC,EAAES,EAAEH,EAAE,SAASI,EAAEJ,EAAE,QAAQ,OAAOM,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEL,EAAE,UAAU,GAAGK,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQL,CAAC,CAAC,CAAC,GAAG,CAACG,GAAGE,EAAE,MAAMd,GAAE,OAAO,EAAE,IAAI,MAAMc,CAAC,EAAE,MAAM,CAAC,IAAIF,EAAE,IAAIC,CAAC,CAAC,CAAC,UAAUZ,EAAEC,EAAE,EAAEC,EAAE,GAAGM,EAAE,EAAE,CAAC,GAAG,CAACR,EAAE,MAAM,GAAG,IAAIW,EAAE,IAAI,KAAK,QAAQ,SAASC,EAAE,GAAGC,EAAE,GAAG,GAAG,CAAC,GAAG,CAACD,EAAED,EAAE,UAAUX,EAAEC,EAAEC,EAAEM,CAAC,CAAC,OAAOM,EAAE,CAACD,EAAEC,EAAE,OAAO,CAACD,EAAEF,EAAE,UAAU,GAAGE,CAAC,QAAC,CAAQ,KAAK,QAAQ,QAAQF,CAAC,CAAC,CAAC,GAAG,CAACC,GAAGC,EAAE,MAAMd,GAAE,OAAO,EAAE,IAAI,MAAMc,CAAC,EAAE,OAAOD,CAAC,CAAC,MAAMZ,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,IAAIF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,MAAMC,CAAC,CAAC,CAAC,IAAIF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,MAAMC,CAAC,CAAC,CAAC,KAAKF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,OAAOC,CAAC,CAAC,CAAC,MAAMF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,MAAMF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,UAAUF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,YAAYC,CAAC,CAAC,CAAC,MAAMF,EAAEC,EAAE,MAAMC,EAAE,CAAC,OAAO,KAAK,OAAOF,EAAEC,EAAE,QAAQC,CAAC,CAAC,CAAC,IAAIF,EAAE,CAAC,OAAO,KAAK,OAAOA,EAAE,MAAM,KAAK,CAAC,CAAC,KAAKA,EAAE,CAAC,OAAO,KAAK,OAAOA,EAAE,MAAM,MAAM,CAAC,CAAC,ECMl8D,IAAM8O,GAAiD,CACrD,OAAQ,MACR,OAAQ,MACR,OAAQ,KACV,EACMC,GAAY,MAAMC,GAAS,KAAK,EAEtC,SAASC,GAAUC,EAAmC,CACpD,OAAQJ,GACNK,GAAQ,eAAeD,EAA4B,YAAY,CACjE,GAAK,KACP,CAEA,SAASE,GAAUF,EAAmC,CACpD,OAAOC,GAAQ,eAAeD,EAA4B,QAAQ,CACpE,CAEA,IAAMG,GAAiD,CACrDC,EACAJ,IAEAH,GAAU,OACRQ,GAAQD,EAAeJ,CAAQ,EAC/BD,GAAUC,CAAQ,EAClBE,GAAUF,CAAQ,CACpB,EAEKM,GAAQH,GCpBf,IAAMI,GACJ,0LACIC,GACJ,2CAEF,SAASC,GAAmBC,EAAoC,CAC9D,OAAOA,EAAmB,QAAQH,GAAwB,GAAG,CAC/D,CAMA,SAASI,GAAuBC,EAAgC,CAC9D,IAAIC,EAAeJ,GAAmBG,CAAc,EAEpD,OAAIC,EAAa,MAAML,EAAkC,IACvDK,EAAe,IAAID,CAAc,IAE5BC,CACT,CAcA,IAAOC,GAASC,IACdA,EAAiBA,GAAkB,GAE/BA,EAAe,SAAW,EACrB,UAEFJ,GAAuBI,EAAe,CAAC,CAAC,EAAE,OAC/CN,GAAmBM,EAAe,MAAM,CAAC,CAAC,CAC5C,GCtCF,IAAMC,GACJ,uOACIC,GAAsC,OAE5C,SAASC,GAAmBC,EAA2C,CACrE,OAAOA,EAA0B,QAAQH,GAAyB,GAAG,CACvE,CAEA,SAASI,GAAwBC,EAA4C,CAC3E,IAAIC,EAAeJ,GAAmBG,CAA0B,EAEhE,OAAIC,EAAa,MAAML,EAAmC,IACxDK,EAAe,IAAID,CAA0B,IAExCC,CACT,CAEA,SAASC,GAAmBC,EAAqC,CAC/D,OAAAA,EAAsBA,EAAoB,QAAQ,OAAQ,GAAG,EAAE,KAAK,EAE7DJ,GAAwBI,EAAoB,CAAC,CAAC,EAAE,OACrDN,GAAmBM,EAAoB,MAAM,CAAC,CAAC,CACjD,CACF,CAeA,IAAOC,GAASC,GAA0C,CACxD,IAAMC,EAAuBD,GAAwB,GAErD,OAAIC,EAAqB,SAAW,EAC3B,QAGFA,EACJ,MAAM,SAAS,EACf,OAAQH,GAAwBA,EAAoB,OAAS,CAAC,EAC9D,IAAID,EAAkB,EACtB,KAAK,GAAG,CACb,ECnDA,IAAMK,GAA+D,CACnE,QAAS,QACT,QAAS,UACT,MAAO,QACP,UAAW,QACX,SAAU,WACV,QAAS,UACT,YAAa,SACf,EAEA,SAASC,GAAyBC,EAA4B,CAC5D,OAAOF,GAA4BE,CAAU,GAAK,OACpD,CAEA,SAASC,GAAoBC,EAA6C,CACxE,IAAMC,EAAkC,CACtC,OAAQC,GAAiBF,EAAY,EAAE,CACzC,EAEA,OAAIA,EAAY,QACdC,EAAa,MAAQE,GAAoBH,EAAY,KAAK,GAExDA,EAAY,OACdC,EAAa,KAAOD,EAAY,MAE9BA,EAAY,SACdC,EAAa,OAASD,EAAY,QAEhCA,EAAY,OACdC,EAAa,KAAOD,EAAY,MAE3BC,CACT,CAEA,SAASG,GACPC,EACAC,EACU,CACV,OAAOD,EACJ,OAAQE,GAAaA,EAAS,OAASD,CAAY,EACnD,IAAKC,GAAaA,EAAS,IAAI,CACpC,CAEA,SAASC,GACPC,EACAC,EACAC,EACAC,EACM,CACN,IAAMC,EAA0BT,GAAgBO,EAAUC,CAAW,EAEjEC,EAAc,OAAS,IACzBJ,EAAaC,CAAa,GAAKD,EAAaC,CAAa,GAAK,CAAC,GAAG,OAChEG,CACF,EAEJ,CAEA,SAASC,GAAkBL,EAA4BM,EAAsB,CACvEA,EAAO,UACTP,GAAkBC,EAAc,YAAaM,EAAO,QAAS,OAAO,EACpEP,GAAkBC,EAAc,YAAaM,EAAO,QAAS,UAAU,EACvEP,GAAkBC,EAAc,UAAWM,EAAO,QAAS,MAAM,EAErE,CAEA,SAASC,GACPP,EACAM,EACAE,EACM,CACN,IAAMC,EAAeD,EAClB,OAAQjB,GAAgBA,EAAY,OAASe,EAAO,IAAI,EACxD,IAAIhB,EAAmB,EAEtBmB,EAAa,OAAS,IACxBT,EAAa,YAAcS,EAE/B,CAEA,SAASC,GACPV,EACAM,EACAE,EACM,CACN,GAAIF,EAAO,aAAc,CAGvB,IAAMK,EAAiBC,GAAON,EAAO,aAAc,OAAWE,CAAY,EAE1ER,EAAa,QAAUA,EAAa,QAAU,CAAC,GAAG,OAChDW,EAAe,MACjB,EACIA,EAAe,UACjBX,EAAa,QAAUW,EAAe,QAE1C,CACF,CAEA,SAASE,GAAeL,EAA6B,CACnD,OAAAA,EAAeA,GAAgB,CAAC,EAExBF,GAAiC,CACvC,IAAMd,EAA6B,CACjC,KAAMJ,GAAyBkB,EAAO,IAAI,EAC1C,GAAIb,GAAiBa,EAAO,IAAI,CAClC,EAEA,OAAIA,EAAO,OAAS,gBAElBd,EAAa,KAAO,QAGtBa,GAAkBb,EAAcc,CAAM,EAEtCC,GAAqBf,EAAcc,EAAQE,CAAY,EAEvDE,GAAwBlB,EAAcc,EAAQE,CAAY,EACnDhB,CACT,CACF,CAEA,SAASsB,GACPC,EACoB,CACpB,IAAMC,EAAWD,EAAc,OAAO,OACnCT,GAAWA,EAAO,OAAS,SAC9B,EAEA,GAAIU,EAAS,OAAS,EACpB,OAAOA,EAAS,CAAC,EAAE,IAIvB,CAEA,SAASC,GACPF,EACAG,EACoB,CACpB,IAAI1B,EAAe0B,EAEnB,GAAIA,GAA2BH,EAAc,YAAa,CACxD,IAAMI,EAAsBJ,EAAc,YAAY,OACnDxB,GAAgBA,EAAY,OAAS2B,CACxC,EAEIC,EAAoB,OAAS,GAAK,CAACA,EAAoB,CAAC,EAAE,SAC5D3B,EAAe2B,EAAoB,CAAC,EAAE,GAE1C,CACA,OAAO3B,CACT,CAEe,SAARoB,GACLG,EACAK,EACAZ,EACgB,CAChB,IAAMa,EAA0BP,GAA2BC,CAAa,EAClEO,EAAoBL,GACxBF,EACAM,CACF,EACM7B,EAA+B,CACnC,OAAQuB,EAAc,OACnB,OAAQT,GAELgB,GACAA,IAAsBD,EAEff,EAAO,OAAS,UAElB,EACR,EACA,IACCO,GACEL,GACE,IAAIe,GAAkBR,CAAa,EAAE,oBACzC,CACF,CACJ,EAEA,OAAIO,IACF9B,EAAa,QAAUC,GAAiB6B,CAAiB,GAEpD9B,CACT,CC7MA,IAAAgC,GAAe,WAOTC,GAAgB,EAEtB,SAASC,GAAaC,EAAiBC,EAAwB,CAC7D,IAAMC,EAAS,cAEf,OAAOF,EAAQ,QAAQE,EAAQ,IAAI,OAAOD,CAAM,CAAC,CACnD,CAEA,SAASE,GAA2BC,EAAwC,CAC1E,IAAIC,EAAe,GACnB,OAAID,EAAY,QACdC,GAAgB,WAAW,GAAAC,QAAG,OAAOF,EAAY,KAAK,CAAC,KAErDA,EAAY,OACdC,GAAgB,UAAU,GAAAC,QAAG,OAAOF,EAAY,IAAI,CAAC,KAEnDA,EAAY,OACdC,GAAgB,UAAU,GAAAC,QAAG,OAAOF,EAAY,IAAI,CAAC,KAEvDC,GAAgB,YAAY,GAAAC,QAAG,OAAOF,EAAY,MAAM,CAAC,IAClDC,CACT,CAEA,SAASE,GACPH,EACAI,EACQ,CACR,IAAMH,EAAe;AAAA,aACVF,GAA2BC,CAAW,CAAC,KAClD,OAAOL,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAEA,SAASW,GACPL,EACAI,EACQ,CACR,IAAMH,EAAe;AAAA,aACVF,GAA2BC,CAAW,CAAC;AAAA,MAC9C,GAAAE,QAAG,OAAOF,EAAY,MAAM,CAAC;AAAA,eAEjC,OAAOL,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAEA,SAASY,GACPN,EACAI,EACQ,CACR,OAAIJ,EAAY,OACPK,GACLL,EACAI,CACF,EAGKD,GAAwBH,EAAaI,CAAM,CACpD,CAEA,SAASG,GACPC,EAEAJ,EACQ,CACR,OAAQI,GAAgB,CAAC,GACtB,IAAKR,GAAgBM,GAAiBN,EAAaI,CAAM,CAAC,EAC1D,KAAK,EAAE,CACZ,CAEA,SAASK,GACPC,EACAC,EACAP,EACQ,CACR,IAAMH,EAAe;AAAA,GACpBU,CAAI,IAAI,GAAAT,QAAG,OAAOQ,CAAO,CAAC,KAAKC,CAAI,IACpC,OAAOhB,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAGA,SAASkB,GAAgBC,EAAuBT,EAAwB,CACtE,OAAQS,GAAc,CAAC,GACpB,IAAKC,GAAaL,GAAgBK,EAAU,UAAWV,CAAM,CAAC,EAC9D,KAAK,EAAE,CACZ,CAGA,SAASW,GAAcC,EAAqBZ,EAAwB,CAClE,OAAQY,GAAY,CAAC,GAClB,IAAKN,GAAYD,GAAgBC,EAAS,SAAUN,CAAM,CAAC,EAC3D,KAAK,EAAE,CACZ,CAEA,SAASa,GAAsBC,EAA8B,CAC3D,IAAIjB,EAAe,QAAQ,GAAAC,QAAG,OAAOgB,EAAO,EAAE,CAAC,IAC/C,OAAIA,EAAO,UACTjB,GAAgB,aAAa,GAAAC,QAAG,OAAOgB,EAAO,OAAO,CAAC,KAEpDA,EAAO,OACTjB,GAAgB,UAAU,GAAAC,QAAG,OAAOgB,EAAO,IAAI,CAAC,KAE3CjB,CACT,CAEA,SAASkB,GAAYD,EAAsBd,EAAwB,CACjE,IAAIH,EAAe;AAAA,GAAMiB,EAAO,IAAI,GAAGD,GAAsBC,CAAM,CAAC,IAEpE,OAAAjB,GAAgBmB,GAAaF,EAAO,OAAQd,CAAM,EAClDH,GAAgBW,GAAgBM,EAAO,UAAWd,CAAM,EACxDH,GAAgBc,GAAcG,EAAO,QAASd,CAAM,EACpDH,GAAgBM,GAAkBW,EAAO,YAAad,CAAM,EAC5DH,GAAgB;AAAA,IAAOiB,EAAO,IAAI,IAE3BvB,GAAaM,EAAcG,EAASV,EAAa,CAC1D,CAEA,SAAS0B,GAAaC,EAA0BjB,EAAS,EAAW,CAClE,OAAQiB,GAAW,CAAC,GAAG,IAAKH,GAAWC,GAAYD,EAAQd,CAAM,CAAC,EAAE,KAAK,EAAE,CAC7E,CAEA,SAASkB,GAAuBC,EAAiC,CAC/D,OAAOA,EAAiB,YAAYA,CAAc,KAAO,EAC3D,CAEe,SAARC,GAA6BC,EAAiC,CACnE,MAAO;AAAA,iDACwCH,GAAuBG,EAAQ,OAAO,CAAC,iBAAiBL,GAAaK,EAAQ,MAAM,CAAC;AAAA;AAAA,CAGrI,CClIA,IAAMC,GAAyCC,GAC7CD,GAAgBE,GAAWD,CAAa,CAAC,EAEpCE,GAAQH,GCMf,IAAMI,GAAQC,GAEC,SAARC,GACLC,EACoB,CAapB,OATE,IAAI,IAAI,CACN,CAAC,QAASH,EAAK,EACf,CAAC,MAAOI,EAAS,EACjB,CAAC,MAAOC,EAAG,EACX,CAAC,SAAUA,EAAG,EACd,CAAC,SAAUC,EAAM,EACjB,CAAC,QAASC,EAAK,CACjB,CAAC,EAEkC,IAAIJ,CAAW,IAAOK,GAAOA,EACpE,CC9BO,IAAMC,GAAU,UCqBhB,SAASC,GACdC,EACAC,EACQ,CACR,IAAMC,EAAWD,GAAY,CAAC,EACxBE,EAAgBC,GAAM,OAAOJ,EAASE,CAAQ,EAC9CG,EAAWC,GAAQ,eAAeJ,EAAU,SAAS,EAE3D,OAAOK,GACLD,GAAQ,eAAeJ,EAAU,YAAY,CAC/C,EAAEG,EAAWG,GAAQL,CAAa,EAAIA,EAAeD,CAAQ,CAC/D,CAMO,IAAMO,GAAkBA,GAUxB,SAASC,IAAmC,CACjD,OAAOJ,GAAQ,iBAAiB,CAClC,CAEA,IAAOK,GAAQ,CACb,OAAAZ,GACA,QAAAU,GACA,iBAAAC,EACF,ECvDA,IAAME,GAAY,OAAO,OAAO,CAC9B,eAAgB,QAChB,eAAgB,QAChB,oBAAqB,MACvB,CAAC,EAED,SAASC,GAAkBC,EAAW,CACpC,OAAIA,EAAU,GACL,QAAQ,QAAQA,CAAS,EAEzB,QAAQ,OAAO,IAAI,MAAMA,EAAU,UAAU,CAAC,CAEzD,CAEA,SAASC,GAAgBD,EAAW,CAClC,OAAOA,EAAU,KAAK,CACxB,CAEA,SAASE,GAAgBC,EAAS,CAChC,IAAMC,EAAaD,EAAQ,aAAa,KAAK,EAC7C,OAAIC,EACK,MAAMA,CAAU,EAAE,KAAKL,EAAiB,EAAE,KAAKE,EAAe,EAIhE,IAAI,QAAQ,CAACI,EAAUC,IAAY,CACpCH,EAAQ,aAAeA,EAAQ,YAAY,OAAS,EACtDE,EAASF,EAAQ,WAAW,EAE5BG,EAAQ,IAAI,MAAM,8CAA8C,CAAC,CAErE,CAAC,CACH,CAEA,SAASC,GAAUC,EAAS,CAC1B,IAAIC,EAAe,SAAS,cAAc,KAAK,EAC/C,OAAAA,EAAa,YAAcD,EACpBC,CACT,CAEA,SAASC,GAAgBF,EAAS,CAChC,IAAMC,EAAe,SAAS,cAAc,MAAM,EAClD,OAAAA,EAAa,aAAa,QAAS,WAAW,EAC9CA,EAAa,YAAcD,EACpBC,CACT,CAEA,SAASE,GAAgBC,EAASC,EAAU,CAC1C,IAAIC,EAAkBC,GAAM,OAAOH,EAASC,CAAQ,EAEpD,OAAQA,EAAS,WAAY,CAC3B,IAAK,OACL,IAAK,SACH,OAAON,GAAU,KAAK,UAAUO,EAAiB,KAAM,IAAI,CAAC,EAE9D,IAAK,MACH,OAAO,IAAI,UAAU,EAAE,gBAAgBA,EAAiB,eAAe,EACpE,gBAEL,QACE,OAAOP,GAAUO,CAAe,CAEpC,CACF,CACA,SAASE,GAAaC,EAAgB,CAC/BA,EAAe,QAAQ,aAC1BA,EAAe,QAAQ,WAAa,oBACpCf,GAAgBe,CAAc,EAC3B,KAAMC,GAAS,CACdD,EAAe,MACbN,GAAgBO,EAAM,CACpB,UAAWpB,GAAUmB,EAAe,IAAI,EACxC,WACEA,EAAe,aAAa,kBAAkB,GAAK,MACrD,UAAWA,EAAe,QAAQ,WAAa,WAC/C,OAAQA,EAAe,QAAQ,QAAU,MACzC,QAASA,EAAe,QAAQ,SAAW,GAC3C,cAAe,CAAC,CAAE,KAAM,UAAW,MAAO,aAAc,CAAC,CAC3D,CAAC,CACH,CACF,CAAC,EACA,MAAOE,GAAS,CACfF,EAAe,MACbP,GACE,oBACEO,EAAe,IACX,IAAIA,EAAe,GAAG,IACrBA,EAAe,aAAe,yBAC/B,mBACN,GAAGE,EAAO,KAAKA,CAAI,GAAK,EAAE,EAC5B,CACF,CACF,CAAC,EAEP,CAEA,SAASC,GAAiBC,EAAUC,EAAY,CAC9CD,EAAS,QAASE,GAAW,CAC3B,GAAIA,EAAO,eAAgB,CACzB,IAAMC,EAAiBD,EAAO,OAAO,uBACjCC,EAAe,UAAY,UAC7BR,GAAaQ,CAAc,CAE/B,CACF,CAAC,CACH,CAEA,IAAIC,GAAW,IAAI,qBAAqBL,GAAkB,CAAE,UAAW,CAAE,CAAC,EAEpEM,GAAkB,CAAC,GAAG,SAAS,OAAO,EAAE,OAC3CvB,GAAY,CAAC,CAACL,GAAUK,EAAQ,IAAI,CACvC,EAEAuB,GAAgB,QAAST,GAAmB,CAI1C,IAAMU,EAAgB,SAAS,cAAc,cAAc,EAC3DV,EAAe,MAAMU,CAAa,EAElCF,GAAS,QAAQE,CAAa,CAChC,CAAC,EAKD,OAAO,iBAAiB,cAAgBC,GAAY,CAClDF,GAAgB,QAAQV,EAAY,CACtC,CAAC", "names": ["_CodeOrName", "exports", "Name", "s", "_Code", "code", "item", "_a", "c", "names", "_", "strs", "args", "i", "addCodeArg", "plus", "str", "expr", "safeStringify", "optimize", "arg", "interpolate", "res", "mergeExprItems", "a", "b", "strConcat", "c1", "c2", "x", "stringify", "getProperty", "key", "getEsmExportName", "regexpCode", "rx", "code_1", "ValueError", "name", "UsedValueState", "exports", "Scope", "prefixes", "parent", "nameOrPrefix", "prefix", "ng", "_b", "_a", "ValueScopeName", "nameStr", "value", "property", "itemIndex", "line", "ValueScope", "opts", "valueKey", "vs", "_name", "s", "keyOrRef", "scopeName", "values", "usedValues", "getCode", "valueCode", "code", "nameSet", "c", "def", "code_1", "scope_1", "code_2", "exports", "scope_2", "Node", "_names", "_constants", "Def", "varKind", "name", "rhs", "es5", "_n", "names", "constants", "optimizeExpr", "Assign", "lhs", "sideEffects", "addExprNames", "AssignOp", "op", "Label", "label", "Break", "Throw", "error", "AnyCode", "code", "ParentNode", "nodes", "opts", "i", "n", "subtractNames", "addNames", "BlockNode", "Root", "Else", "If", "_If", "condition", "cond", "e", "ns", "not", "_a", "For", "ForLoop", "iteration", "ForRange", "from", "to", "ForIter", "loop", "iterable", "Func", "args", "async", "Return", "Try", "_b", "Catch", "Finally", "CodeGen", "extScope", "prefix", "prefixOrName", "value", "keyOrRef", "scopeName", "nameOrPrefix", "constant", "_constant", "c", "keyValues", "key", "thenBody", "elseBody", "node", "forBody", "arr", "obj", "tryBody", "catchCode", "finallyCode", "body", "nodeCount", "len", "toClose", "funcBody", "N1", "N2", "expr", "replaceName", "canOptimize", "items", "x", "par", "andCode", "mappend", "and", "orCode", "or", "y", "codegen_1", "code_1", "toHash", "arr", "hash", "item", "exports", "alwaysValidSchema", "it", "schema", "checkUnknownRules", "schemaHasRules", "opts", "self", "rules", "key", "checkStrictMode", "schemaHasRulesButRef", "RULES", "schemaRefOrVal", "topSchemaRef", "schemaPath", "keyword", "$data", "unescapeFragment", "str", "unescapeJsonPointer", "escapeFragment", "escapeJsonPointer", "eachItem", "xs", "f", "x", "makeMergeEvaluated", "mergeNames", "mergeToName", "mergeValues", "resultToName", "gen", "from", "to", "toName", "res", "setEvaluated", "evaluatedPropsToName", "items", "ps", "props", "p", "snippets", "useFunc", "Type", "getErrorPath", "dataProp", "dataPropType", "jsPropertySyntax", "isNumber", "msg", "mode", "codegen_1", "names", "exports", "codegen_1", "util_1", "names_1", "exports", "keyword", "schemaType", "reportError", "cxt", "error", "errorPaths", "overrideAllErrors", "it", "gen", "compositeRule", "allErrors", "errObj", "errorObjectCode", "addError", "returnErrors", "reportExtraError", "resetErrorsCount", "errsCount", "extendErrors", "schemaValue", "data", "err", "i", "errs", "validateName", "schemaEnv", "E", "createErrors", "errorObject", "keyValues", "errorInstancePath", "errorSchemaPath", "extraErrorProps", "errorPath", "instancePath", "instPath", "errSchemaPath", "schemaPath", "parentSchema", "schPath", "params", "message", "opts", "propertyName", "topSchemaRef", "errors_1", "codegen_1", "names_1", "boolError", "topBoolOrEmptySchema", "it", "gen", "schema", "validateName", "falseSchemaError", "exports", "boolOrEmptySchema", "valid", "overrideAllErrors", "data", "cxt", "_jsonTypes", "jsonTypes", "isJSONType", "x", "exports", "getRules", "groups", "schemaHasRulesForType", "schema", "self", "type", "group", "shouldUseGroup", "exports", "rule", "shouldUseRule", "_a", "kwd", "rules_1", "applicability_1", "errors_1", "codegen_1", "util_1", "DataType", "exports", "getSchemaTypes", "schema", "types", "getJSONTypes", "ts", "coerceAndCheckDataType", "it", "gen", "data", "opts", "coerceTo", "coerceToTypes", "checkTypes", "wrongType", "checkDataTypes", "coerceData", "reportTypeError", "COERCIBLE", "coerceTypes", "t", "dataType", "coerced", "coerceSpecificType", "assignParentData", "parentData", "parentDataProperty", "expr", "checkDataType", "strictNums", "correct", "EQ", "cond", "numCond", "_cond", "dataTypes", "notObj", "typeError", "schemaValue", "cxt", "getTypeErrorContext", "schemaCode", "codegen_1", "util_1", "assignDefaults", "it", "ty", "properties", "items", "key", "assignDefault", "sch", "exports", "prop", "defaultValue", "gen", "compositeRule", "data", "opts", "childData", "condition", "codegen_1", "util_1", "names_1", "util_2", "checkReportMissingProp", "cxt", "prop", "gen", "data", "it", "noPropertyInData", "exports", "checkMissingProp", "opts", "properties", "missing", "reportMissingProp", "hasPropFunc", "isOwnProperty", "property", "propertyInData", "ownProperties", "cond", "allSchemaProperties", "schemaMap", "p", "schemaProperties", "callValidateCode", "schemaCode", "topSchemaRef", "schemaPath", "errorPath", "func", "context", "passSchema", "dataAndSchema", "valCxt", "args", "newRegExp", "usePattern", "pattern", "u", "regExp", "rx", "validateArray", "keyword", "valid", "validArr", "validateItems", "notValid", "len", "i", "validateUnion", "schema", "sch", "schValid", "_sch", "schCxt", "codegen_1", "names_1", "code_1", "errors_1", "macroKeywordCode", "cxt", "def", "gen", "keyword", "schema", "parentSchema", "it", "macroSchema", "schemaRef", "useKeyword", "valid", "exports", "funcKeywordCode", "$data", "checkAsyncKeyword", "validate", "validateRef", "validateKeyword", "_a", "assignValid", "modifyData", "reportErrs", "ruleErrs", "validateAsync", "validateSync", "addErrs", "e", "validateErrs", "_await", "passCxt", "passSchema", "errors", "data", "errs", "schemaEnv", "result", "validSchemaType", "schemaType", "allowUndefined", "st", "validateKeywordUsage", "opts", "self", "errSchemaPath", "deps", "kwd", "msg", "codegen_1", "util_1", "getSubschema", "it", "keyword", "schemaProp", "schema", "schemaPath", "errSchemaPath", "topSchemaRef", "sch", "exports", "extendSubschemaData", "subschema", "dataProp", "dpType", "data", "dataTypes", "propertyName", "gen", "errorPath", "dataPathArr", "opts", "nextData", "dataContextProps", "_nextData", "extendSubschemaMode", "jtdDiscriminator", "jtdMetadata", "compositeRule", "createErrors", "allErrors", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "equal", "a", "b", "length", "i", "keys", "key", "require_json_schema_traverse", "__commonJSMin", "exports", "module", "traverse", "schema", "opts", "cb", "pre", "post", "_traverse", "jsonPtr", "rootSchema", "parentJsonPtr", "parentKeyword", "parentSchema", "keyIndex", "key", "sch", "i", "prop", "escapeJsonPtr", "str", "util_1", "equal", "traverse", "SIMPLE_INLINED", "inlineRef", "schema", "limit", "hasRef", "countKeys", "exports", "REF_KEYWORDS", "key", "sch", "count", "getFullPath", "resolver", "id", "normalize", "normalizeId", "p", "_getFullPath", "TRAILING_SLASH_HASH", "resolveUrl", "baseId", "ANCHOR", "getSchemaRefs", "schemaId", "uriResolver", "schId", "baseIds", "pathPrefix", "localRefs", "schemaRefs", "jsonPtr", "parentJsonPtr", "fullPath", "innerBaseId", "addRef", "addAnchor", "ref", "_resolve", "ambiguos", "schOrRef", "checkAmbiguosRef", "anchor", "sch1", "sch2", "boolSchema_1", "dataType_1", "applicability_1", "dataType_2", "defaults_1", "keyword_1", "subschema_1", "codegen_1", "names_1", "resolve_1", "util_1", "errors_1", "validateFunctionCode", "it", "isSchemaObj", "checkKeywords", "schemaCxtHasRules", "topSchemaObjCode", "validateFunction", "exports", "gen", "validateName", "schema", "schemaEnv", "opts", "body", "funcSourceUrl", "destructureValCxtES5", "destructureValCxt", "commentKeyword", "checkNoDefault", "resetEvaluated", "typeAndKeywords", "returnResults", "schId", "subschemaCode", "valid", "subSchemaObjCode", "self", "key", "updateContext", "checkAsyncSchema", "errsCount", "checkRefsAndKeywords", "schemaKeywords", "types", "checkedTypes", "errSchemaPath", "msg", "schemaPath", "rootName", "ValidationError", "assignEvaluated", "evaluated", "props", "items", "typeErrors", "data", "allErrors", "RULES", "keywordCode", "checkStrictTypes", "group", "groupKeywords", "iterateKeywords", "useDefaults", "rule", "checkContextTypes", "checkMultipleTypes", "checkKeywordTypes", "t", "includesType", "strictTypesError", "narrowSchemaTypes", "ts", "rules", "keyword", "type", "hasApplicableType", "schTs", "kwdT", "withTypes", "KeywordCxt", "def", "getData", "condition", "successAction", "failAction", "schemaCode", "append", "errorParams", "errorPaths", "cond", "obj", "assign", "codeBlock", "$dataValid", "schemaType", "wrong$DataType", "invalid$DataSchema", "st", "validateSchemaRef", "appl", "subschema", "nextContext", "schemaCxt", "toName", "ruleType", "cxt", "JSON_POINTER", "RELATIVE_JSON_POINTER", "$data", "dataLevel", "dataNames", "dataPathArr", "jsonPointer", "matches", "up", "errorMsg", "expr", "segments", "segment", "pointerType", "ValidationError", "errors", "exports", "resolve_1", "MissingRefError", "resolver", "baseId", "ref", "msg", "exports", "codegen_1", "validation_error_1", "names_1", "resolve_1", "util_1", "validate_1", "SchemaEnv", "env", "schema", "_a", "exports", "compileSchema", "sch", "_sch", "getCompilingSchema", "rootId", "es5", "lines", "ownProperties", "gen", "_ValidationError", "validateName", "schemaCxt", "sourceCode", "validateCode", "validate", "props", "items", "e", "resolveRef", "root", "baseId", "ref", "schOrFunc", "resolve", "schemaId", "inlineOrCompile", "schEnv", "sameSchemaEnv", "s1", "s2", "resolveSchema", "p", "refPath", "getJsonPointer", "id", "schOrRef", "schId", "PREVENT_SCOPE_CHANGE", "parsedRef", "part", "partSchema", "$ref", "require_data", "__commonJSMin", "exports", "module", "require_scopedChars", "__commonJSMin", "exports", "module", "HEX", "require_utils", "__commonJSMin", "exports", "module", "HEX", "normalizeIPv4", "host", "findToken", "matches", "address", "stripLeadingZeros", "stringArrayToHexStripped", "input", "keepZero", "acc", "strip", "c", "getIPV6", "tokenCount", "output", "buffer", "isZone", "endipv6Encountered", "endIpv6", "consume", "hex", "i", "cursor", "normalizeIPv6", "opts", "ipv6", "newHost", "escapedHost", "str", "token", "out", "skip", "l", "ind", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "normalizeComponentEncoding", "components", "esc", "func", "recomposeAuthority", "options", "uriTokens", "ipV4res", "ipV6res", "require_schemes", "__commonJSMin", "exports", "module", "UUID_REG", "URN_REG", "isSecure", "wsComponents", "httpParse", "components", "httpSerialize", "secure", "wsParse", "wsSerialize", "path", "query", "urnParse", "urnComponents", "options", "matches", "scheme", "urnScheme", "schemeHandler", "SCHEMES", "urnSerialize", "nid", "uriComponents", "nss", "urnuuidParse", "uuidComponents", "urnuuidSerialize", "http", "https", "ws", "wss", "urn", "urnuuid", "require_fast_uri", "__commonJSMin", "exports", "module", "normalizeIPv6", "normalizeIPv4", "removeDotSegments", "recomposeAuthority", "normalizeComponentEncoding", "SCHEMES", "normalize", "uri", "options", "serialize", "parse", "resolve", "baseURI", "relativeURI", "schemelessOptions", "resolved", "resolveComponents", "base", "relative", "skipNormalization", "target", "equal", "uriA", "uriB", "cmpts", "opts", "components", "uriTokens", "schemeHandler", "authority", "s", "hexLookUp", "v", "k", "nonSimpleDomain", "value", "code", "i", "len", "URI_PARSE", "parsed", "gotEncoding", "isIP", "matches", "ipv4result", "ipv6result", "e", "fastUri", "uri", "exports", "validate_1", "exports", "codegen_1", "validation_error_1", "ref_error_1", "rules_1", "compile_1", "codegen_2", "resolve_1", "dataType_1", "util_1", "$dataRefSchema", "uri_1", "defaultRegExp", "str", "flags", "META_IGNORE_OPTIONS", "EXT_SCOPE_NAMES", "removedOptions", "deprecatedOptions", "MAX_EXPRESSION", "requiredOptions", "o", "s", "_optz", "_a", "optimize", "regExp", "_c", "_b", "uriResolver", "_d", "_f", "_e", "_h", "_g", "_k", "_j", "_m", "_l", "_p", "_o", "_q", "_r", "_s", "_t", "_u", "_v", "_w", "_x", "_y", "_z", "_0", "Ajv", "opts", "es5", "lines", "getLogger", "formatOpt", "checkOptions", "getMetaSchemaOptions", "addInitialFormats", "addInitialKeywords", "addInitialSchemas", "$data", "meta", "schemaId", "_dataRefSchema", "schemaKeyRef", "data", "v", "valid", "schema", "_meta", "sch", "loadSchema", "runCompileAsync", "_schema", "loadMetaSchema", "_compileAsync", "$ref", "e", "checkLoaded", "loadMissingSchema", "ref", "missingRef", "_loadSchema", "p", "key", "_validateSchema", "id", "throwOrLogError", "$schema", "message", "keyRef", "getSchEnv", "root", "cacheKey", "definitions", "def", "kwdOrDef", "keyword", "checkKeyword", "kwd", "addRule", "keywordMetaschema", "definition", "k", "t", "rule", "RULES", "group", "i", "name", "format", "errors", "separator", "dataVar", "text", "msg", "metaSchema", "keywordsJsonPointers", "rules", "jsonPointer", "segments", "keywords", "seg", "schemaOrData", "schemas", "regex", "baseId", "validateSchema", "addSchema", "localRefs", "currentOpts", "checkOpts", "options", "log", "opt", "optsSchemas", "defs", "metaOpts", "noLogs", "logger", "KEYWORD_NAME", "dataType", "post", "ruleGroup", "addBeforeRule", "before", "_rule", "$dataRef", "def", "exports", "ref_error_1", "code_1", "codegen_1", "names_1", "compile_1", "util_1", "def", "cxt", "gen", "$ref", "it", "baseId", "env", "validateName", "opts", "self", "root", "callRootRef", "schOrEnv", "callValidate", "inlineRefSchema", "callRef", "rootName", "sch", "v", "getValidate", "schName", "valid", "schCxt", "exports", "$async", "allErrors", "passCxt", "callAsyncRef", "callSyncRef", "addEvaluatedFrom", "e", "addErrorsFrom", "source", "errs", "schEvaluated", "_a", "props", "items", "id_1", "ref_1", "core", "exports", "codegen_1", "ops", "KWDs", "error", "keyword", "schemaCode", "def", "cxt", "data", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "gen", "data", "it", "prec", "res", "invalid", "exports", "ucs2length", "str", "len", "length", "pos", "value", "exports", "codegen_1", "util_1", "ucs2length_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "it", "op", "len", "exports", "code_1", "codegen_1", "error", "schemaCode", "def", "cxt", "data", "$data", "schema", "it", "u", "regExp", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "code_1", "codegen_1", "util_1", "error", "missingProperty", "def", "cxt", "gen", "schema", "schemaCode", "data", "$data", "it", "opts", "useLoop", "allErrorsMode", "exitOnErrorMode", "props", "definedProperties", "requiredKey", "schemaPath", "msg", "loopAllRequired", "prop", "missing", "valid", "loopUntilMissing", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "def", "cxt", "data", "op", "exports", "equal", "exports", "dataType_1", "codegen_1", "util_1", "equal_1", "error", "i", "j", "def", "cxt", "gen", "data", "$data", "schema", "parentSchema", "schemaCode", "it", "valid", "itemTypes", "validateUniqueItems", "canOptimize", "loopN", "loopN2", "t", "item", "wrongType", "indices", "eql", "outer", "exports", "codegen_1", "util_1", "equal_1", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "exports", "codegen_1", "util_1", "equal_1", "error", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "it", "useLoop", "eql", "getEql", "valid", "loopEnum", "vSchema", "_x", "i", "equalCode", "v", "sch", "exports", "limitNumber_1", "multipleOf_1", "limitLength_1", "pattern_1", "limitProperties_1", "required_1", "limitItems_1", "uniqueItems_1", "const_1", "enum_1", "validation", "exports", "codegen_1", "util_1", "error", "len", "def", "cxt", "parentSchema", "it", "items", "validateAdditionalItems", "gen", "schema", "data", "keyword", "valid", "validateItems", "i", "exports", "codegen_1", "util_1", "code_1", "def", "cxt", "schema", "it", "validateTuple", "extraItems", "schArr", "gen", "parentSchema", "data", "keyword", "checkStrictTuple", "valid", "len", "sch", "i", "opts", "errSchemaPath", "l", "fullTuple", "msg", "exports", "items_1", "def", "cxt", "exports", "codegen_1", "util_1", "code_1", "additionalItems_1", "error", "len", "def", "cxt", "schema", "parentSchema", "it", "prefixItems", "exports", "codegen_1", "util_1", "error", "min", "max", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "minContains", "maxContains", "len", "cond", "valid", "validateItems", "validateItemsWithCount", "schValid", "count", "checkLimits", "_valid", "block", "i", "exports", "codegen_1", "util_1", "code_1", "exports", "property", "depsCount", "deps", "property_ies", "missingProperty", "def", "cxt", "propDeps", "schDeps", "splitDependencies", "validatePropertyDeps", "validateSchemaDeps", "schema", "propertyDeps", "schemaDeps", "key", "gen", "data", "it", "missing", "prop", "hasProperty", "depProp", "keyword", "valid", "schCxt", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "data", "it", "valid", "key", "exports", "code_1", "codegen_1", "names_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "parentSchema", "data", "errsCount", "it", "allErrors", "opts", "props", "patProps", "checkAdditionalProperties", "key", "additionalPropertyCode", "isAdditional", "definedProp", "propsSchema", "p", "deleteAdditional", "valid", "applyAdditionalSchema", "errors", "subschema", "exports", "validate_1", "code_1", "util_1", "additionalProperties_1", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "allProps", "prop", "properties", "p", "valid", "hasDefault", "applyPropertySchema", "exports", "code_1", "codegen_1", "util_1", "util_2", "def", "cxt", "gen", "schema", "data", "parentSchema", "it", "opts", "patterns", "alwaysValidPatterns", "p", "checkProperties", "valid", "props", "validatePatternProperties", "pat", "checkMatchingProperties", "validateProperties", "prop", "key", "alwaysValid", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "exports", "code_1", "def", "exports", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "schema", "parentSchema", "it", "schArr", "valid", "passing", "schValid", "validateOneOf", "sch", "i", "schCxt", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "sch", "i", "schCxt", "exports", "codegen_1", "util_1", "error", "params", "def", "cxt", "gen", "parentSchema", "it", "hasThen", "hasSchema", "hasElse", "valid", "schValid", "validateIf", "ifClause", "validateClause", "schCxt", "keyword", "schema", "exports", "util_1", "def", "keyword", "parentSchema", "it", "exports", "additionalItems_1", "prefixItems_1", "items_1", "items2020_1", "contains_1", "dependencies_1", "propertyNames_1", "additionalProperties_1", "properties_1", "patternProperties_1", "not_1", "anyOf_1", "oneOf_1", "allOf_1", "if_1", "thenElse_1", "getApplicator", "draft2020", "applicator", "exports", "codegen_1", "error", "schemaCode", "def", "cxt", "ruleType", "gen", "data", "$data", "schema", "it", "opts", "errSchemaPath", "schemaEnv", "self", "validate$DataFormat", "validateFormat", "fmts", "fDef", "fType", "format", "unknownFmt", "invalidFmt", "callFormat", "validData", "formatDef", "unknownFormat", "fmtType", "fmtRef", "getFormat", "validCondition", "unknownMsg", "fmtDef", "code", "fmt", "exports", "format_1", "format", "exports", "exports", "core_1", "validation_1", "applicator_1", "format_1", "metadata_1", "draft7Vocabularies", "exports", "DiscrError", "exports", "codegen_1", "types_1", "compile_1", "ref_error_1", "util_1", "error", "discrError", "tagName", "tag", "def", "cxt", "gen", "data", "schema", "parentSchema", "it", "oneOf", "valid", "validateMapping", "mapping", "getMapping", "tagValue", "applyTagSchema", "schemaProp", "_valid", "schCxt", "oneOfMapping", "topRequired", "hasRequired", "tagRequired", "i", "sch", "ref", "propSch", "_a", "addMappings", "required", "addMapping", "exports", "require_json_schema_draft_07", "__commonJSMin", "exports", "module", "core_1", "draft7_1", "discriminator_1", "draft7MetaSchema", "META_SUPPORT_DATA", "META_SCHEMA_ID", "Ajv", "v", "metaSchema", "exports", "module", "validate_1", "codegen_1", "validation_error_1", "ref_error_1", "require_util", "__commonJSMin", "exports", "nameStartChar", "nameChar", "nameRegexp", "regexName", "getAllMatches", "string", "regex", "matches", "match", "allmatches", "len", "index", "isName", "v", "obj", "target", "a", "arrayMode", "keys", "require_validator", "__commonJSMin", "exports", "util", "defaultOptions", "xmlData", "options", "tags", "tagFound", "reachedRoot", "readPI", "tagStartPos", "readCommentAndCDATA", "closingTag", "tagName", "validateTagName", "msg", "getErrorObject", "getLineNumberForPosition", "result", "readAttributeStr", "attrStr", "attrStrStart", "isValid", "validateAttributeString", "otg", "openPos", "afterAmp", "validateAmpersand", "isWhiteSpace", "t", "char", "i", "start", "tagname", "angleBracketsCount", "doubleQuote", "singleQuote", "startChar", "tagClosed", "validAttrStrRegxp", "matches", "attrNames", "getPositionFromMatch", "attrName", "validateAttrName", "validateNumberAmpersand", "re", "count", "code", "message", "lineNumber", "index", "lines", "match", "require_OptionsBuilder", "__commonJSMin", "exports", "defaultOptions", "tagName", "val", "attrName", "jPath", "attrs", "buildOptions", "options", "require_xmlNode", "__commonJSMin", "exports", "module", "XmlNode", "tagname", "key", "val", "node", "require_DocTypeReader", "__commonJSMin", "exports", "module", "util", "readDocType", "xmlData", "i", "entities", "angleBracketsCount", "hasBody", "comment", "exp", "isEntity", "entityName", "val", "readEntityExp", "validateEntityName", "isElement", "isAttlist", "isNotation", "isComment", "startChar", "name", "require_strnum", "__commonJSMin", "exports", "module", "hexRegex", "numRegex", "consider", "toNumber", "str", "options", "trimmedStr", "match", "sign", "leadingZeros", "numTrimmedByZeros", "trimZeros", "eNotation", "num", "numStr", "require_ignoreAttributes", "__commonJSMin", "exports", "module", "getIgnoreAttributesFn", "ignoreAttributes", "attrName", "pattern", "require_OrderedObjParser", "__commonJSMin", "exports", "module", "util", "xmlNode", "readDocType", "toNumber", "getIgnoreAttributesFn", "OrderedObjParser", "options", "_", "str", "addExternalEntities", "parseXml", "parseTextData", "resolveNameSpace", "buildAttributesMap", "isItStopNode", "replaceEntitiesValue", "readStopNodeData", "saveTextToParentTag", "addChild", "externalEntities", "entKeys", "i", "ent", "val", "tagName", "jPath", "dontTrim", "hasAttributes", "isLeafNode", "escapeEntities", "newval", "parseValue", "tagname", "tags", "prefix", "attrsRegx", "attrStr", "matches", "len", "attrs", "attrName", "oldVal", "aName", "newVal", "attrCollection", "xmlData", "xmlObj", "currentNode", "textData", "closeIndex", "findClosingIndex", "colonIndex", "lastTagName", "propIndex", "tagData", "readTagExp", "childNode", "endIndex", "comment", "result", "tagExp", "rawTagName", "attrExpPresent", "lastTag", "tagContent", "entityName", "entity", "stopNodes", "currentTagName", "allNodesExp", "stopNodePath", "stopNodeExp", "tagExpWithClosingIndex", "closingChar", "attrBoundary", "index", "ch", "errMsg", "closingIndex", "removeNSPrefix", "separatorIndex", "startIndex", "openTagCount", "shouldParse", "require_node2json", "__commonJSMin", "exports", "prettify", "node", "options", "compress", "arr", "jPath", "text", "compressedObj", "tagObj", "property", "propName", "newJpath", "val", "isLeaf", "isLeafTag", "assignAttributes", "obj", "keys", "i", "key", "attrMap", "jpath", "len", "atrrName", "textNodeName", "propCount", "require_XMLParser", "__commonJSMin", "exports", "module", "buildOptions", "OrderedObjParser", "prettify", "validator", "XMLParser", "options", "xmlData", "validationOption", "result", "orderedObjParser", "orderedResult", "key", "value", "require_orderedJs2Xml", "__commonJSMin", "exports", "module", "EOL", "toXml", "jArray", "options", "indentation", "arrToStr", "arr", "jPath", "xmlStr", "isPreviousElementTag", "i", "tagObj", "tagName", "propName", "newJPath", "tagText", "isStopNode", "replaceEntitiesValue", "attStr", "attr_to_str", "tempInd", "piTextNodeName", "newIdentation", "tagStart", "tagValue", "obj", "keys", "key", "attrMap", "attrStr", "attr", "attrVal", "index", "textValue", "entity", "require_json2xml", "__commonJSMin", "exports", "module", "buildFromOrderedJs", "getIgnoreAttributesFn", "defaultOptions", "key", "a", "attrName", "Builder", "options", "isAttribute", "processTextOrObjNode", "indentate", "jObj", "level", "ajPath", "attrStr", "val", "jPath", "attr", "newval", "arrLen", "listTagVal", "listTagAttr", "j", "item", "result", "textValue", "Ks", "L", "object", "tagEndExp", "piClosingChar", "closeTag", "i", "entity", "name", "require_fxp", "__commonJSMin", "exports", "module", "validator", "XMLParser", "XMLBuilder", "require_he", "__commonJSMin", "exports", "module", "root", "freeExports", "freeModule", "freeGlobal", "regexAstralSymbols", "regexAsciiWhitelist", "regexBmpWhitelist", "regexEncodeNonAscii", "encodeMap", "regexEscape", "escapeMap", "regexInvalidEntity", "regexInvalidRawCodePoint", "regexDecode", "decodeMap", "decodeMapLegacy", "decodeMapNumeric", "invalidReferenceCodePoints", "stringFromCharCode", "object", "hasOwnProperty", "has", "propertyName", "contains", "array", "value", "index", "length", "merge", "options", "defaults", "result", "key", "codePointToSymbol", "codePoint", "strict", "output", "parseError", "hexEscape", "decEscape", "message", "encode", "string", "encodeEverything", "useNamedReferences", "allowUnsafeSymbols", "escapeCodePoint", "escapeBmpSymbol", "symbol", "$0", "high", "low", "decode", "html", "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "semicolon", "decDigits", "hexDigits", "reference", "next", "escape", "he", "ALLOWED_VALUES", "getOptionValue", "pOptions", "pOptionName", "getAllowedValues", "options_default", "import_ajv", "Counter", "#lHWM", "pStart", "flattenStatesToMap", "pStates", "pMap", "pParent", "pState", "flattenTransitions", "pStateMachine", "lTransitions", "StateMachineModel", "#flattenedTransitions", "#flattenedStates", "pName", "pTypes", "pStateName", "pTransition", "pFromStateName", "pToStateName", "id", "pExcludeIds", "TRIGGER_RE_AS_A_STRING", "TRIGGER_RE", "stateExists", "pKnownStateNames", "pName", "RE2STATE_TYPE", "matches", "pEntry", "getStateType", "initState", "isComposite", "pState", "getAlreadyDeclaredStates", "pStateMachine", "lStates", "pAllStateNames", "pThisState", "name", "extractUndeclaredStates", "lTransitions", "pTransition", "classifyForkJoin", "pInComingCount", "pOutGoingCount", "lReturnValue", "classifyForkJoins", "pFlattenedStateMachineModel", "StateMachineModel", "lInComingCount", "lOutGoingCount", "stateEqual", "pStateOne", "pStateTwo", "uniq", "pArray", "pEqualFunction", "pBag", "pMarble", "lMarbleIndex", "pBagItem", "parseTransitionExpression", "pString", "lTransitionExpressionRe", "lMatchResult", "lEventPos", "lConditionPos", "lActionPos", "setIf", "pObject", "pProperty", "pValue", "pCondition", "setIfNotEmpty", "pX", "extractAction", "pActivityCandidate", "lMatch", "lTypePos", "lBodyPos", "extractActions", "parser_helpers_default", "peg$subclass", "child", "parent", "C", "peg$SyntaxError", "message", "expected", "found", "location", "self", "peg$padEnd", "str", "targetLength", "padString", "sources", "src", "k", "s", "offset_s", "loc", "e", "filler", "line", "last", "hatLen", "DESCRIBE_EXPECTATION_FNS", "expectation", "literalEscape", "escapedParts", "part", "classEscape", "hex", "ch", "describeExpectation", "describeExpected", "descriptions", "i", "j", "describeFound", "peg$parse", "input", "options", "peg$FAILED", "peg$source", "peg$startRuleFunctions", "peg$parseprogram", "peg$startRuleFunction", "peg$c0", "peg$c1", "peg$c2", "peg$c3", "peg$c4", "peg$c5", "peg$c6", "peg$c7", "peg$c8", "peg$c9", "peg$c10", "peg$c11", "peg$c12", "peg$c13", "peg$c14", "peg$c15", "peg$c16", "peg$c17", "peg$c18", "peg$c19", "peg$c20", "peg$c21", "peg$c22", "peg$c23", "peg$c24", "peg$c25", "peg$c26", "peg$c27", "peg$c28", "peg$c29", "peg$c30", "peg$c31", "peg$c32", "peg$c33", "peg$c34", "peg$c35", "peg$c36", "peg$c37", "peg$c38", "peg$c39", "peg$c40", "peg$c41", "peg$c42", "peg$c43", "peg$c44", "peg$c45", "peg$c46", "peg$r0", "peg$r1", "peg$r2", "peg$r3", "peg$r4", "peg$r5", "peg$r6", "peg$r7", "peg$e0", "peg$otherExpectation", "peg$e1", "peg$literalExpectation", "peg$e2", "peg$e3", "peg$e4", "peg$e5", "peg$e6", "peg$e7", "peg$e8", "peg$e9", "peg$e10", "peg$e11", "peg$e12", "peg$e13", "peg$e14", "peg$e15", "peg$e16", "peg$e17", "peg$e18", "peg$e19", "peg$e20", "peg$e21", "peg$e22", "peg$e23", "peg$e24", "peg$e25", "peg$e26", "peg$e27", "peg$e28", "peg$e29", "peg$e30", "peg$e31", "peg$e32", "peg$e33", "peg$e34", "peg$e35", "peg$e36", "peg$e37", "peg$e38", "peg$e39", "peg$e40", "peg$e41", "peg$e42", "peg$e43", "peg$e44", "peg$e45", "peg$e46", "peg$e47", "peg$e48", "peg$e49", "peg$e50", "peg$e51", "peg$e52", "peg$e53", "peg$e54", "peg$e55", "peg$e56", "peg$e57", "peg$e58", "peg$e59", "peg$e60", "peg$classExpectation", "peg$e61", "peg$e62", "peg$e63", "peg$e64", "peg$anyExpectation", "peg$e65", "peg$e66", "peg$e67", "peg$e68", "peg$e69", "peg$e70", "peg$e71", "peg$e72", "peg$e73", "peg$e74", "peg$e75", "peg$e76", "peg$e77", "peg$e78", "peg$e79", "peg$f0", "statemachine", "parser_helpers_default", "peg$f1", "states", "transitions", "lStateMachine", "peg$f2", "state", "peg$f3", "peg$f4", "peg$f5", "notes", "id", "attrs", "peg$f6", "extended_state_attributes", "act", "peg$f7", "actions", "sm", "peg$f8", "lState", "pExtendedAttribute", "peg$f9", "name", "value", "peg$f10", "peg$f11", "peg$f12", "peg$f13", "peg$f14", "peg$f15", "peg$f16", "peg$f17", "trans", "peg$f18", "extended_attributes", "lbl", "peg$f19", "label", "peg$f20", "from_", "to", "peg$f21", "peg$f22", "peg$f23", "peg$f24", "peg$f25", "peg$f26", "peg$f27", "peg$f28", "peg$f29", "com", "peg$f30", "digits", "peg$f31", "peg$f32", "peg$f33", "peg$f34", "peg$f35", "peg$f36", "peg$f37", "peg$f38", "peg$f39", "peg$f40", "chars", "peg$currPos", "peg$savedPos", "peg$posDetailsCache", "peg$maxFailPos", "peg$maxFailExpected", "peg$silentFails", "peg$result", "text", "offset", "range", "peg$computeLocation", "description", "peg$buildStructuredError", "error", "peg$buildSimpleError", "ignoreCase", "parts", "inverted", "peg$endExpectation", "peg$computePosDetails", "pos", "details", "p", "startPos", "endPos", "startPosDetails", "endPosDetails", "res", "peg$fail", "s0", "s1", "s2", "s3", "peg$parse_", "peg$parsestatemachine", "peg$parsestates", "peg$parsetransition", "s4", "s5", "peg$parsestate", "s6", "s7", "s8", "s9", "s10", "s11", "s12", "s13", "s14", "peg$parsenote", "peg$parseidentifier", "peg$parseextended_state_attributes", "peg$parsestring", "peg$parseextended_state_attribute", "peg$parseextended_state_string_attribute_name", "peg$parsequotedstring", "peg$parseclass_attribute_name", "peg$parseclass_string", "peg$parseextended_state_boolean_attribute_name", "peg$parseextended_state_type_attribute_name", "peg$parseextended_state_type_attribute_type", "peg$parsetransitionbase", "peg$parseextended_transition_attributes", "peg$parsetransitionstring", "peg$parsefwdarrowtoken", "peg$parsebckarrowtoken", "peg$parseextended_transition_attribute", "peg$parseextended_transition_string_attribute_name", "peg$parseextended_transition_type_name", "peg$parseextended_transition_type_value", "peg$parseextended_transition_numeric_attribute_name", "peg$parsepositive_number", "peg$parseslcomtok", "peg$parsepositive_real", "peg$parsecardinal", "peg$parseunquotedtransitionstring", "peg$parseunquotedstring", "peg$parsestringcontent", "peg$parseclass_stringcontent", "peg$parsetransitionnonsep", "peg$parsenonsep", "peg$parsewhitespace", "peg$parselineend", "peg$parsemlcomstart", "peg$parsemlcomend", "peg$parsemlcomtok", "peg$parsemlcomment", "peg$parseslcomstart", "peg$parseslcomment", "peg$parsecomment", "parse", "pScript", "peg$parse", "Counter", "import_fast_xml_parser", "import_he", "to_string", "obj", "is_typed_array", "value", "is_date", "is_regexp", "is_error", "is_boolean", "is_number", "is_string", "is_array", "gopd", "is_property_enumerable", "get_own_property_symbols", "has_own_property", "own_enumerable_keys", "res", "symbols", "i", "is_writable", "object", "key", "copy", "src", "options", "dst", "iterator_function", "empty_null", "walk", "root", "cb", "path", "parents", "alive", "immutable", "walker", "node_", "node", "modifiers", "keep_going", "state", "x", "stopHere", "f", "update_state", "ret", "index", "child", "Traverse", "#value", "#options", "paths", "init", "skip", "acc", "nodes", "clone", "iteratorFunction", "traverse", "src_default", "formatLabel", "pEvent", "pCond", "pActions", "lReturnValue", "utl_default", "castArray", "pAThing", "normalizeInitialFromObject", "pInitialObject", "pId", "lReturnValue", "normalizeInitialFromString", "pString", "normalizeInitial", "pMachine", "normalizeMachine", "castArray", "formatLabel", "utl_default", "extractActions", "pState", "pActionType", "castArray", "pAction", "he", "extractActionsFromInvokes", "pInvokeTriggers", "pInvokeTrigger", "deriveActions", "lReturnValue", "deriveStateType", "pType", "mapState", "parser_helpers_default", "pKey", "mapMachine", "extractTransitionAttributesFromObject", "pTransition", "extractTransitionAttributes", "lLabel", "reduceTransition", "pCounter", "pAllTransitions", "lTargets", "lTransitionAttributes", "pTarget", "extractTransitions", "pStates", "pThisState", "lTransitionAsArray", "pSCXMLStateMachine", "lNormalizedMachine", "normalizeMachine", "lCounter", "Counter", "lTransitions", "deDuplicateAttributesAndTags", "pObject", "pAttributeNamePrefix", "src_default", "pUnPrefixedAttributeName", "parse", "pSCXMLString", "lTrimmedSCXMLString", "lAttributeNamePrefix", "lXMLAsJSON", "lXMLParser", "fastxml", "_pTagName", "pTagValue", "smcat_ast_schema_default", "ajv", "Ajv", "validateAgainstSchema", "pSchema", "pObject", "parse_default", "pScript", "pOptions", "lReturnValue", "options_default", "parse", "smcat_ast_schema_default", "fuseTransitionAttribute", "pIncomingThing", "pOutgoingThing", "pJoinChar", "fuseIncomingToOutgoing", "pIncomingTransition", "pOutgoingTransition", "pCounter", "lReturnValue", "utl_default", "fuseTransitions", "pTransitions", "pPseudoStateNames", "pOutgoingTransitionMap", "pAll", "pTransition", "pStateName", "pIndex", "deSugarPseudoStates", "pMachine", "lMachine", "pState", "removeStatesCascading", "pStateNames", "pJunctionStateName", "desugar_default", "pDesugarableStates", "lModel", "StateMachineModel", "lPseudoStateNames", "name", "lOutgoingTransitionMap", "lMaximumTransitionId", "Counter", "NAME_QUOTABLE", "ACTIONS_QUOTABLE", "LABEL_QUOTABLE", "RENDERABLE_STATE_ATTRIBUTES", "RENDERABLE_TRANSITION_ATTRIBUTES", "quoteIfNecessary", "pRegExp", "pString", "stateHasExtendedAttributes", "pState", "note", "pNote", "pIndent", "pNoteLine", "extendedAttribute", "pKey", "pValue", "extendedStateAttributes", "actions", "pActions", "pAction", "state", "lReturnValue", "renderSmcat", "states", "pStates", "transitionHasExtendedAttributes", "pTransition", "extendedTransitionAttributes", "transition", "transitions", "pTransitions", "pStateMachine", "_pOptions", "import_he", "GENERIC_GRAPH_ATTRIBUTES", "GRAPH_ATTRIBUTES", "DIRECTION_ATTRIBUTES", "NODE_ATTRIBUTES", "EDGE_ATTRIBUTES", "toNameValueString", "pAttribute", "buildGraphAttributes", "pEngine", "pDirection", "pDotGraphAttributes", "buildNodeAttributes", "pDotNodeAttributes", "buildEdgeAttributes", "pDotEdgeAttributes", "import_he", "getStateColor", "pState", "pNodeAttributes", "lNodeColor", "pAttribute", "escapeString", "pString", "escapeLabelString", "isVertical", "pDirection", "lDirection", "isCompositeSelf", "pStateMachineModel", "pTransition", "noteToLabel", "pNote", "stateNote", "pIndent", "lNoteName", "lReturnValue", "normalizeState", "pOptions", "he", "pChildState", "formatActionType", "getTransitionPorts", "pModel", "lTailPorts", "lHeadPorts", "getOptionValue", "initial", "pState", "pIndent", "lActiveAttribute", "regularStateActions", "pActions", "pAction", "he", "formatActionType", "pActionString", "pIndex", "lReturnValue", "compositeStateActions", "atomicRegular", "lCellPadding", "lActions", "lLabel", "lLabelTag", "compositeRegular", "pOptions", "pModel", "pRenderedTransitions", "lPenWidth", "lStyle", "pTransition", "states", "regular", "history", "deepHistory", "choiceActions", "pActive", "choice", "lDiamond", "lLabelConstruct", "forkjoin", "lDirection", "getOptionValue", "lSizingExtras", "isVertical", "junction", "lNote", "stateNote", "terminate", "final", "STATE_TYPE2FUNCTION", "state", "lState", "normalizeState", "lCandidateTransitions", "lTransitions", "transitions", "pStates", "transition", "escapeLabelString", "lColorAttribute", "lFontColorAttribute", "lClass", "lTail", "lHead", "lTransitionName", "isCompositeSelf", "lTailPorts", "lHeadPorts", "getTransitionPorts", "lNoteAndLine", "lNoteName", "lLineToNote", "noteToLabel", "lTransitionFrom", "lTransitionTo", "lNoteNodeName", "lNoteNode", "pTransitions", "renderDot", "pStateMachine", "lGraphAttributes", "buildGraphAttributes", "lNodeAttributes", "buildNodeAttributes", "lEdgeAttributes", "buildEdgeAttributes", "lModel", "StateMachineModel", "lRenderedTransitions", "lStates", "lRemainingTransitions", "un", "$", "$e", "cn", "Ve", "cr", "c", "_", "l", "s", "Ue", "fn", "_n", "V", "Hr", "d", "ln", "dn", "h", "p", "E", "G", "j", "q", "U", "H", "K", "J", "L", "Le", "He", "T", "te", "X", "W", "fe", "C", "m", "Q", "k", "ie", "B", "R", "ae", "ne", "Z", "I", "A", "vn", "hn", "pn", "yn", "Kr", "fr", "En", "_r", "mn", "je", "wn", "Bn", "Ie", "xe", "Oe", "Pe", "Qe", "Te", "me", "be", "we", "qe", "_e", "he", "pe", "Me", "Be", "Fe", "Je", "gn", "Qr", "Gn", "e", "r", "ke", "n", "Ge", "Ne", "dr", "Vr", "vr", "t", "o", "qr", "i", "a", "u", "Jr", "Jt", "Nr", "z", "O", "N", "kr", "se", "S", "Ar", "et", "hr", "rt", "tt", "nt", "pr", "ge", "F", "b", "Y", "f", "v", "yr", "Re", "Ae", "er", "rr", "tr", "ot", "it", "nr", "Er", "jr", "g", "at", "st", "ut", "ct", "ft", "x", "w", "M", "ee", "_t", "or", "le", "oe", "de", "ve", "ye", "Ye", "re", "Se", "P", "lt", "We", "De", "dt", "vt", "ht", "pt", "yt", "Ze", "Et", "mt", "wt", "Bt", "gt", "Gt", "Ft", "Lt", "ir", "It", "xt", "Ot", "ar", "bt", "Mt", "Rt", "Dt", "Yt", "Pt", "Tt", "sr", "Zt", "ze", "zt", "St", "jt", "Ut", "Ht", "Kt", "Qt", "Wt", "Ct", "Xt", "$t", "Vt", "qt", "Nt", "kt", "At", "en", "rn", "mr", "wr", "Br", "gr", "Gr", "Fr", "Lr", "Ir", "xr", "Or", "br", "Mr", "Rr", "Dr", "Yr", "Pr", "Tr", "Zr", "zr", "Sr", "Ce", "Ur", "ue", "Xe", "ur", "tn", "nn", "on", "an", "sn", "D", "ce", "Ee", "y", "Wr", "Fn", "Ln", "In", "Ke", "lr", "Cr", "Xr", "xn", "On", "bn", "$r", "OUTPUT_TYPE2FORMAT", "gGraphViz", "$r", "getFormat", "pOptions", "options_default", "getEngine", "renderVectorWithWasm", "pStateMachine", "renderDot", "vector_with_wasm_default", "NAME_CHAR_FORBIDDEN_RE", "START_NAME_CHAR_FORBIDDEN_EXTRA_RE", "makeValidNameChars", "pCandidateNameTail", "makeValidNameStartChar", "pCandidateChar", "lReturnValue", "make_valid_xml_name_default", "pCandidateName", "EVENT_CHAR_FORBIDDEN_RE", "START_EVENT_CHAR_FORBIDDEN_EXTRA_RE", "makeValidEventChar", "pCandidateEventStringTail", "makeValidEventStartChar", "pCandidateEventStringStart", "lReturnValue", "makeValidEventName", "pCandidateEventName", "make_valid_event_names_default", "pCandidateEventNames", "lCandidateEventNames", "STATE_TYPE2SCXML_STATE_KIND", "stateType2SCXMLStateKind", "pStateType", "transformTransition", "pTransition", "lReturnValue", "make_valid_xml_name_default", "make_valid_event_names_default", "extractTriggers", "pTriggers", "pTriggerType", "pTrigger", "pullOutActionType", "pReturnValue", "pTriggersType", "pActions", "pActionType", "lTriggerArray", "transformTriggers", "pState", "transformTransitions", "pTransitions", "lTransitions", "transformCompositeState", "lRenderedState", "render", "transformState", "findInitialPseudoStateName", "pStateMachine", "lInitial", "findInitialStateName", "pInitialPseudoStateName", "lInitialTransitions", "_pOptions", "lInitialPseudoStateName", "lInitialStateName", "StateMachineModel", "import_he", "INDENT_LENGTH", "indentString", "pString", "pCount", "lRegex", "renderTransitionAttributes", "pTransition", "lReturnValue", "he", "renderRegularTransition", "pDepth", "renderActionTransition", "renderTransition", "renderTransitions", "pTransitions", "renderSimpleTag", "pOnExit", "pTag", "renderOnEntries", "pOnEntries", "pOnEntry", "renderOnExits", "pOnExits", "renderStateAttributes", "pState", "renderState", "renderStates", "pStates", "renderInitialAttribute", "pInitialString", "renderSCXML", "pSCJSON", "renderSCXML", "pStateMachine", "render", "scxml_default", "smcat", "renderSmcat", "getRenderFunction", "pOutputType", "renderDot", "vector_with_wasm_default", "render", "scxml_default", "pX", "version", "render", "pScript", "pOptions", "lOptions", "lStateMachine", "parse_default", "lDesugar", "options_default", "getRenderFunction", "desugar_default", "version", "getAllowedValues", "src_default", "MIME2LANG", "getResponseStatus", "pResponse", "getResponseText", "getScriptSource", "pScript", "lSourceURL", "pResolve", "pReject", "renderPre", "pString", "lReturnValue", "renderCodeError", "renderInElement", "pSource", "pOptions", "lRenderedString", "src_default", "renderScript", "pScriptElement", "pSrc", "pErr", "observerCallback", "pEntries", "_pObserver", "pEntry", "lScriptElement", "OBSERVER", "SCRIPT_ELEMENTS", "lScriptMarker", "_pEvent"] } diff --git a/src/cli/actions.mts b/src/cli/actions.mts index 9533a16d..a27661e9 100644 --- a/src/cli/actions.mts +++ b/src/cli/actions.mts @@ -8,7 +8,7 @@ const LICENSE = ` The MIT License (MIT) -Copyright (c) 2016-2024 Sander Verweij +Copyright (c) 2016-2025 Sander Verweij Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/test/cli/cli.spec.mts b/test/cli/cli.spec.mts index af965756..569c5f36 100644 --- a/test/cli/cli.spec.mts +++ b/test/cli/cli.spec.mts @@ -27,7 +27,7 @@ describe("#cli - execute-command-line", () => { it("--license displays the license on stdout", async () => { const lOutStream = new WritableTestStream([ /The MIT License \(MIT\)/, - /Copyright \(c\) 2016-2024 Sander Verweij/, + /Copyright \(c\) 2016-2025 Sander Verweij/, ]); const lErrorStream = new WritableTestStream();