{"version":3,"file":"myassays-params-multiplex.iife.js","sources":["../../../src/myassays-global/Model.js","../../../src/myassays-global/PropTypes.js","../../../src/myassays-global/abstractClasses/MyassaysComponent.js","../../../node_modules/webidl-conversions/lib/index.js","../../../node_modules/jsdom/lib/jsdom/living/generated/utils.js","../../../node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js","../../../node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js","../../../node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js","../__vite-browser-external","../../../node_modules/whatwg-url/lib/utils.js","../../../node_modules/punycode/punycode.es6.js","../../../node_modules/tr46/lib/regexes.js","../../../node_modules/tr46/lib/statusMapping.js","../../../node_modules/tr46/index.js","../../../node_modules/whatwg-url/lib/infra.js","../../../node_modules/whatwg-url/lib/encoding.js","../../../node_modules/whatwg-url/lib/percent-encoding.js","../../../node_modules/whatwg-url/lib/url-state-machine.js","../../../node_modules/whatwg-url/lib/urlencoded.js","../../../node_modules/whatwg-url/lib/Function.js","../../../node_modules/whatwg-url/lib/URLSearchParams-impl.js","../../../node_modules/whatwg-url/lib/URLSearchParams.js","../../../node_modules/whatwg-url/lib/URL-impl.js","../../../node_modules/whatwg-url/lib/URL.js","../../../node_modules/whatwg-url/webidl2js-wrapper.js","../../../node_modules/whatwg-url/index.js","../../../node_modules/symbol-tree/lib/SymbolTreeNode.js","../../../node_modules/symbol-tree/lib/TreePosition.js","../../../node_modules/symbol-tree/lib/TreeIterator.js","../../../node_modules/symbol-tree/lib/SymbolTree.js","../../../node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js","../__vite-optional-peer-dep:canvas:jsdom","../../../node_modules/jsdom/lib/jsdom/utils.js","../../../src/myassays-global/Utils.js","../../../src/myassays-global/views/SeriesEditorView.js","../../../src/myassays-global/views/ParamsTableView.js","../MyassaysParamsMultiplex.js","../MyassaysParamsMultiplex.css?raw","../index.js"],"sourcesContent":["\nfunction cloneValue(value) {\n if (value instanceof Model) {\n return value.attributes;\n } else if (value instanceof Array) {\n return value.map(cloneValue);\n } else if (value instanceof Object) {\n const returnValue = {};\n Object.keys(value).forEach(key => {\n returnValue[key] = cloneValue(value[key]);\n });\n return returnValue;\n } else {\n return value;\n }\n}\n\nexport default class Model extends EventTarget {\n constructor(initialAttributes = {}) {\n super();\n this._previousAttributes = {};\n this._attributes = {...this.constructor.defaults, ...initialAttributes};\n }\n\n set(newAttributes, noTrigger = false) {\n this._previousAttributes = {...this._attributes};\n const previousAttributes = {...this._attributes};\n Object.keys(newAttributes).forEach(key => {\n const newAttribute = newAttributes[key];\n if (this._attributes[key] instanceof Model) {\n if (newAttribute instanceof Model) {\n this._attributes[key] = newAttribute;\n } else {\n this._attributes[key].set(newAttribute);\n }\n } else {\n this._attributes[key] = newAttribute;\n }\n });\n\n if (!noTrigger) {\n const evt = new Event('change');\n const attributes = this._attributes;\n evt.data = {\n attributes,\n previousAttributes,\n hasChanged: (attributeName, handler) => {\n const prevValue = previousAttributes[attributeName];\n const newValue = attributes[attributeName];\n const changed = newValue !== prevValue;\n changed && handler && handler(newValue, prevValue);\n return changed;\n },\n }\n this.dispatchEvent(evt);\n }\n noTrigger || Object.keys(this._attributes).forEach(key => {\n const previousValue = previousAttributes[key];\n const newValue = this._attributes[key];\n if (previousValue !== newValue) {\n const evt = new Event(`change:${key}`);\n evt.data = {\n previousValue: cloneValue(previousValue),\n newValue: cloneValue(newValue),\n }\n this.dispatchEvent(evt);\n }\n });\n }\n\n getExact(attributeName) {\n return this._attributes[attributeName];\n }\n\n get(attributeName) {\n const value = this._attributes[attributeName];\n if (value instanceof Model) {\n return value;\n } else {\n return cloneValue(value);\n }\n }\n\n reset() {\n this._previousAttributes = {};\n this._attributes = {...this.constructor.defaults};\n }\n\n hasChanged(attributeName, handler) {\n const prevValue = this._previousAttributes[attributeName];\n const newValue = this._attributes[attributeName];\n const changed = newValue !== prevValue;\n changed && handler && handler(newValue, prevValue);\n return changed;\n }\n\n set attributes(value) {\n this._attributes = {...value};\n }\n\n get attributes() {\n return cloneValue(this._attributes);\n }\n\n get previousAttributes() {\n return cloneValue(this._previousAttributes);\n }\n\n static defaults = {};\n}\n","\nconst types = {\n NUMBER: 'number',\n STRING: 'string',\n JSON: 'json',\n BOOL: 'bool',\n DIMENSION: 'dimension',\n STYLE: 'style',\n};\n\nfunction attributesToObject(attributes) {\n if (attributes instanceof NamedNodeMap) {\n const result = {};\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes.item(i);\n result[attr.name.toLowerCase()] = {name: attr.name, value: attr.value};\n }\n return result;\n } else {\n return attributes;\n }\n}\n\nclass PropType {\n constructor(type) {\n this._type = type;\n this._required = false;\n this._observed = false;\n this._comment = '';\n this._defaultValue = undefined;\n this._attrName = '';\n\n if (type === types.STRING) {\n this._lookup = undefined;\n\n this.lookup = valueArrayOrObject => {\n this._lookup = Object.values(valueArrayOrObject);\n this._caseSensitive = false;\n Object.defineProperty(this, 'caseSensitive', {\n get() {\n this._caseSensitive = true;\n return this;\n }\n });\n return this;\n }\n this.regExp = regExp => {\n this._regExp = regExp;\n return this;\n }\n }\n\n if (type === types.NUMBER) {\n this._minValue = undefined;\n this._maxValue = undefined;\n\n this.min = value => {\n this._minValue = value;\n return this;\n }\n\n this.max = value => {\n this._maxValue = value;\n return this;\n }\n }\n }\n\n get required() {\n this._required = true;\n return this;\n }\n\n get observed() {\n this._observed = true;\n return this;\n }\n\n comment(value) {\n this._comment = value;\n return this;\n }\n\n default(value) {\n this._defaultValue = value;\n return this;\n }\n\n attrName(value) {\n this._attrName = value;\n return this;\n }\n\n _setAttrNameFromPropName(value, noHyphens) {\n if (! this._attrName) {\n this._attrName = (noHyphens ? value : value.replace(/([A-Z])/g, '-$1')).toLowerCase();\n }\n }\n}\n\nclass PropTypes {\n static ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES = '_allowHyphensInAttributeNames';\n static get number() { return new PropType(types.NUMBER) };\n static get string() { return new PropType(types.STRING) };\n static get bool() { return new PropType(types.BOOL) };\n static get dimension() { return new PropType(types.DIMENSION) };\n static get style() { return new PropType(types.STYLE) };\n static get json() { return new PropType(types.JSON) };\n\n static getDefaults(propTypes) {\n const defaults = {};\n Object.keys(propTypes).map(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n if (propType._defaultValue !== undefined) {\n defaults[key] = propType._defaultValue;\n }\n }\n });\n return defaults;\n }\n\n static getObserved(propTypes) {\n const observed = [];\n const noHyphens = propTypes._allowHyphensInAttributeNames === false;\n Object.keys(propTypes).map(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n propType._setAttrNameFromPropName(key, noHyphens);\n if (propType._observed) {\n observed.push(propType._attrName);\n }\n }\n });\n return observed;\n }\n\n static propTypesToDoc(propTypes) {\n let docLines = [];\n\n let commentsExist = false;\n const noHyphens = propTypes._allowHyphensInAttributeNames === false;\n\n Object.keys(propTypes).forEach(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n propType._setAttrNameFromPropName(key, noHyphens);\n if (propType._comment !== '') {\n commentsExist = true;\n }\n docLines.push(`| ${[\n `${propType._attrName}`,\n propType._type,\n (propType => {\n const parts = [];\n if (propType._type === types.NUMBER) {\n if (propType._minValue !== undefined) {\n parts.push(`min: ${propType._minValue}`);\n }\n if (propType._maxValue !== undefined) {\n parts.push(`max: ${propType._maxValue}`);\n }\n } else if (propType._type === types.STRING) {\n if (propType._lookup) {\n parts.push(`one of: ${propType._lookup.map(item => `\"${item}\"`).join(', ')}${propType._caseSensitive ? ' (case sensitive)' : ''}`);\n }\n if (propType._regExp) {\n parts.push(`conforms to regExp: \\`${propType._regExp.toString()}\\``);\n }\n } else if (propType._type === types.JSON) {\n parts.push('a valid JSON string');\n } else if (propType._type === types.STYLE) {\n parts.push('valid inline css styles');\n } else if (propType._type === types.DIMENSION) {\n parts.push('a number with optional \"px\" or \"%\" suffix, or \"content\"')\n }\n return parts.join(', ');\n })(propType),\n (propType => {\n if (propType._defaultValue === undefined) return '';\n if (propType._type === types.JSON) return `'${JSON.stringify(propType._defaultValue)}'`;\n if (propType._type === types.NUMBER || propType._type === types.BOOL) return propType._defaultValue;\n return `\"${propType._defaultValue}\"`;\n })(propType),\n propType._required ? 'yes' : '',\n propType._observed ? 'yes' : '',\n propType._comment.replace(/\\n/g, '
'),\n ].join(' | ')} |`);\n }\n });\n if (!commentsExist) {\n docLines = docLines.map(item => item.replace(/\\| +\\|$/, '|'))\n }\n docLines.unshift('| --- | --- | --- | --- | --- | --- |' + (commentsExist ? ' --- |' : ''));\n docLines.unshift('| Attribute | Type | Valid Values | Default | Reqrd | Obsvd |' + (commentsExist ? ' Comment |' : ''));\n return docLines.join('\\n').replace(/_/g, '\\\\_');\n }\n\n static attributesToProps(element, singleAttrName) {\n const attributes = element.attributes;\n const propTypes = element.constructor.propTypes;\n const hash = {};\n const required = [];\n const noHyphens = propTypes._allowHyphensInAttributeNames === false;\n Object.keys(propTypes).forEach(key => {\n if (key !== this.ALLOW_HYPHENS_IN_ATTRIBUTE_NAMES) {\n const propType = propTypes[key];\n propType._setAttrNameFromPropName(key, noHyphens);\n hash[propType._attrName] = {\n name: key,\n propType: propType,\n }\n if (propType._required) {\n required.push(key);\n }\n }\n });\n const props = {};\n const attrObject = attributesToObject(attributes);\n const elementId = `Location: ${element.id ? `id=${element.id}` : element.outerHTML}`;\n Object.keys(attrObject).filter(key => !singleAttrName || key === singleAttrName).map(key => {\n const { name, value } = attrObject[key];\n let convertedValue;\n const info = hash[key];\n if (info === undefined) {\n throw new Error(`Unknown attribute \"${name}\". ${elementId}`);\n } else {\n const propType = hash[key].propType;\n switch (propType._type) {\n case types.BOOL:\n if (typeof value === 'boolean') {\n convertedValue = value;\n } else {\n const lowerCaseValue = value.toLowerCase();\n if (lowerCaseValue !== 'true' && lowerCaseValue !== 'false') {\n throw new Error(`Attribute \"${name}\" must be either \"true\" or \"false\". ${elementId}`);\n } else {\n convertedValue = lowerCaseValue === 'true';\n }\n }\n break;\n case types.DIMENSION:\n if (! /^(-?\\d+(\\.\\d+)?(px|%)?|content)$/.test(value)) {\n throw new Error(`Attribute \"${name}\" must be a number with optional \"px\" or \"%\" suffix, or \"content\". ${elementId}`);\n } else {\n convertedValue = value.replace(/([-\\d.]+)(px|)$/, '$1px');\n }\n break;\n case types.STRING:\n convertedValue = value;\n if (propType._required && !convertedValue) {\n throw new Error(`Attribute \"${name}\" must be one of ${propType._lookup.join('|')}. ${elementId}`);\n }\n if (propType._lookup !== undefined) {\n let testValue, testLookup;\n if (propType._caseSensitive) {\n testValue = convertedValue;\n testLookup = propType._lookup;\n } else {\n testValue = convertedValue.toLowerCase();\n testLookup = propType._lookup.map(item => item.toLowerCase());\n }\n if (! testLookup.includes(testValue)) {\n throw new Error(`Attribute \"${name}\" must be one of ${propType._lookup.join('|')}. ${elementId}`);\n }\n convertedValue = testValue;\n }\n if (propType._regExp !== undefined) {\n if (! propType._regExp.test(convertedValue)) {\n throw new Error(`Attribute \"${name}\" must conform to reg. exp. \"${propType._regExp.toString()}\". ${elementId}`);\n }\n }\n break;\n case types.NUMBER:\n convertedValue = parseFloat(value);\n if (isNaN(convertedValue)) {\n throw new Error(`Attribute \"${name}\" must be a valid number. ${elementId}`);\n }\n if (propType._minValue !== undefined && convertedValue < propType._minValue) {\n throw new Error(`Attribute \"${name}\" must not be less than ${propType._minValue}. ${elementId}`);\n }\n if (propType._maxValue !== undefined && convertedValue > propType._maxValue) {\n throw new Error(`Attribute \"${name}\" must not be greater than ${propType._maxValue}. ${elementId}`);\n }\n break;\n case types.STYLE:\n convertedValue = value.replace(/^\\s*(.*?);?\\s*$/, '$1;');\n if (!/^([a-zA-Z\\-\\s]+:[a-zA-Z0-9\\-.\\s#%\\(\\)\\+,']*;)+$/.test(convertedValue)) {\n throw new Error(`Attribute \"${name}\" must be a valid inline style declaration. ${elementId}`);\n }\n break;\n case types.JSON:\n try {\n convertedValue = JSON.parse(value);\n } catch (error) {\n throw new Error(`Attribute \"${name}\" must be a valid JSON string. ${elementId}`);\n }\n break;\n }\n props[hash[key].name] = convertedValue;\n }\n });\n\n if (!singleAttrName) {\n required.forEach(name => {\n if (props[name] === undefined) {\n throw new Error(`Attribute \"${name.replace(/([A-Z])/g, '-$1').toLowerCase()}\" is required. ${elementId}`);\n }\n });\n }\n\n return {\n ...(singleAttrName ? {} : PropTypes.getDefaults(propTypes)),\n ...props,\n };\n }\n}\n\nexport default PropTypes;\n","import { PropTypes } from 'myassays-global';\n\nexport default class MyassaysComponent extends HTMLElement {\n static get documentationMarkdown() {\n const { propTypes } = this;\n if (propTypes) {\n return `\\\n${PropTypes.propTypesToDoc(propTypes)}`;\n } else {\n return 'No documentation available';\n }\n }\n}\n","\"use strict\";\n\nfunction makeException(ErrorType, message, options) {\n if (options.globals) {\n ErrorType = options.globals[ErrorType.name];\n }\n return new ErrorType(`${options.context ? options.context : \"Value\"} ${message}.`);\n}\n\nfunction toNumber(value, options) {\n if (typeof value === \"bigint\") {\n throw makeException(TypeError, \"is a BigInt which cannot be converted to a number\", options);\n }\n if (!options.globals) {\n return Number(value);\n }\n return options.globals.Number(value);\n}\n\n// Round x to the nearest integer, choosing the even integer if it lies halfway between two.\nfunction evenRound(x) {\n // There are four cases for numbers with fractional part being .5:\n //\n // case | x | floor(x) | round(x) | expected | x <> 0 | x % 1 | x & 1 | example\n // 1 | 2n + 0.5 | 2n | 2n + 1 | 2n | > | 0.5 | 0 | 0.5 -> 0\n // 2 | 2n + 1.5 | 2n + 1 | 2n + 2 | 2n + 2 | > | 0.5 | 1 | 1.5 -> 2\n // 3 | -2n - 0.5 | -2n - 1 | -2n | -2n | < | -0.5 | 0 | -0.5 -> 0\n // 4 | -2n - 1.5 | -2n - 2 | -2n - 1 | -2n - 2 | < | -0.5 | 1 | -1.5 -> -2\n // (where n is a non-negative integer)\n //\n // Branch here for cases 1 and 4\n if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||\n (x < 0 && (x % 1) === -0.5 && (x & 1) === 1)) {\n return censorNegativeZero(Math.floor(x));\n }\n\n return censorNegativeZero(Math.round(x));\n}\n\nfunction integerPart(n) {\n return censorNegativeZero(Math.trunc(n));\n}\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction modulo(x, y) {\n // https://tc39.github.io/ecma262/#eqn-modulo\n // Note that http://stackoverflow.com/a/4467559/3191 does NOT work for large modulos\n const signMightNotMatch = x % y;\n if (sign(y) !== sign(signMightNotMatch)) {\n return signMightNotMatch + y;\n }\n return signMightNotMatch;\n}\n\nfunction censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n}\n\nfunction createIntegerConversion(bitLength, { unsigned }) {\n let lowerBound, upperBound;\n if (unsigned) {\n lowerBound = 0;\n upperBound = 2 ** bitLength - 1;\n } else {\n lowerBound = -(2 ** (bitLength - 1));\n upperBound = 2 ** (bitLength - 1) - 1;\n }\n\n const twoToTheBitLength = 2 ** bitLength;\n const twoToOneLessThanTheBitLength = 2 ** (bitLength - 1);\n\n return (value, options = {}) => {\n let x = toNumber(value, options);\n x = censorNegativeZero(x);\n\n if (options.enforceRange) {\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite number\", options);\n }\n\n x = integerPart(x);\n\n if (x < lowerBound || x > upperBound) {\n throw makeException(\n TypeError,\n `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,\n options\n );\n }\n\n return x;\n }\n\n if (!Number.isNaN(x) && options.clamp) {\n x = Math.min(Math.max(x, lowerBound), upperBound);\n x = evenRound(x);\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n x = integerPart(x);\n\n // Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if\n // possible. Hopefully it's an optimization for the non-64-bitLength cases too.\n if (x >= lowerBound && x <= upperBound) {\n return x;\n }\n\n // These will not work great for bitLength of 64, but oh well. See the README for more details.\n x = modulo(x, twoToTheBitLength);\n if (!unsigned && x >= twoToOneLessThanTheBitLength) {\n return x - twoToTheBitLength;\n }\n return x;\n };\n}\n\nfunction createLongLongConversion(bitLength, { unsigned }) {\n const upperBound = Number.MAX_SAFE_INTEGER;\n const lowerBound = unsigned ? 0 : Number.MIN_SAFE_INTEGER;\n const asBigIntN = unsigned ? BigInt.asUintN : BigInt.asIntN;\n\n return (value, options = {}) => {\n let x = toNumber(value, options);\n x = censorNegativeZero(x);\n\n if (options.enforceRange) {\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite number\", options);\n }\n\n x = integerPart(x);\n\n if (x < lowerBound || x > upperBound) {\n throw makeException(\n TypeError,\n `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,\n options\n );\n }\n\n return x;\n }\n\n if (!Number.isNaN(x) && options.clamp) {\n x = Math.min(Math.max(x, lowerBound), upperBound);\n x = evenRound(x);\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n let xBigInt = BigInt(integerPart(x));\n xBigInt = asBigIntN(bitLength, xBigInt);\n return Number(xBigInt);\n };\n}\n\nexports.any = value => {\n return value;\n};\n\nexports.undefined = () => {\n return undefined;\n};\n\nexports.boolean = value => {\n return Boolean(value);\n};\n\nexports.byte = createIntegerConversion(8, { unsigned: false });\nexports.octet = createIntegerConversion(8, { unsigned: true });\n\nexports.short = createIntegerConversion(16, { unsigned: false });\nexports[\"unsigned short\"] = createIntegerConversion(16, { unsigned: true });\n\nexports.long = createIntegerConversion(32, { unsigned: false });\nexports[\"unsigned long\"] = createIntegerConversion(32, { unsigned: true });\n\nexports[\"long long\"] = createLongLongConversion(64, { unsigned: false });\nexports[\"unsigned long long\"] = createLongLongConversion(64, { unsigned: true });\n\nexports.double = (value, options = {}) => {\n const x = toNumber(value, options);\n\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite floating-point value\", options);\n }\n\n return x;\n};\n\nexports[\"unrestricted double\"] = (value, options = {}) => {\n const x = toNumber(value, options);\n\n return x;\n};\n\nexports.float = (value, options = {}) => {\n const x = toNumber(value, options);\n\n if (!Number.isFinite(x)) {\n throw makeException(TypeError, \"is not a finite floating-point value\", options);\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n const y = Math.fround(x);\n\n if (!Number.isFinite(y)) {\n throw makeException(TypeError, \"is outside the range of a single-precision floating-point value\", options);\n }\n\n return y;\n};\n\nexports[\"unrestricted float\"] = (value, options = {}) => {\n const x = toNumber(value, options);\n\n if (isNaN(x)) {\n return x;\n }\n\n if (Object.is(x, -0)) {\n return x;\n }\n\n return Math.fround(x);\n};\n\nexports.DOMString = (value, options = {}) => {\n if (options.treatNullAsEmptyString && value === null) {\n return \"\";\n }\n\n if (typeof value === \"symbol\") {\n throw makeException(TypeError, \"is a symbol, which cannot be converted to a string\", options);\n }\n\n const StringCtor = options.globals ? options.globals.String : String;\n return StringCtor(value);\n};\n\nexports.ByteString = (value, options = {}) => {\n const x = exports.DOMString(value, options);\n let c;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw makeException(TypeError, \"is not a valid ByteString\", options);\n }\n }\n\n return x;\n};\n\nexports.USVString = (value, options = {}) => {\n const S = exports.DOMString(value, options);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + ((2 << 9) * a) + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n\n return U.join(\"\");\n};\n\nexports.object = (value, options = {}) => {\n if (value === null || (typeof value !== \"object\" && typeof value !== \"function\")) {\n throw makeException(TypeError, \"is not an object\", options);\n }\n\n return value;\n};\n\nconst abByteLengthGetter =\n Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nconst sabByteLengthGetter =\n typeof SharedArrayBuffer === \"function\" ?\n Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, \"byteLength\").get :\n null;\n\nfunction isNonSharedArrayBuffer(value) {\n try {\n // This will throw on SharedArrayBuffers, but not detached ArrayBuffers.\n // (The spec says it should throw, but the spec conflicts with implementations: https://github.com/tc39/ecma262/issues/678)\n abByteLengthGetter.call(value);\n\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isSharedArrayBuffer(value) {\n try {\n sabByteLengthGetter.call(value);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isArrayBufferDetached(value) {\n try {\n // eslint-disable-next-line no-new\n new Uint8Array(value);\n return false;\n } catch {\n return true;\n }\n}\n\nexports.ArrayBuffer = (value, options = {}) => {\n if (!isNonSharedArrayBuffer(value)) {\n if (options.allowShared && !isSharedArrayBuffer(value)) {\n throw makeException(TypeError, \"is not an ArrayBuffer or SharedArrayBuffer\", options);\n }\n throw makeException(TypeError, \"is not an ArrayBuffer\", options);\n }\n if (isArrayBufferDetached(value)) {\n throw makeException(TypeError, \"is a detached ArrayBuffer\", options);\n }\n\n return value;\n};\n\nconst dvByteLengthGetter =\n Object.getOwnPropertyDescriptor(DataView.prototype, \"byteLength\").get;\nexports.DataView = (value, options = {}) => {\n try {\n dvByteLengthGetter.call(value);\n } catch (e) {\n throw makeException(TypeError, \"is not a DataView\", options);\n }\n\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is backed by a SharedArrayBuffer, which is not allowed\", options);\n }\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is backed by a detached ArrayBuffer\", options);\n }\n\n return value;\n};\n\n// Returns the unforgeable `TypedArray` constructor name or `undefined`,\n// if the `this` value isn't a valid `TypedArray` object.\n//\n// https://tc39.es/ecma262/#sec-get-%typedarray%.prototype-@@tostringtag\nconst typedArrayNameGetter = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(Uint8Array).prototype,\n Symbol.toStringTag\n).get;\n[\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n Float32Array,\n Float64Array\n].forEach(func => {\n const { name } = func;\n const article = /^[AEIOU]/u.test(name) ? \"an\" : \"a\";\n exports[name] = (value, options = {}) => {\n if (!ArrayBuffer.isView(value) || typedArrayNameGetter.call(value) !== name) {\n throw makeException(TypeError, `is not ${article} ${name} object`, options);\n }\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is a view on a SharedArrayBuffer, which is not allowed\", options);\n }\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is a view on a detached ArrayBuffer\", options);\n }\n\n return value;\n };\n});\n\n// Common definitions\n\nexports.ArrayBufferView = (value, options = {}) => {\n if (!ArrayBuffer.isView(value)) {\n throw makeException(TypeError, \"is not a view on an ArrayBuffer or SharedArrayBuffer\", options);\n }\n\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is a view on a SharedArrayBuffer, which is not allowed\", options);\n }\n\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is a view on a detached ArrayBuffer\", options);\n }\n return value;\n};\n\nexports.BufferSource = (value, options = {}) => {\n if (ArrayBuffer.isView(value)) {\n if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n throw makeException(TypeError, \"is a view on a SharedArrayBuffer, which is not allowed\", options);\n }\n\n if (isArrayBufferDetached(value.buffer)) {\n throw makeException(TypeError, \"is a view on a detached ArrayBuffer\", options);\n }\n return value;\n }\n\n if (!options.allowShared && !isNonSharedArrayBuffer(value)) {\n throw makeException(TypeError, \"is not an ArrayBuffer or a view on one\", options);\n }\n if (options.allowShared && !isSharedArrayBuffer(value) && !isNonSharedArrayBuffer(value)) {\n throw makeException(TypeError, \"is not an ArrayBuffer, SharedArrayBuffer, or a view on one\", options);\n }\n if (isArrayBufferDetached(value)) {\n throw makeException(TypeError, \"is a detached ArrayBuffer\", options);\n }\n\n return value;\n};\n\nexports.DOMTimeStamp = exports[\"unsigned long long\"];\n","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nconst hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);\n\n// Like `Object.assign`, but using `[[GetOwnProperty]]` and `[[DefineOwnProperty]]`\n// instead of `[[Get]]` and `[[Set]]` and only allowing objects\nfunction define(target, source) {\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(source, key);\n if (descriptor && !Reflect.defineProperty(target, key, descriptor)) {\n throw new TypeError(`Cannot redefine property: ${String(key)}`);\n }\n }\n}\n\nfunction newObjectInRealm(globalObject, object) {\n const ctorRegistry = initCtorRegistry(globalObject);\n return Object.defineProperties(\n Object.create(ctorRegistry[\"%Object.prototype%\"]),\n Object.getOwnPropertyDescriptors(object)\n );\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\nconst ctorRegistrySymbol = Symbol.for(\"[webidl2js] constructor registry\");\n\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction initCtorRegistry(globalObject) {\n if (hasOwn(globalObject, ctorRegistrySymbol)) {\n return globalObject[ctorRegistrySymbol];\n }\n\n const ctorRegistry = Object.create(null);\n\n // In addition to registering all the WebIDL2JS-generated types in the constructor registry,\n // we also register a few intrinsics that we make use of in generated code, since they are not\n // easy to grab from the globalObject variable.\n ctorRegistry[\"%Object.prototype%\"] = globalObject.Object.prototype;\n ctorRegistry[\"%IteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(new globalObject.Array()[Symbol.iterator]())\n );\n\n try {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(\n globalObject.eval(\"(async function* () {})\").prototype\n )\n );\n } catch {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = AsyncIteratorPrototype;\n }\n\n globalObject[ctorRegistrySymbol] = ctorRegistry;\n return ctorRegistry;\n}\n\nfunction getSameObject(wrapper, prop, creator) {\n if (!wrapper[sameObjectCaches]) {\n wrapper[sameObjectCaches] = Object.create(null);\n }\n\n if (prop in wrapper[sameObjectCaches]) {\n return wrapper[sameObjectCaches][prop];\n }\n\n wrapper[sameObjectCaches][prop] = creator();\n return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n const wrapper = wrapperForImpl(impl);\n return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n const impl = implForWrapper(wrapper);\n return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\n\nfunction isArrayIndexPropName(P) {\n if (typeof P !== \"string\") {\n return false;\n }\n const i = P >>> 0;\n if (i === 2 ** 32 - 1) {\n return false;\n }\n const s = `${i}`;\n if (P !== s) {\n return false;\n }\n return true;\n}\n\nconst byteLengthGetter =\n Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nfunction isArrayBuffer(value) {\n try {\n byteLengthGetter.call(value);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction iteratorResult([key, value], kind) {\n let result;\n switch (kind) {\n case \"key\":\n result = key;\n break;\n case \"value\":\n result = value;\n break;\n case \"key+value\":\n result = [key, value];\n break;\n }\n return { value: result, done: false };\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nconst asyncIteratorNext = Symbol(\"async iterator get the next iteration result\");\nconst asyncIteratorReturn = Symbol(\"async iterator return steps\");\nconst asyncIteratorInit = Symbol(\"async iterator initialization steps\");\nconst asyncIteratorEOI = Symbol(\"async iterator end of iteration\");\n\nmodule.exports = exports = {\n isObject,\n hasOwn,\n define,\n newObjectInRealm,\n wrapperSymbol,\n implSymbol,\n getSameObject,\n ctorRegistrySymbol,\n initCtorRegistry,\n wrapperForImpl,\n implForWrapper,\n tryWrapperForImpl,\n tryImplForWrapper,\n iterInternalSymbol,\n isArrayBuffer,\n isArrayIndexPropName,\n supportsPropertyIndex,\n supportedPropertyIndices,\n supportsPropertyName,\n supportedPropertyNames,\n indexedGet,\n indexedSetNew,\n indexedSetExisting,\n namedGet,\n namedSetNew,\n namedSetExisting,\n namedDelete,\n asyncIteratorNext,\n asyncIteratorReturn,\n asyncIteratorInit,\n asyncIteratorEOI,\n iteratorResult\n};\n","\"use strict\";\n\n// https://infra.spec.whatwg.org/#namespaces\n\nexports.HTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.MATHML_NS = \"http://www.w3.org/1998/Math/MathML\";\n\nexports.SVG_NS = \"http://www.w3.org/2000/svg\";\n\nexports.XLINK_NS = \"http://www.w3.org/1999/xlink\";\n\nexports.XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n\nexports.XMLNS_NS = \"http://www.w3.org/2000/xmlns/\";\n","\"use strict\";\n\nconst idlUtils = require(\"../generated/utils.js\");\nconst { HTML_NS } = require(\"../helpers/namespaces\");\n\nexports.implementation = class HTMLCollectionImpl {\n constructor(globalObject, args, privateData) {\n this._list = [];\n this._version = -1;\n this._element = privateData.element;\n this._query = privateData.query;\n\n this._globalObject = globalObject;\n\n this._update();\n }\n get length() {\n this._update();\n return this._list.length;\n }\n item(index) {\n this._update();\n return this._list[index] || null;\n }\n namedItem(key) {\n if (key === \"\") {\n return null;\n }\n this._update();\n for (const element of this._list) {\n if (element.getAttributeNS(null, \"id\") === key) {\n return element;\n }\n if (element._namespaceURI === HTML_NS) {\n const name = element.getAttributeNS(null, \"name\");\n if (name === key) {\n return element;\n }\n }\n }\n return null;\n }\n _update() {\n if (this._version < this._element._version) {\n const snapshot = this._query();\n for (let i = 0; i < snapshot.length; i++) {\n this._list[i] = snapshot[i];\n }\n this._list.length = snapshot.length;\n this._version = this._element._version;\n }\n }\n get [idlUtils.supportedPropertyIndices]() {\n this._update();\n return this._list.keys();\n }\n get [idlUtils.supportedPropertyNames]() {\n this._update();\n const result = new Set();\n for (const element of this._list) {\n const id = element.getAttributeNS(null, \"id\");\n if (id) {\n result.add(id);\n }\n if (element._namespaceURI === HTML_NS) {\n const name = element.getAttributeNS(null, \"name\");\n if (name) {\n result.add(name);\n }\n }\n }\n return result;\n }\n\n // Inherit some useful functions from Array.\n [Symbol.iterator]() {\n this._update();\n return this._list[Symbol.iterator]();\n }\n entries() {\n this._update();\n return this._list.entries();\n }\n filter(...args) {\n this._update();\n return this._list.filter(...args);\n }\n map(...args) {\n this._update();\n return this._list.map(...args);\n }\n indexOf(...args) {\n this._update();\n return this._list.indexOf(...args);\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"HTMLCollection\";\n\nexports.is = value => {\n return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (exports.is(value)) {\n return utils.implForWrapper(value);\n }\n throw new globalObject.TypeError(`${context} is not of type 'HTMLCollection'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n let proto;\n if (newTarget !== undefined) {\n proto = newTarget.prototype;\n }\n\n if (!utils.isObject(proto)) {\n proto = globalObject[ctorRegistrySymbol][\"HTMLCollection\"].prototype;\n }\n\n return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n let proxyHandler = proxyHandlerCache.get(globalObject);\n if (proxyHandler === undefined) {\n proxyHandler = new ProxyHandler(globalObject);\n proxyHandlerCache.set(globalObject, proxyHandler);\n }\n return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n const wrapper = makeWrapper(globalObject);\n return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n const wrapper = exports.create(globalObject, constructorArgs, privateData);\n return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n privateData.wrapper = wrapper;\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: new Impl.implementation(globalObject, constructorArgs, privateData),\n configurable: true\n });\n\n wrapper = makeProxy(wrapper, globalObject);\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n let wrapper = makeWrapper(globalObject, newTarget);\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: Object.create(Impl.implementation.prototype),\n configurable: true\n });\n\n wrapper = makeProxy(wrapper, globalObject);\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n if (!globalNames.some(globalName => exposed.has(globalName))) {\n return;\n }\n\n const ctorRegistry = utils.initCtorRegistry(globalObject);\n class HTMLCollection {\n constructor() {\n throw new globalObject.TypeError(\"Illegal constructor\");\n }\n\n item(index) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of HTMLCollection.\");\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'item' on 'HTMLCollection': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"unsigned long\"](curArg, {\n context: \"Failed to execute 'item' on 'HTMLCollection': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n }\n\n namedItem(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'namedItem' called on an object that is not a valid instance of HTMLCollection.\"\n );\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'namedItem' on 'HTMLCollection': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"DOMString\"](curArg, {\n context: \"Failed to execute 'namedItem' on 'HTMLCollection': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].namedItem(...args));\n }\n\n get length() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'get length' called on an object that is not a valid instance of HTMLCollection.\"\n );\n }\n\n return esValue[implSymbol][\"length\"];\n }\n }\n Object.defineProperties(HTMLCollection.prototype, {\n item: { enumerable: true },\n namedItem: { enumerable: true },\n length: { enumerable: true },\n [Symbol.toStringTag]: { value: \"HTMLCollection\", configurable: true },\n [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n });\n ctorRegistry[interfaceName] = HTMLCollection;\n\n Object.defineProperty(globalObject, interfaceName, {\n configurable: true,\n writable: true,\n value: HTMLCollection\n });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n constructor(globalObject) {\n this._globalObject = globalObject;\n }\n\n get(target, P, receiver) {\n if (typeof P === \"symbol\") {\n return Reflect.get(target, P, receiver);\n }\n const desc = this.getOwnPropertyDescriptor(target, P);\n if (desc === undefined) {\n const parent = Object.getPrototypeOf(target);\n if (parent === null) {\n return undefined;\n }\n return Reflect.get(target, P, receiver);\n }\n if (!desc.get && !desc.set) {\n return desc.value;\n }\n const getter = desc.get;\n if (getter === undefined) {\n return undefined;\n }\n return Reflect.apply(getter, receiver, []);\n }\n\n has(target, P) {\n if (typeof P === \"symbol\") {\n return Reflect.has(target, P);\n }\n const desc = this.getOwnPropertyDescriptor(target, P);\n if (desc !== undefined) {\n return true;\n }\n const parent = Object.getPrototypeOf(target);\n if (parent !== null) {\n return Reflect.has(parent, P);\n }\n return false;\n }\n\n ownKeys(target) {\n const keys = new Set();\n\n for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n keys.add(`${key}`);\n }\n\n for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n if (!(key in target)) {\n keys.add(`${key}`);\n }\n }\n\n for (const key of Reflect.ownKeys(target)) {\n keys.add(key);\n }\n return [...keys];\n }\n\n getOwnPropertyDescriptor(target, P) {\n if (typeof P === \"symbol\") {\n return Reflect.getOwnPropertyDescriptor(target, P);\n }\n let ignoreNamedProps = false;\n\n if (utils.isArrayIndexPropName(P)) {\n const index = P >>> 0;\n const indexedValue = target[implSymbol].item(index);\n if (indexedValue !== null) {\n return {\n writable: false,\n enumerable: true,\n configurable: true,\n value: utils.tryWrapperForImpl(indexedValue)\n };\n }\n ignoreNamedProps = true;\n }\n\n const namedValue = target[implSymbol].namedItem(P);\n\n if (namedValue !== null && !(P in target) && !ignoreNamedProps) {\n return {\n writable: false,\n enumerable: false,\n configurable: true,\n value: utils.tryWrapperForImpl(namedValue)\n };\n }\n\n return Reflect.getOwnPropertyDescriptor(target, P);\n }\n\n set(target, P, V, receiver) {\n if (typeof P === \"symbol\") {\n return Reflect.set(target, P, V, receiver);\n }\n // The `receiver` argument refers to the Proxy exotic object or an object\n // that inherits from it, whereas `target` refers to the Proxy target:\n if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n const globalObject = this._globalObject;\n }\n let ownDesc;\n\n if (utils.isArrayIndexPropName(P)) {\n const index = P >>> 0;\n const indexedValue = target[implSymbol].item(index);\n if (indexedValue !== null) {\n ownDesc = {\n writable: false,\n enumerable: true,\n configurable: true,\n value: utils.tryWrapperForImpl(indexedValue)\n };\n }\n }\n\n if (ownDesc === undefined) {\n ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n }\n if (ownDesc === undefined) {\n const parent = Reflect.getPrototypeOf(target);\n if (parent !== null) {\n return Reflect.set(parent, P, V, receiver);\n }\n ownDesc = { writable: true, enumerable: true, configurable: true, value: undefined };\n }\n if (!ownDesc.writable) {\n return false;\n }\n if (!utils.isObject(receiver)) {\n return false;\n }\n const existingDesc = Reflect.getOwnPropertyDescriptor(receiver, P);\n let valueDesc;\n if (existingDesc !== undefined) {\n if (existingDesc.get || existingDesc.set) {\n return false;\n }\n if (!existingDesc.writable) {\n return false;\n }\n valueDesc = { value: V };\n } else {\n valueDesc = { writable: true, enumerable: true, configurable: true, value: V };\n }\n return Reflect.defineProperty(receiver, P, valueDesc);\n }\n\n defineProperty(target, P, desc) {\n if (typeof P === \"symbol\") {\n return Reflect.defineProperty(target, P, desc);\n }\n\n const globalObject = this._globalObject;\n\n if (utils.isArrayIndexPropName(P)) {\n return false;\n }\n if (!utils.hasOwn(target, P)) {\n const creating = !(target[implSymbol].namedItem(P) !== null);\n if (!creating) {\n return false;\n }\n }\n return Reflect.defineProperty(target, P, desc);\n }\n\n deleteProperty(target, P) {\n if (typeof P === \"symbol\") {\n return Reflect.deleteProperty(target, P);\n }\n\n const globalObject = this._globalObject;\n\n if (utils.isArrayIndexPropName(P)) {\n const index = P >>> 0;\n return !(target[implSymbol].item(index) !== null);\n }\n\n if (target[implSymbol].namedItem(P) !== null && !(P in target)) {\n return false;\n }\n\n return Reflect.deleteProperty(target, P);\n }\n\n preventExtensions() {\n return false;\n }\n}\n\nconst Impl = require(\"../nodes/HTMLCollection-impl.js\");\n","export default {}","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nconst hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);\n\n// Like `Object.assign`, but using `[[GetOwnProperty]]` and `[[DefineOwnProperty]]`\n// instead of `[[Get]]` and `[[Set]]` and only allowing objects\nfunction define(target, source) {\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(source, key);\n if (descriptor && !Reflect.defineProperty(target, key, descriptor)) {\n throw new TypeError(`Cannot redefine property: ${String(key)}`);\n }\n }\n}\n\nfunction newObjectInRealm(globalObject, object) {\n const ctorRegistry = initCtorRegistry(globalObject);\n return Object.defineProperties(\n Object.create(ctorRegistry[\"%Object.prototype%\"]),\n Object.getOwnPropertyDescriptors(object)\n );\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\nconst ctorRegistrySymbol = Symbol.for(\"[webidl2js] constructor registry\");\n\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction initCtorRegistry(globalObject) {\n if (hasOwn(globalObject, ctorRegistrySymbol)) {\n return globalObject[ctorRegistrySymbol];\n }\n\n const ctorRegistry = Object.create(null);\n\n // In addition to registering all the WebIDL2JS-generated types in the constructor registry,\n // we also register a few intrinsics that we make use of in generated code, since they are not\n // easy to grab from the globalObject variable.\n ctorRegistry[\"%Object.prototype%\"] = globalObject.Object.prototype;\n ctorRegistry[\"%IteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(new globalObject.Array()[Symbol.iterator]())\n );\n\n try {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = Object.getPrototypeOf(\n Object.getPrototypeOf(\n globalObject.eval(\"(async function* () {})\").prototype\n )\n );\n } catch {\n ctorRegistry[\"%AsyncIteratorPrototype%\"] = AsyncIteratorPrototype;\n }\n\n globalObject[ctorRegistrySymbol] = ctorRegistry;\n return ctorRegistry;\n}\n\nfunction getSameObject(wrapper, prop, creator) {\n if (!wrapper[sameObjectCaches]) {\n wrapper[sameObjectCaches] = Object.create(null);\n }\n\n if (prop in wrapper[sameObjectCaches]) {\n return wrapper[sameObjectCaches][prop];\n }\n\n wrapper[sameObjectCaches][prop] = creator();\n return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n const wrapper = wrapperForImpl(impl);\n return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n const impl = implForWrapper(wrapper);\n return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\n\nfunction isArrayIndexPropName(P) {\n if (typeof P !== \"string\") {\n return false;\n }\n const i = P >>> 0;\n if (i === 2 ** 32 - 1) {\n return false;\n }\n const s = `${i}`;\n if (P !== s) {\n return false;\n }\n return true;\n}\n\nconst byteLengthGetter =\n Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nfunction isArrayBuffer(value) {\n try {\n byteLengthGetter.call(value);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction iteratorResult([key, value], kind) {\n let result;\n switch (kind) {\n case \"key\":\n result = key;\n break;\n case \"value\":\n result = value;\n break;\n case \"key+value\":\n result = [key, value];\n break;\n }\n return { value: result, done: false };\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nconst asyncIteratorNext = Symbol(\"async iterator get the next iteration result\");\nconst asyncIteratorReturn = Symbol(\"async iterator return steps\");\nconst asyncIteratorInit = Symbol(\"async iterator initialization steps\");\nconst asyncIteratorEOI = Symbol(\"async iterator end of iteration\");\n\nmodule.exports = exports = {\n isObject,\n hasOwn,\n define,\n newObjectInRealm,\n wrapperSymbol,\n implSymbol,\n getSameObject,\n ctorRegistrySymbol,\n initCtorRegistry,\n wrapperForImpl,\n implForWrapper,\n tryWrapperForImpl,\n tryImplForWrapper,\n iterInternalSymbol,\n isArrayBuffer,\n isArrayIndexPropName,\n supportsPropertyIndex,\n supportedPropertyIndices,\n supportsPropertyName,\n supportedPropertyNames,\n indexedGet,\n indexedSetNew,\n indexedSetExisting,\n namedGet,\n namedSetNew,\n namedSetExisting,\n namedDelete,\n asyncIteratorNext,\n asyncIteratorReturn,\n asyncIteratorInit,\n asyncIteratorEOI,\n iteratorResult\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","\"use strict\";\n\nconst combiningMarks = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0CF3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{11002}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11082}\\u{110B0}-\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{11134}\\u{11145}\\u{11146}\\u{11173}\\u{11180}-\\u{11182}\\u{111B3}-\\u{111C0}\\u{111C9}-\\u{111CC}\\u{111CE}\\u{111CF}\\u{1122C}-\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}-\\u{112EA}\\u{11300}-\\u{11303}\\u{1133B}\\u{1133C}\\u{1133E}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11357}\\u{11362}\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11435}-\\u{11446}\\u{1145E}\\u{114B0}-\\u{114C3}\\u{115AF}-\\u{115B5}\\u{115B8}-\\u{115C0}\\u{115DC}\\u{115DD}\\u{11630}-\\u{11640}\\u{116AB}-\\u{116B7}\\u{1171D}-\\u{1172B}\\u{1182C}-\\u{1183A}\\u{11930}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{1193E}\\u{11940}\\u{11942}\\u{11943}\\u{119D1}-\\u{119D7}\\u{119DA}-\\u{119E0}\\u{119E4}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A39}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A5B}\\u{11A8A}-\\u{11A99}\\u{11C2F}-\\u{11C36}\\u{11C38}-\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D8A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D97}\\u{11EF3}-\\u{11EF6}\\u{11F00}\\u{11F01}\\u{11F03}\\u{11F34}-\\u{11F3A}\\u{11F3E}-\\u{11F42}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F51}-\\u{16F87}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{16FF0}\\u{16FF1}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D165}-\\u{1D169}\\u{1D16D}-\\u{1D172}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]/u;\nconst combiningClassVirama = /[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0BCD\\u0C4D\\u0CCD\\u0D3B\\u0D3C\\u0D4D\\u0DCA\\u0E3A\\u0EBA\\u0F84\\u1039\\u103A\\u1714\\u1734\\u17D2\\u1A60\\u1B44\\u1BAA\\u1BAB\\u1BF2\\u1BF3\\u2D7F\\uA806\\uA8C4\\uA953\\uA9C0\\uAAF6\\uABED\\u{10A3F}\\u{11046}\\u{1107F}\\u{110B9}\\u{11133}\\u{11134}\\u{111C0}\\u{11235}\\u{112EA}\\u{1134D}\\u{11442}\\u{114C2}\\u{115BF}\\u{1163F}\\u{116B6}\\u{1172B}\\u{11839}\\u{119E0}\\u{11A34}\\u{11A47}\\u{11A99}\\u{11C3F}\\u{11D44}\\u{11D45}\\u{11D97}]/u;\nconst validZWNJ = /[\\u0620\\u0626\\u0628\\u062A-\\u062E\\u0633-\\u063F\\u0641-\\u0647\\u0649\\u064A\\u066E\\u066F\\u0678-\\u0687\\u069A-\\u06BF\\u06C1\\u06C2\\u06CC\\u06CE\\u06D0\\u06D1\\u06FA-\\u06FC\\u06FF\\u0712-\\u0714\\u071A-\\u071D\\u071F-\\u0727\\u0729\\u072B\\u072D\\u072E\\u074E-\\u0758\\u075C-\\u076A\\u076D-\\u0770\\u0772\\u0775-\\u0777\\u077A-\\u077F\\u07CA-\\u07EA\\u0841-\\u0845\\u0848\\u084A-\\u0853\\u0855\\u0860\\u0862-\\u0865\\u0868\\u08A0-\\u08A9\\u08AF\\u08B0\\u08B3\\u08B4\\u08B6-\\u08B8\\u08BA-\\u08BD\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA872\\u{10AC0}-\\u{10AC4}\\u{10ACD}\\u{10AD3}-\\u{10ADC}\\u{10ADE}-\\u{10AE0}\\u{10AEB}-\\u{10AEE}\\u{10B80}\\u{10B82}\\u{10B86}-\\u{10B88}\\u{10B8A}\\u{10B8B}\\u{10B8D}\\u{10B90}\\u{10BAD}\\u{10BAE}\\u{10D00}-\\u{10D21}\\u{10D23}\\u{10F30}-\\u{10F32}\\u{10F34}-\\u{10F44}\\u{10F51}-\\u{10F53}\\u{1E900}-\\u{1E943}][\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10F46}-\\u{10F50}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{13430}-\\u{13438}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E130}-\\u{1E136}\\u{1E2EC}-\\u{1E2EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*\\u200C[\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10F46}-\\u{10F50}\\u{11001}\\u{11038}-\\u{11046}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{13430}-\\u{13438}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E130}-\\u{1E136}\\u{1E2EC}-\\u{1E2EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*[\\u0620\\u0622-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u0673\\u0675-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u077F\\u07CA-\\u07EA\\u0840-\\u0855\\u0860\\u0862-\\u0865\\u0867-\\u086A\\u08A0-\\u08AC\\u08AE-\\u08B4\\u08B6-\\u08BD\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA871\\u{10AC0}-\\u{10AC5}\\u{10AC7}\\u{10AC9}\\u{10ACA}\\u{10ACE}-\\u{10AD6}\\u{10AD8}-\\u{10AE1}\\u{10AE4}\\u{10AEB}-\\u{10AEF}\\u{10B80}-\\u{10B91}\\u{10BA9}-\\u{10BAE}\\u{10D01}-\\u{10D23}\\u{10F30}-\\u{10F44}\\u{10F51}-\\u{10F54}\\u{1E900}-\\u{1E943}]/u;\nconst bidiDomain = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS1LTR = /[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B50-\\u1B6A\\u1B74-\\u1B7E\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{1171A}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18D00}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6DA}\\u{1D6DC}-\\u{1D714}\\u{1D716}-\\u{1D74E}\\u{1D750}-\\u{1D788}\\u{1D78A}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D800}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]/u;\nconst bidiS1RTL = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u08A0-\\u08C9\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS2 = /^[\\0-\\x08\\x0E-\\x1B!-@\\[-`\\{-\\x84\\x86-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02B9\\u02BA\\u02C2-\\u02CF\\u02D2-\\u02DF\\u02E5-\\u02ED\\u02EF-\\u036F\\u0374\\u0375\\u037E\\u0384\\u0385\\u0387\\u03F6\\u0483-\\u0489\\u058A\\u058D-\\u058F\\u0591-\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u070D\\u070F-\\u074A\\u074D-\\u07B1\\u07C0-\\u07FA\\u07FD-\\u082D\\u0830-\\u083E\\u0840-\\u085B\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u0898-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09F2\\u09F3\\u09FB\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AF1\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0BF3-\\u0BFA\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C78-\\u0C7E\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E3F\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39-\\u0F3D\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1390-\\u1399\\u1400\\u169B\\u169C\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DB\\u17DD\\u17F0-\\u17F9\\u1800-\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1940\\u1944\\u1945\\u19DE-\\u19FF\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u200B-\\u200D\\u200F-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2070\\u2074-\\u207E\\u2080-\\u208E\\u20A0-\\u20C0\\u20D0-\\u20F0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u2150-\\u215F\\u2189-\\u218B\\u2190-\\u2335\\u237B-\\u2394\\u2396-\\u2426\\u2440-\\u244A\\u2460-\\u249B\\u24EA-\\u26AB\\u26AD-\\u27FF\\u2900-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2CEF-\\u2CF1\\u2CF9-\\u2CFF\\u2D7F\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u3004\\u3008-\\u3020\\u302A-\\u302D\\u3030\\u3036\\u3037\\u303D-\\u303F\\u3099-\\u309C\\u30A0\\u30FB\\u31C0-\\u31E3\\u321D\\u321E\\u3250-\\u325F\\u327C-\\u327E\\u32B1-\\u32BF\\u32CC-\\u32CF\\u3377-\\u337A\\u33DE\\u33DF\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA60D-\\uA60F\\uA66F-\\uA67F\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA700-\\uA721\\uA788\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA828-\\uA82C\\uA838\\uA839\\uA874-\\uA877\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uAB6A\\uAB6B\\uABE5\\uABE8\\uABED\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD8F\\uFD92-\\uFDC7\\uFDCF\\uFDF0-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFEFF\\uFF01-\\uFF20\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10101}\\u{10140}-\\u{1018C}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101FD}\\u{102E0}-\\u{102FB}\\u{10376}-\\u{1037A}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{1091F}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A38}-\\u{10A3A}\\u{10A3F}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE6}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B39}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D27}\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAB}-\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EFD}-\\u{10F27}\\u{10F30}-\\u{10F59}\\u{10F70}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{11001}\\u{11038}-\\u{11046}\\u{11052}-\\u{11065}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{11660}-\\u{1166C}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11FD5}-\\u{11FF1}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE2}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D1E9}\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D300}-\\u{1D356}\\u{1D6DB}\\u{1D715}\\u{1D74F}\\u{1D789}\\u{1D7C3}\\u{1D7CE}-\\u{1D7FF}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E2FF}\\u{1E4EC}-\\u{1E4EF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8D6}\\u{1E900}-\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F10F}\\u{1F12F}\\u{1F16A}-\\u{1F16F}\\u{1F1AD}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D7}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F776}\\u{1F77B}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}\\u{1F8B1}\\u{1F900}-\\u{1FA53}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA88}\\u{1FA90}-\\u{1FABD}\\u{1FABF}-\\u{1FAC5}\\u{1FACE}-\\u{1FADB}\\u{1FAE0}-\\u{1FAE8}\\u{1FAF0}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBCA}\\u{1FBF0}-\\u{1FBF9}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS3 = /[0-9\\xB2\\xB3\\xB9\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1D7CE}-\\u{1D7FF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS4EN = /[0-9\\xB2\\xB3\\xB9\\u06F0-\\u06F9\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{1D7CE}-\\u{1D7FF}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}]/u;\nconst bidiS4AN = /[\\u0600-\\u0605\\u0660-\\u0669\\u066B\\u066C\\u06DD\\u0890\\u0891\\u08E2\\u{10D30}-\\u{10D39}\\u{10E60}-\\u{10E7E}]/u;\nconst bidiS5 = /^[\\0-\\x08\\x0E-\\x1B!-\\x84\\x86-\\u0377\\u037A-\\u037F\\u0384-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u052F\\u0531-\\u0556\\u0559-\\u058A\\u058D-\\u058F\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0606\\u0607\\u0609\\u060A\\u060C\\u060E-\\u061A\\u064B-\\u065F\\u066A\\u0670\\u06D6-\\u06DC\\u06DE-\\u06E4\\u06E7-\\u06ED\\u06F0-\\u06F9\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07F6-\\u07F9\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A76\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AF1\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BFA\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C77-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4F\\u0D54-\\u0D63\\u0D66-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E3A\\u0E3F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F97\\u0F99-\\u0FBC\\u0FBE-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u137C\\u1380-\\u1399\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1400-\\u167F\\u1681-\\u169C\\u16A0-\\u16F8\\u1700-\\u1715\\u171F-\\u1736\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1800-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1940\\u1944-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u19DE-\\u1A1B\\u1A1E-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1AB0-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B7E\\u1B80-\\u1BF3\\u1BFC-\\u1C37\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD0-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u200B-\\u200E\\u2010-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2071\\u2074-\\u208E\\u2090-\\u209C\\u20A0-\\u20C0\\u20D0-\\u20F0\\u2100-\\u218B\\u2190-\\u2426\\u2440-\\u244A\\u2460-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2CF3\\u2CF9-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303F\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31E3\\u31F0-\\u321E\\u3220-\\uA48C\\uA490-\\uA4C6\\uA4D0-\\uA62B\\uA640-\\uA6F7\\uA700-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA82C\\uA830-\\uA839\\uA840-\\uA877\\uA880-\\uA8C5\\uA8CE-\\uA8D9\\uA8E0-\\uA953\\uA95F-\\uA97C\\uA980-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAAC2\\uAADB-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB6B\\uAB70-\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1E\\uFB29\\uFD3E-\\uFD4F\\uFDCF\\uFDFD-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFEFF\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}-\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1018E}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101D0}-\\u{101FD}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E0}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{1037A}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{1091F}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10B39}-\\u{10B3F}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{1104D}\\u{11052}-\\u{11075}\\u{1107F}-\\u{110C2}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11100}-\\u{11134}\\u{11136}-\\u{11147}\\u{11150}-\\u{11176}\\u{11180}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{11241}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112EA}\\u{112F0}-\\u{112F9}\\u{11300}-\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133B}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11400}-\\u{1145B}\\u{1145D}-\\u{11461}\\u{11480}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B5}\\u{115B8}-\\u{115DD}\\u{11600}-\\u{11644}\\u{11650}-\\u{11659}\\u{11660}-\\u{1166C}\\u{11680}-\\u{116B9}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{1171A}\\u{1171D}-\\u{1172B}\\u{11730}-\\u{11746}\\u{11800}-\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D7}\\u{119DA}-\\u{119E4}\\u{11A00}-\\u{11A47}\\u{11A50}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C36}\\u{11C38}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D47}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF8}\\u{11F00}-\\u{11F10}\\u{11F12}-\\u{11F3A}\\u{11F3E}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FF1}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{13455}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF0}-\\u{16AF5}\\u{16B00}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F4F}-\\u{16F87}\\u{16F8F}-\\u{16F9F}\\u{16FE0}-\\u{16FE4}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18D00}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D300}-\\u{1D356}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D7CB}\\u{1D7CE}-\\u{1DA8B}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E030}-\\u{1E06D}\\u{1E08F}\\u{1E100}-\\u{1E12C}\\u{1E130}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AE}\\u{1E2C0}-\\u{1E2F9}\\u{1E2FF}\\u{1E4D0}-\\u{1E4F9}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F1AD}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D7}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F776}\\u{1F77B}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}\\u{1F8B1}\\u{1F900}-\\u{1FA53}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA88}\\u{1FA90}-\\u{1FABD}\\u{1FABF}-\\u{1FAC5}\\u{1FACE}-\\u{1FADB}\\u{1FAE0}-\\u{1FAE8}\\u{1FAF0}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBCA}\\u{1FBF0}-\\u{1FBF9}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]*$/u;\nconst bidiS6 = /[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u06F0-\\u06F9\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B50-\\u1B6A\\u1B74-\\u1B7E\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u2488-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E1}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{11700}-\\u{1171A}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{14400}-\\u{14646}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18D00}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6DA}\\u{1D6DC}-\\u{1D714}\\u{1D716}-\\u{1D74E}\\u{1D750}-\\u{1D788}\\u{1D78A}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D7CE}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F100}-\\u{1F10A}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1FBF0}-\\u{1FBF9}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10EAB}\\u{10EAC}\\u{10EFD}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}-\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{13440}\\u{13447}-\\u{13455}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\n\nmodule.exports = {\n combiningMarks,\n combiningClassVirama,\n validZWNJ,\n bidiDomain,\n bidiS1LTR,\n bidiS1RTL,\n bidiS2,\n bidiS3,\n bidiS4EN,\n bidiS4AN,\n bidiS5,\n bidiS6\n};\n","\"use strict\";\n\nmodule.exports.STATUS_MAPPING = {\n mapped: 1,\n valid: 2,\n disallowed: 3,\n disallowed_STD3_valid: 4,\n disallowed_STD3_mapped: 5,\n deviation: 6,\n ignored: 7\n};\n","\"use strict\";\n\nconst punycode = require(\"punycode/\");\nconst regexes = require(\"./lib/regexes.js\");\nconst mappingTable = require(\"./lib/mappingTable.json\");\nconst { STATUS_MAPPING } = require(\"./lib/statusMapping.js\");\n\nfunction containsNonASCII(str) {\n return /[^\\x00-\\x7F]/u.test(str);\n}\n\nfunction findStatus(val, { useSTD3ASCIIRules }) {\n let start = 0;\n let end = mappingTable.length - 1;\n\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n\n const target = mappingTable[mid];\n const min = Array.isArray(target[0]) ? target[0][0] : target[0];\n const max = Array.isArray(target[0]) ? target[0][1] : target[0];\n\n if (min <= val && max >= val) {\n if (useSTD3ASCIIRules &&\n (target[1] === STATUS_MAPPING.disallowed_STD3_valid || target[1] === STATUS_MAPPING.disallowed_STD3_mapped)) {\n return [STATUS_MAPPING.disallowed, ...target.slice(2)];\n } else if (target[1] === STATUS_MAPPING.disallowed_STD3_valid) {\n return [STATUS_MAPPING.valid, ...target.slice(2)];\n } else if (target[1] === STATUS_MAPPING.disallowed_STD3_mapped) {\n return [STATUS_MAPPING.mapped, ...target.slice(2)];\n }\n\n return target.slice(1);\n } else if (min > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nfunction mapChars(domainName, { useSTD3ASCIIRules, processingOption }) {\n let hasError = false;\n let processed = \"\";\n\n for (const ch of domainName) {\n const [status, mapping] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });\n\n switch (status) {\n case STATUS_MAPPING.disallowed:\n hasError = true;\n processed += ch;\n break;\n case STATUS_MAPPING.ignored:\n break;\n case STATUS_MAPPING.mapped:\n processed += mapping;\n break;\n case STATUS_MAPPING.deviation:\n if (processingOption === \"transitional\") {\n processed += mapping;\n } else {\n processed += ch;\n }\n break;\n case STATUS_MAPPING.valid:\n processed += ch;\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nfunction validateLabel(label, { checkHyphens, checkBidi, checkJoiners, processingOption, useSTD3ASCIIRules }) {\n if (label.normalize(\"NFC\") !== label) {\n return false;\n }\n\n const codePoints = Array.from(label);\n\n if (checkHyphens) {\n if ((codePoints[2] === \"-\" && codePoints[3] === \"-\") ||\n (label.startsWith(\"-\") || label.endsWith(\"-\"))) {\n return false;\n }\n }\n\n if (label.includes(\".\") ||\n (codePoints.length > 0 && regexes.combiningMarks.test(codePoints[0]))) {\n return false;\n }\n\n for (const ch of codePoints) {\n const [status] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });\n if ((processingOption === \"transitional\" && status !== STATUS_MAPPING.valid) ||\n (processingOption === \"nontransitional\" &&\n status !== STATUS_MAPPING.valid && status !== STATUS_MAPPING.deviation)) {\n return false;\n }\n }\n\n // https://tools.ietf.org/html/rfc5892#appendix-A\n if (checkJoiners) {\n let last = 0;\n for (const [i, ch] of codePoints.entries()) {\n if (ch === \"\\u200C\" || ch === \"\\u200D\") {\n if (i > 0) {\n if (regexes.combiningClassVirama.test(codePoints[i - 1])) {\n continue;\n }\n if (ch === \"\\u200C\") {\n // TODO: make this more efficient\n const next = codePoints.indexOf(\"\\u200C\", i + 1);\n const test = next < 0 ? codePoints.slice(last) : codePoints.slice(last, next);\n if (regexes.validZWNJ.test(test.join(\"\"))) {\n last = i + 1;\n continue;\n }\n }\n }\n return false;\n }\n }\n }\n\n // https://tools.ietf.org/html/rfc5893#section-2\n // For the codePoints length check, see discussion in https://github.com/jsdom/whatwg-url/pull/250 and the second item\n // in https://github.com/whatwg/url/issues/744.\n if (checkBidi && codePoints.length > 0) {\n let rtl;\n\n // 1\n if (regexes.bidiS1LTR.test(codePoints[0])) {\n rtl = false;\n } else if (regexes.bidiS1RTL.test(codePoints[0])) {\n rtl = true;\n } else {\n return false;\n }\n\n if (rtl) {\n // 2-4\n if (!regexes.bidiS2.test(label) ||\n !regexes.bidiS3.test(label) ||\n (regexes.bidiS4EN.test(label) && regexes.bidiS4AN.test(label))) {\n return false;\n }\n } else if (!regexes.bidiS5.test(label) ||\n !regexes.bidiS6.test(label)) { // 5-6\n return false;\n }\n }\n\n return true;\n}\n\nfunction isBidiDomain(labels) {\n const domain = labels.map(label => {\n if (label.startsWith(\"xn--\")) {\n try {\n return punycode.decode(label.substring(4));\n } catch (err) {\n return \"\";\n }\n }\n return label;\n }).join(\".\");\n return regexes.bidiDomain.test(domain);\n}\n\nfunction processing(domainName, options) {\n const { processingOption } = options;\n\n // 1. Map.\n let { string, error } = mapChars(domainName, options);\n\n // 2. Normalize.\n string = string.normalize(\"NFC\");\n\n // 3. Break.\n const labels = string.split(\".\");\n const isBidi = isBidiDomain(labels);\n\n // 4. Convert/Validate.\n for (const [i, origLabel] of labels.entries()) {\n let label = origLabel;\n let curProcessing = processingOption;\n if (label.startsWith(\"xn--\")) {\n try {\n label = punycode.decode(label.substring(4));\n labels[i] = label;\n } catch (err) {\n error = true;\n continue;\n }\n curProcessing = \"nontransitional\";\n }\n\n // No need to validate if we already know there is an error.\n if (error) {\n continue;\n }\n const validation = validateLabel(label, {\n ...options,\n processingOption: curProcessing,\n checkBidi: options.checkBidi && isBidi\n });\n if (!validation) {\n error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error\n };\n}\n\nfunction toASCII(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false,\n processingOption = \"nontransitional\",\n verifyDNSLength = false\n} = {}) {\n if (processingOption !== \"transitional\" && processingOption !== \"nontransitional\") {\n throw new RangeError(\"processingOption must be either transitional or nontransitional\");\n }\n\n const result = processing(domainName, {\n processingOption,\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules\n });\n let labels = result.string.split(\".\");\n labels = labels.map(l => {\n if (containsNonASCII(l)) {\n try {\n return `xn--${punycode.encode(l)}`;\n } catch (e) {\n result.error = true;\n }\n }\n return l;\n });\n\n if (verifyDNSLength) {\n const total = labels.join(\".\").length;\n if (total > 253 || total === 0) {\n result.error = true;\n }\n\n for (let i = 0; i < labels.length; ++i) {\n if (labels[i].length > 63 || labels[i].length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) {\n return null;\n }\n return labels.join(\".\");\n}\n\nfunction toUnicode(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false,\n processingOption = \"nontransitional\"\n} = {}) {\n const result = processing(domainName, {\n processingOption,\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules\n });\n\n return {\n domain: result.string,\n error: result.error\n };\n}\n\nmodule.exports = {\n toASCII,\n toUnicode\n};\n","\"use strict\";\n\n// Note that we take code points as JS numbers, not JS strings.\n\nfunction isASCIIDigit(c) {\n return c >= 0x30 && c <= 0x39;\n}\n\nfunction isASCIIAlpha(c) {\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\n}\n\nfunction isASCIIAlphanumeric(c) {\n return isASCIIAlpha(c) || isASCIIDigit(c);\n}\n\nfunction isASCIIHex(c) {\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\n}\n\nmodule.exports = {\n isASCIIDigit,\n isASCIIAlpha,\n isASCIIAlphanumeric,\n isASCIIHex\n};\n","\"use strict\";\nconst utf8Encoder = new TextEncoder();\nconst utf8Decoder = new TextDecoder(\"utf-8\", { ignoreBOM: true });\n\nfunction utf8Encode(string) {\n return utf8Encoder.encode(string);\n}\n\nfunction utf8DecodeWithoutBOM(bytes) {\n return utf8Decoder.decode(bytes);\n}\n\nmodule.exports = {\n utf8Encode,\n utf8DecodeWithoutBOM\n};\n","\"use strict\";\nconst { isASCIIHex } = require(\"./infra\");\nconst { utf8Encode } = require(\"./encoding\");\n\nfunction p(char) {\n return char.codePointAt(0);\n}\n\n// https://url.spec.whatwg.org/#percent-encode\nfunction percentEncode(c) {\n let hex = c.toString(16).toUpperCase();\n if (hex.length === 1) {\n hex = `0${hex}`;\n }\n\n return `%${hex}`;\n}\n\n// https://url.spec.whatwg.org/#percent-decode\nfunction percentDecodeBytes(input) {\n const output = new Uint8Array(input.byteLength);\n let outputIndex = 0;\n for (let i = 0; i < input.byteLength; ++i) {\n const byte = input[i];\n if (byte !== 0x25) {\n output[outputIndex++] = byte;\n } else if (byte === 0x25 && (!isASCIIHex(input[i + 1]) || !isASCIIHex(input[i + 2]))) {\n output[outputIndex++] = byte;\n } else {\n const bytePoint = parseInt(String.fromCodePoint(input[i + 1], input[i + 2]), 16);\n output[outputIndex++] = bytePoint;\n i += 2;\n }\n }\n\n return output.slice(0, outputIndex);\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\nfunction percentDecodeString(input) {\n const bytes = utf8Encode(input);\n return percentDecodeBytes(bytes);\n}\n\n// https://url.spec.whatwg.org/#c0-control-percent-encode-set\nfunction isC0ControlPercentEncode(c) {\n return c <= 0x1F || c > 0x7E;\n}\n\n// https://url.spec.whatwg.org/#fragment-percent-encode-set\nconst extraFragmentPercentEncodeSet = new Set([p(\" \"), p(\"\\\"\"), p(\"<\"), p(\">\"), p(\"`\")]);\nfunction isFragmentPercentEncode(c) {\n return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#query-percent-encode-set\nconst extraQueryPercentEncodeSet = new Set([p(\" \"), p(\"\\\"\"), p(\"#\"), p(\"<\"), p(\">\")]);\nfunction isQueryPercentEncode(c) {\n return isC0ControlPercentEncode(c) || extraQueryPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#special-query-percent-encode-set\nfunction isSpecialQueryPercentEncode(c) {\n return isQueryPercentEncode(c) || c === p(\"'\");\n}\n\n// https://url.spec.whatwg.org/#path-percent-encode-set\nconst extraPathPercentEncodeSet = new Set([p(\"?\"), p(\"`\"), p(\"{\"), p(\"}\")]);\nfunction isPathPercentEncode(c) {\n return isQueryPercentEncode(c) || extraPathPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#userinfo-percent-encode-set\nconst extraUserinfoPercentEncodeSet =\n new Set([p(\"/\"), p(\":\"), p(\";\"), p(\"=\"), p(\"@\"), p(\"[\"), p(\"\\\\\"), p(\"]\"), p(\"^\"), p(\"|\")]);\nfunction isUserinfoPercentEncode(c) {\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#component-percent-encode-set\nconst extraComponentPercentEncodeSet = new Set([p(\"$\"), p(\"%\"), p(\"&\"), p(\"+\"), p(\",\")]);\nfunction isComponentPercentEncode(c) {\n return isUserinfoPercentEncode(c) || extraComponentPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set\nconst extraURLEncodedPercentEncodeSet = new Set([p(\"!\"), p(\"'\"), p(\"(\"), p(\")\"), p(\"~\")]);\nfunction isURLEncodedPercentEncode(c) {\n return isComponentPercentEncode(c) || extraURLEncodedPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#code-point-percent-encode-after-encoding\n// https://url.spec.whatwg.org/#utf-8-percent-encode\n// Assuming encoding is always utf-8 allows us to trim one of the logic branches. TODO: support encoding.\n// The \"-Internal\" variant here has code points as JS strings. The external version used by other files has code points\n// as JS numbers, like the rest of the codebase.\nfunction utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate) {\n const bytes = utf8Encode(codePoint);\n let output = \"\";\n for (const byte of bytes) {\n // Our percentEncodePredicate operates on bytes, not code points, so this is slightly different from the spec.\n if (!percentEncodePredicate(byte)) {\n output += String.fromCharCode(byte);\n } else {\n output += percentEncode(byte);\n }\n }\n\n return output;\n}\n\nfunction utf8PercentEncodeCodePoint(codePoint, percentEncodePredicate) {\n return utf8PercentEncodeCodePointInternal(String.fromCodePoint(codePoint), percentEncodePredicate);\n}\n\n// https://url.spec.whatwg.org/#string-percent-encode-after-encoding\n// https://url.spec.whatwg.org/#string-utf-8-percent-encode\nfunction utf8PercentEncodeString(input, percentEncodePredicate, spaceAsPlus = false) {\n let output = \"\";\n for (const codePoint of input) {\n if (spaceAsPlus && codePoint === \" \") {\n output += \"+\";\n } else {\n output += utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate);\n }\n }\n return output;\n}\n\nmodule.exports = {\n isC0ControlPercentEncode,\n isFragmentPercentEncode,\n isQueryPercentEncode,\n isSpecialQueryPercentEncode,\n isPathPercentEncode,\n isUserinfoPercentEncode,\n isURLEncodedPercentEncode,\n percentDecodeString,\n percentDecodeBytes,\n utf8PercentEncodeString,\n utf8PercentEncodeCodePoint\n};\n","\"use strict\";\nconst tr46 = require(\"tr46\");\n\nconst infra = require(\"./infra\");\nconst { utf8DecodeWithoutBOM } = require(\"./encoding\");\nconst { percentDecodeString, utf8PercentEncodeCodePoint, utf8PercentEncodeString, isC0ControlPercentEncode,\n isFragmentPercentEncode, isQueryPercentEncode, isSpecialQueryPercentEncode, isPathPercentEncode,\n isUserinfoPercentEncode } = require(\"./percent-encoding\");\n\nfunction p(char) {\n return char.codePointAt(0);\n}\n\nconst specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nconst failure = Symbol(\"failure\");\n\nfunction countSymbols(str) {\n return [...str].length;\n}\n\nfunction at(input, idx) {\n const c = input[idx];\n return isNaN(c) ? undefined : String.fromCodePoint(c);\n}\n\nfunction isSingleDot(buffer) {\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\n}\n\nfunction isDoubleDot(buffer) {\n buffer = buffer.toLowerCase();\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\n}\n\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\n return infra.isASCIIAlpha(cp1) && (cp2 === p(\":\") || cp2 === p(\"|\"));\n}\n\nfunction isWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\n}\n\nfunction isNormalizedWindowsDriveLetterString(string) {\n return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\n}\n\nfunction containsForbiddenHostCodePoint(string) {\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|<|>|\\?|@|\\[|\\\\|\\]|\\^|\\|/u) !== -1;\n}\n\nfunction containsForbiddenDomainCodePoint(string) {\n return containsForbiddenHostCodePoint(string) || string.search(/[\\u0000-\\u001F]|%|\\u007F/u) !== -1;\n}\n\nfunction isSpecialScheme(scheme) {\n return specialSchemes[scheme] !== undefined;\n}\n\nfunction isSpecial(url) {\n return isSpecialScheme(url.scheme);\n}\n\nfunction isNotSpecial(url) {\n return !isSpecialScheme(url.scheme);\n}\n\nfunction defaultPort(scheme) {\n return specialSchemes[scheme];\n}\n\nfunction parseIPv4Number(input) {\n if (input === \"\") {\n return failure;\n }\n\n let R = 10;\n\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\n input = input.substring(2);\n R = 16;\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\n input = input.substring(1);\n R = 8;\n }\n\n if (input === \"\") {\n return 0;\n }\n\n let regex = /[^0-7]/u;\n if (R === 10) {\n regex = /[^0-9]/u;\n }\n if (R === 16) {\n regex = /[^0-9A-Fa-f]/u;\n }\n\n if (regex.test(input)) {\n return failure;\n }\n\n return parseInt(input, R);\n}\n\nfunction parseIPv4(input) {\n const parts = input.split(\".\");\n if (parts[parts.length - 1] === \"\") {\n if (parts.length > 1) {\n parts.pop();\n }\n }\n\n if (parts.length > 4) {\n return failure;\n }\n\n const numbers = [];\n for (const part of parts) {\n const n = parseIPv4Number(part);\n if (n === failure) {\n return failure;\n }\n\n numbers.push(n);\n }\n\n for (let i = 0; i < numbers.length - 1; ++i) {\n if (numbers[i] > 255) {\n return failure;\n }\n }\n if (numbers[numbers.length - 1] >= 256 ** (5 - numbers.length)) {\n return failure;\n }\n\n let ipv4 = numbers.pop();\n let counter = 0;\n\n for (const n of numbers) {\n ipv4 += n * 256 ** (3 - counter);\n ++counter;\n }\n\n return ipv4;\n}\n\nfunction serializeIPv4(address) {\n let output = \"\";\n let n = address;\n\n for (let i = 1; i <= 4; ++i) {\n output = String(n % 256) + output;\n if (i !== 4) {\n output = `.${output}`;\n }\n n = Math.floor(n / 256);\n }\n\n return output;\n}\n\nfunction parseIPv6(input) {\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\n let pieceIndex = 0;\n let compress = null;\n let pointer = 0;\n\n input = Array.from(input, c => c.codePointAt(0));\n\n if (input[pointer] === p(\":\")) {\n if (input[pointer + 1] !== p(\":\")) {\n return failure;\n }\n\n pointer += 2;\n ++pieceIndex;\n compress = pieceIndex;\n }\n\n while (pointer < input.length) {\n if (pieceIndex === 8) {\n return failure;\n }\n\n if (input[pointer] === p(\":\")) {\n if (compress !== null) {\n return failure;\n }\n ++pointer;\n ++pieceIndex;\n compress = pieceIndex;\n continue;\n }\n\n let value = 0;\n let length = 0;\n\n while (length < 4 && infra.isASCIIHex(input[pointer])) {\n value = value * 0x10 + parseInt(at(input, pointer), 16);\n ++pointer;\n ++length;\n }\n\n if (input[pointer] === p(\".\")) {\n if (length === 0) {\n return failure;\n }\n\n pointer -= length;\n\n if (pieceIndex > 6) {\n return failure;\n }\n\n let numbersSeen = 0;\n\n while (input[pointer] !== undefined) {\n let ipv4Piece = null;\n\n if (numbersSeen > 0) {\n if (input[pointer] === p(\".\") && numbersSeen < 4) {\n ++pointer;\n } else {\n return failure;\n }\n }\n\n if (!infra.isASCIIDigit(input[pointer])) {\n return failure;\n }\n\n while (infra.isASCIIDigit(input[pointer])) {\n const number = parseInt(at(input, pointer));\n if (ipv4Piece === null) {\n ipv4Piece = number;\n } else if (ipv4Piece === 0) {\n return failure;\n } else {\n ipv4Piece = ipv4Piece * 10 + number;\n }\n if (ipv4Piece > 255) {\n return failure;\n }\n ++pointer;\n }\n\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\n\n ++numbersSeen;\n\n if (numbersSeen === 2 || numbersSeen === 4) {\n ++pieceIndex;\n }\n }\n\n if (numbersSeen !== 4) {\n return failure;\n }\n\n break;\n } else if (input[pointer] === p(\":\")) {\n ++pointer;\n if (input[pointer] === undefined) {\n return failure;\n }\n } else if (input[pointer] !== undefined) {\n return failure;\n }\n\n address[pieceIndex] = value;\n ++pieceIndex;\n }\n\n if (compress !== null) {\n let swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex !== 0 && swaps > 0) {\n const temp = address[compress + swaps - 1];\n address[compress + swaps - 1] = address[pieceIndex];\n address[pieceIndex] = temp;\n --pieceIndex;\n --swaps;\n }\n } else if (compress === null && pieceIndex !== 8) {\n return failure;\n }\n\n return address;\n}\n\nfunction serializeIPv6(address) {\n let output = \"\";\n const compress = findLongestZeroSequence(address);\n let ignore0 = false;\n\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\n if (ignore0 && address[pieceIndex] === 0) {\n continue;\n } else if (ignore0) {\n ignore0 = false;\n }\n\n if (compress === pieceIndex) {\n const separator = pieceIndex === 0 ? \"::\" : \":\";\n output += separator;\n ignore0 = true;\n continue;\n }\n\n output += address[pieceIndex].toString(16);\n\n if (pieceIndex !== 7) {\n output += \":\";\n }\n }\n\n return output;\n}\n\nfunction parseHost(input, isNotSpecialArg = false) {\n if (input[0] === \"[\") {\n if (input[input.length - 1] !== \"]\") {\n return failure;\n }\n\n return parseIPv6(input.substring(1, input.length - 1));\n }\n\n if (isNotSpecialArg) {\n return parseOpaqueHost(input);\n }\n\n const domain = utf8DecodeWithoutBOM(percentDecodeString(input));\n const asciiDomain = domainToASCII(domain);\n if (asciiDomain === failure) {\n return failure;\n }\n\n if (containsForbiddenDomainCodePoint(asciiDomain)) {\n return failure;\n }\n\n if (endsInANumber(asciiDomain)) {\n return parseIPv4(asciiDomain);\n }\n\n return asciiDomain;\n}\n\nfunction endsInANumber(input) {\n const parts = input.split(\".\");\n if (parts[parts.length - 1] === \"\") {\n if (parts.length === 1) {\n return false;\n }\n parts.pop();\n }\n\n const last = parts[parts.length - 1];\n if (parseIPv4Number(last) !== failure) {\n return true;\n }\n\n if (/^[0-9]+$/u.test(last)) {\n return true;\n }\n\n return false;\n}\n\nfunction parseOpaqueHost(input) {\n if (containsForbiddenHostCodePoint(input)) {\n return failure;\n }\n\n return utf8PercentEncodeString(input, isC0ControlPercentEncode);\n}\n\nfunction findLongestZeroSequence(arr) {\n let maxIdx = null;\n let maxLen = 1; // only find elements > 1\n let currStart = null;\n let currLen = 0;\n\n for (let i = 0; i < arr.length; ++i) {\n if (arr[i] !== 0) {\n if (currLen > maxLen) {\n maxIdx = currStart;\n maxLen = currLen;\n }\n\n currStart = null;\n currLen = 0;\n } else {\n if (currStart === null) {\n currStart = i;\n }\n ++currLen;\n }\n }\n\n // if trailing zeros\n if (currLen > maxLen) {\n return currStart;\n }\n\n return maxIdx;\n}\n\nfunction serializeHost(host) {\n if (typeof host === \"number\") {\n return serializeIPv4(host);\n }\n\n // IPv6 serializer\n if (host instanceof Array) {\n return `[${serializeIPv6(host)}]`;\n }\n\n return host;\n}\n\nfunction domainToASCII(domain, beStrict = false) {\n const result = tr46.toASCII(domain, {\n checkBidi: true,\n checkHyphens: false,\n checkJoiners: true,\n useSTD3ASCIIRules: beStrict,\n verifyDNSLength: beStrict\n });\n if (result === null || result === \"\") {\n return failure;\n }\n return result;\n}\n\nfunction trimControlChars(url) {\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/ug, \"\");\n}\n\nfunction trimTabAndNewline(url) {\n return url.replace(/\\u0009|\\u000A|\\u000D/ug, \"\");\n}\n\nfunction shortenPath(url) {\n const { path } = url;\n if (path.length === 0) {\n return;\n }\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\n return;\n }\n\n path.pop();\n}\n\nfunction includesCredentials(url) {\n return url.username !== \"\" || url.password !== \"\";\n}\n\nfunction cannotHaveAUsernamePasswordPort(url) {\n return url.host === null || url.host === \"\" || url.scheme === \"file\";\n}\n\nfunction hasAnOpaquePath(url) {\n return typeof url.path === \"string\";\n}\n\nfunction isNormalizedWindowsDriveLetter(string) {\n return /^[A-Za-z]:$/u.test(string);\n}\n\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\n this.pointer = 0;\n this.input = input;\n this.base = base || null;\n this.encodingOverride = encodingOverride || \"utf-8\";\n this.stateOverride = stateOverride;\n this.url = url;\n this.failure = false;\n this.parseError = false;\n\n if (!this.url) {\n this.url = {\n scheme: \"\",\n username: \"\",\n password: \"\",\n host: null,\n port: null,\n path: [],\n query: null,\n fragment: null\n };\n\n const res = trimControlChars(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n }\n\n const res = trimTabAndNewline(this.input);\n if (res !== this.input) {\n this.parseError = true;\n }\n this.input = res;\n\n this.state = stateOverride || \"scheme start\";\n\n this.buffer = \"\";\n this.atFlag = false;\n this.arrFlag = false;\n this.passwordTokenSeenFlag = false;\n\n this.input = Array.from(this.input, c => c.codePointAt(0));\n\n for (; this.pointer <= this.input.length; ++this.pointer) {\n const c = this.input[this.pointer];\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\n\n // exec state machine\n const ret = this[`parse ${this.state}`](c, cStr);\n if (!ret) {\n break; // terminate algorithm\n } else if (ret === failure) {\n this.failure = true;\n break;\n }\n }\n}\n\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\n if (infra.isASCIIAlpha(c)) {\n this.buffer += cStr.toLowerCase();\n this.state = \"scheme\";\n } else if (!this.stateOverride) {\n this.state = \"no scheme\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\n if (infra.isASCIIAlphanumeric(c) || c === p(\"+\") || c === p(\"-\") || c === p(\".\")) {\n this.buffer += cStr.toLowerCase();\n } else if (c === p(\":\")) {\n if (this.stateOverride) {\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\n return false;\n }\n\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\n return false;\n }\n\n if (this.url.scheme === \"file\" && this.url.host === \"\") {\n return false;\n }\n }\n this.url.scheme = this.buffer;\n if (this.stateOverride) {\n if (this.url.port === defaultPort(this.url.scheme)) {\n this.url.port = null;\n }\n return false;\n }\n this.buffer = \"\";\n if (this.url.scheme === \"file\") {\n if (this.input[this.pointer + 1] !== p(\"/\") || this.input[this.pointer + 2] !== p(\"/\")) {\n this.parseError = true;\n }\n this.state = \"file\";\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\n this.state = \"special relative or authority\";\n } else if (isSpecial(this.url)) {\n this.state = \"special authority slashes\";\n } else if (this.input[this.pointer + 1] === p(\"/\")) {\n this.state = \"path or authority\";\n ++this.pointer;\n } else {\n this.url.path = \"\";\n this.state = \"opaque path\";\n }\n } else if (!this.stateOverride) {\n this.buffer = \"\";\n this.state = \"no scheme\";\n this.pointer = -1;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\n if (this.base === null || (hasAnOpaquePath(this.base) && c !== p(\"#\"))) {\n return failure;\n } else if (hasAnOpaquePath(this.base) && c === p(\"#\")) {\n this.url.scheme = this.base.scheme;\n this.url.path = this.base.path;\n this.url.query = this.base.query;\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (this.base.scheme === \"file\") {\n this.state = \"file\";\n --this.pointer;\n } else {\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\n if (c === p(\"/\") && this.input[this.pointer + 1] === p(\"/\")) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"relative\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\n if (c === p(\"/\")) {\n this.state = \"authority\";\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\n this.url.scheme = this.base.scheme;\n if (c === p(\"/\")) {\n this.state = \"relative slash\";\n } else if (isSpecial(this.url) && c === p(\"\\\\\")) {\n this.parseError = true;\n this.state = \"relative slash\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (!isNaN(c)) {\n this.url.query = null;\n this.url.path.pop();\n this.state = \"path\";\n --this.pointer;\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\n if (isSpecial(this.url) && (c === p(\"/\") || c === p(\"\\\\\"))) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"special authority ignore slashes\";\n } else if (c === p(\"/\")) {\n this.state = \"authority\";\n } else {\n this.url.username = this.base.username;\n this.url.password = this.base.password;\n this.url.host = this.base.host;\n this.url.port = this.base.port;\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\n if (c === p(\"/\") && this.input[this.pointer + 1] === p(\"/\")) {\n this.state = \"special authority ignore slashes\";\n ++this.pointer;\n } else {\n this.parseError = true;\n this.state = \"special authority ignore slashes\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\n if (c !== p(\"/\") && c !== p(\"\\\\\")) {\n this.state = \"authority\";\n --this.pointer;\n } else {\n this.parseError = true;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\n if (c === p(\"@\")) {\n this.parseError = true;\n if (this.atFlag) {\n this.buffer = `%40${this.buffer}`;\n }\n this.atFlag = true;\n\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\n const len = countSymbols(this.buffer);\n for (let pointer = 0; pointer < len; ++pointer) {\n const codePoint = this.buffer.codePointAt(pointer);\n\n if (codePoint === p(\":\") && !this.passwordTokenSeenFlag) {\n this.passwordTokenSeenFlag = true;\n continue;\n }\n const encodedCodePoints = utf8PercentEncodeCodePoint(codePoint, isUserinfoPercentEncode);\n if (this.passwordTokenSeenFlag) {\n this.url.password += encodedCodePoints;\n } else {\n this.url.username += encodedCodePoints;\n }\n }\n this.buffer = \"\";\n } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n (isSpecial(this.url) && c === p(\"\\\\\"))) {\n if (this.atFlag && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n this.pointer -= countSymbols(this.buffer) + 1;\n this.buffer = \"\";\n this.state = \"host\";\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse hostname\"] =\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\n if (this.stateOverride && this.url.scheme === \"file\") {\n --this.pointer;\n this.state = \"file host\";\n } else if (c === p(\":\") && !this.arrFlag) {\n if (this.buffer === \"\") {\n this.parseError = true;\n return failure;\n }\n\n if (this.stateOverride === \"hostname\") {\n return false;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"port\";\n } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n (isSpecial(this.url) && c === p(\"\\\\\"))) {\n --this.pointer;\n if (isSpecial(this.url) && this.buffer === \"\") {\n this.parseError = true;\n return failure;\n } else if (this.stateOverride && this.buffer === \"\" &&\n (includesCredentials(this.url) || this.url.port !== null)) {\n this.parseError = true;\n return false;\n }\n\n const host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n\n this.url.host = host;\n this.buffer = \"\";\n this.state = \"path start\";\n if (this.stateOverride) {\n return false;\n }\n } else {\n if (c === p(\"[\")) {\n this.arrFlag = true;\n } else if (c === p(\"]\")) {\n this.arrFlag = false;\n }\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\n if (infra.isASCIIDigit(c)) {\n this.buffer += cStr;\n } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n (isSpecial(this.url) && c === p(\"\\\\\")) ||\n this.stateOverride) {\n if (this.buffer !== \"\") {\n const port = parseInt(this.buffer);\n if (port > 2 ** 16 - 1) {\n this.parseError = true;\n return failure;\n }\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\n this.buffer = \"\";\n }\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n --this.pointer;\n } else {\n this.parseError = true;\n return failure;\n }\n\n return true;\n};\n\nconst fileOtherwiseCodePoints = new Set([p(\"/\"), p(\"\\\\\"), p(\"?\"), p(\"#\")]);\n\nfunction startsWithWindowsDriveLetter(input, pointer) {\n const length = input.length - pointer;\n return length >= 2 &&\n isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&\n (length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));\n}\n\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\n this.url.scheme = \"file\";\n this.url.host = \"\";\n\n if (c === p(\"/\") || c === p(\"\\\\\")) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"file slash\";\n } else if (this.base !== null && this.base.scheme === \"file\") {\n this.url.host = this.base.host;\n this.url.path = this.base.path.slice();\n this.url.query = this.base.query;\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (!isNaN(c)) {\n this.url.query = null;\n if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {\n shortenPath(this.url);\n } else {\n this.parseError = true;\n this.url.path = [];\n }\n\n this.state = \"path\";\n --this.pointer;\n }\n } else {\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\n if (c === p(\"/\") || c === p(\"\\\\\")) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"file host\";\n } else {\n if (this.base !== null && this.base.scheme === \"file\") {\n if (!startsWithWindowsDriveLetter(this.input, this.pointer) &&\n isNormalizedWindowsDriveLetterString(this.base.path[0])) {\n this.url.path.push(this.base.path[0]);\n }\n this.url.host = this.base.host;\n }\n this.state = \"path\";\n --this.pointer;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\n if (isNaN(c) || c === p(\"/\") || c === p(\"\\\\\") || c === p(\"?\") || c === p(\"#\")) {\n --this.pointer;\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\n this.parseError = true;\n this.state = \"path\";\n } else if (this.buffer === \"\") {\n this.url.host = \"\";\n if (this.stateOverride) {\n return false;\n }\n this.state = \"path start\";\n } else {\n let host = parseHost(this.buffer, isNotSpecial(this.url));\n if (host === failure) {\n return failure;\n }\n if (host === \"localhost\") {\n host = \"\";\n }\n this.url.host = host;\n\n if (this.stateOverride) {\n return false;\n }\n\n this.buffer = \"\";\n this.state = \"path start\";\n }\n } else {\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\n if (isSpecial(this.url)) {\n if (c === p(\"\\\\\")) {\n this.parseError = true;\n }\n this.state = \"path\";\n\n if (c !== p(\"/\") && c !== p(\"\\\\\")) {\n --this.pointer;\n }\n } else if (!this.stateOverride && c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (!this.stateOverride && c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else if (c !== undefined) {\n this.state = \"path\";\n if (c !== p(\"/\")) {\n --this.pointer;\n }\n } else if (this.stateOverride && this.url.host === null) {\n this.url.path.push(\"\");\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\n if (isNaN(c) || c === p(\"/\") || (isSpecial(this.url) && c === p(\"\\\\\")) ||\n (!this.stateOverride && (c === p(\"?\") || c === p(\"#\")))) {\n if (isSpecial(this.url) && c === p(\"\\\\\")) {\n this.parseError = true;\n }\n\n if (isDoubleDot(this.buffer)) {\n shortenPath(this.url);\n if (c !== p(\"/\") && !(isSpecial(this.url) && c === p(\"\\\\\"))) {\n this.url.path.push(\"\");\n }\n } else if (isSingleDot(this.buffer) && c !== p(\"/\") &&\n !(isSpecial(this.url) && c === p(\"\\\\\"))) {\n this.url.path.push(\"\");\n } else if (!isSingleDot(this.buffer)) {\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\n this.buffer = `${this.buffer[0]}:`;\n }\n this.url.path.push(this.buffer);\n }\n this.buffer = \"\";\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n }\n if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += utf8PercentEncodeCodePoint(c, isPathPercentEncode);\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse opaque path\"] = function parseOpaquePath(c) {\n if (c === p(\"?\")) {\n this.url.query = \"\";\n this.state = \"query\";\n } else if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n } else {\n // TODO: Add: not a URL code point\n if (!isNaN(c) && c !== p(\"%\")) {\n this.parseError = true;\n }\n\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n if (!isNaN(c)) {\n this.url.path += utf8PercentEncodeCodePoint(c, isC0ControlPercentEncode);\n }\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\n this.encodingOverride = \"utf-8\";\n }\n\n if ((!this.stateOverride && c === p(\"#\")) || isNaN(c)) {\n const queryPercentEncodePredicate = isSpecial(this.url) ? isSpecialQueryPercentEncode : isQueryPercentEncode;\n this.url.query += utf8PercentEncodeString(this.buffer, queryPercentEncodePredicate);\n\n this.buffer = \"\";\n\n if (c === p(\"#\")) {\n this.url.fragment = \"\";\n this.state = \"fragment\";\n }\n } else if (!isNaN(c)) {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.buffer += cStr;\n }\n\n return true;\n};\n\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\n if (!isNaN(c)) {\n // TODO: If c is not a URL code point and not \"%\", parse error.\n if (c === p(\"%\") &&\n (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n this.parseError = true;\n }\n\n this.url.fragment += utf8PercentEncodeCodePoint(c, isFragmentPercentEncode);\n }\n\n return true;\n};\n\nfunction serializeURL(url, excludeFragment) {\n let output = `${url.scheme}:`;\n if (url.host !== null) {\n output += \"//\";\n\n if (url.username !== \"\" || url.password !== \"\") {\n output += url.username;\n if (url.password !== \"\") {\n output += `:${url.password}`;\n }\n output += \"@\";\n }\n\n output += serializeHost(url.host);\n\n if (url.port !== null) {\n output += `:${url.port}`;\n }\n }\n\n if (url.host === null && !hasAnOpaquePath(url) && url.path.length > 1 && url.path[0] === \"\") {\n output += \"/.\";\n }\n output += serializePath(url);\n\n if (url.query !== null) {\n output += `?${url.query}`;\n }\n\n if (!excludeFragment && url.fragment !== null) {\n output += `#${url.fragment}`;\n }\n\n return output;\n}\n\nfunction serializeOrigin(tuple) {\n let result = `${tuple.scheme}://`;\n result += serializeHost(tuple.host);\n\n if (tuple.port !== null) {\n result += `:${tuple.port}`;\n }\n\n return result;\n}\n\nfunction serializePath(url) {\n if (hasAnOpaquePath(url)) {\n return url.path;\n }\n\n let output = \"\";\n for (const segment of url.path) {\n output += `/${segment}`;\n }\n return output;\n}\n\nmodule.exports.serializeURL = serializeURL;\n\nmodule.exports.serializePath = serializePath;\n\nmodule.exports.serializeURLOrigin = function (url) {\n // https://url.spec.whatwg.org/#concept-url-origin\n switch (url.scheme) {\n case \"blob\":\n try {\n return module.exports.serializeURLOrigin(module.exports.parseURL(serializePath(url)));\n } catch (e) {\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n case \"ftp\":\n case \"http\":\n case \"https\":\n case \"ws\":\n case \"wss\":\n return serializeOrigin({\n scheme: url.scheme,\n host: url.host,\n port: url.port\n });\n case \"file\":\n // The spec says:\n // > Unfortunate as it is, this is left as an exercise to the reader. When in doubt, return a new opaque origin.\n // Browsers tested so far:\n // - Chrome says \"file://\", but treats file: URLs as cross-origin for most (all?) purposes; see e.g.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=37586\n // - Firefox says \"null\", but treats file: URLs as same-origin sometimes based on directory stuff; see\n // https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs\n return \"null\";\n default:\n // serializing an opaque origin returns \"null\"\n return \"null\";\n }\n};\n\nmodule.exports.basicURLParse = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\n if (usm.failure) {\n return null;\n }\n\n return usm.url;\n};\n\nmodule.exports.setTheUsername = function (url, username) {\n url.username = utf8PercentEncodeString(username, isUserinfoPercentEncode);\n};\n\nmodule.exports.setThePassword = function (url, password) {\n url.password = utf8PercentEncodeString(password, isUserinfoPercentEncode);\n};\n\nmodule.exports.serializeHost = serializeHost;\n\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\n\nmodule.exports.hasAnOpaquePath = hasAnOpaquePath;\n\nmodule.exports.serializeInteger = function (integer) {\n return String(integer);\n};\n\nmodule.exports.parseURL = function (input, options) {\n if (options === undefined) {\n options = {};\n }\n\n // We don't handle blobs, so this just delegates:\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\n};\n","\"use strict\";\nconst { utf8Encode, utf8DecodeWithoutBOM } = require(\"./encoding\");\nconst { percentDecodeBytes, utf8PercentEncodeString, isURLEncodedPercentEncode } = require(\"./percent-encoding\");\n\nfunction p(char) {\n return char.codePointAt(0);\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-parser\nfunction parseUrlencoded(input) {\n const sequences = strictlySplitByteSequence(input, p(\"&\"));\n const output = [];\n for (const bytes of sequences) {\n if (bytes.length === 0) {\n continue;\n }\n\n let name, value;\n const indexOfEqual = bytes.indexOf(p(\"=\"));\n\n if (indexOfEqual >= 0) {\n name = bytes.slice(0, indexOfEqual);\n value = bytes.slice(indexOfEqual + 1);\n } else {\n name = bytes;\n value = new Uint8Array(0);\n }\n\n name = replaceByteInByteSequence(name, 0x2B, 0x20);\n value = replaceByteInByteSequence(value, 0x2B, 0x20);\n\n const nameString = utf8DecodeWithoutBOM(percentDecodeBytes(name));\n const valueString = utf8DecodeWithoutBOM(percentDecodeBytes(value));\n\n output.push([nameString, valueString]);\n }\n return output;\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-string-parser\nfunction parseUrlencodedString(input) {\n return parseUrlencoded(utf8Encode(input));\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-serializer\nfunction serializeUrlencoded(tuples, encodingOverride = undefined) {\n let encoding = \"utf-8\";\n if (encodingOverride !== undefined) {\n // TODO \"get the output encoding\", i.e. handle encoding labels vs. names.\n encoding = encodingOverride;\n }\n\n let output = \"\";\n for (const [i, tuple] of tuples.entries()) {\n // TODO: handle encoding override\n\n const name = utf8PercentEncodeString(tuple[0], isURLEncodedPercentEncode, true);\n\n let value = tuple[1];\n if (tuple.length > 2 && tuple[2] !== undefined) {\n if (tuple[2] === \"hidden\" && name === \"_charset_\") {\n value = encoding;\n } else if (tuple[2] === \"file\") {\n // value is a File object\n value = value.name;\n }\n }\n\n value = utf8PercentEncodeString(value, isURLEncodedPercentEncode, true);\n\n if (i !== 0) {\n output += \"&\";\n }\n output += `${name}=${value}`;\n }\n return output;\n}\n\nfunction strictlySplitByteSequence(buf, cp) {\n const list = [];\n let last = 0;\n let i = buf.indexOf(cp);\n while (i >= 0) {\n list.push(buf.slice(last, i));\n last = i + 1;\n i = buf.indexOf(cp, last);\n }\n if (last !== buf.length) {\n list.push(buf.slice(last));\n }\n return list;\n}\n\nfunction replaceByteInByteSequence(buf, from, to) {\n let i = buf.indexOf(from);\n while (i >= 0) {\n buf[i] = to;\n i = buf.indexOf(from, i + 1);\n }\n return buf;\n}\n\nmodule.exports = {\n parseUrlencodedString,\n serializeUrlencoded\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (typeof value !== \"function\") {\n throw new globalObject.TypeError(context + \" is not a function\");\n }\n\n function invokeTheCallbackFunction(...args) {\n const thisArg = utils.tryWrapperForImpl(this);\n let callResult;\n\n for (let i = 0; i < args.length; i++) {\n args[i] = utils.tryWrapperForImpl(args[i]);\n }\n\n callResult = Reflect.apply(value, thisArg, args);\n\n callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n return callResult;\n }\n\n invokeTheCallbackFunction.construct = (...args) => {\n for (let i = 0; i < args.length; i++) {\n args[i] = utils.tryWrapperForImpl(args[i]);\n }\n\n let callResult = Reflect.construct(value, args);\n\n callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n return callResult;\n };\n\n invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n invokeTheCallbackFunction.objectReference = value;\n\n return invokeTheCallbackFunction;\n};\n","\"use strict\";\nconst urlencoded = require(\"./urlencoded\");\n\nexports.implementation = class URLSearchParamsImpl {\n constructor(globalObject, constructorArgs, { doNotStripQMark = false }) {\n let init = constructorArgs[0];\n this._list = [];\n this._url = null;\n\n if (!doNotStripQMark && typeof init === \"string\" && init[0] === \"?\") {\n init = init.slice(1);\n }\n\n if (Array.isArray(init)) {\n for (const pair of init) {\n if (pair.length !== 2) {\n throw new TypeError(\"Failed to construct 'URLSearchParams': parameter 1 sequence's element does not \" +\n \"contain exactly two elements.\");\n }\n this._list.push([pair[0], pair[1]]);\n }\n } else if (typeof init === \"object\" && Object.getPrototypeOf(init) === null) {\n for (const name of Object.keys(init)) {\n const value = init[name];\n this._list.push([name, value]);\n }\n } else {\n this._list = urlencoded.parseUrlencodedString(init);\n }\n }\n\n _updateSteps() {\n if (this._url !== null) {\n let serializedQuery = urlencoded.serializeUrlencoded(this._list);\n if (serializedQuery === \"\") {\n serializedQuery = null;\n }\n\n this._url._url.query = serializedQuery;\n\n if (serializedQuery === null) {\n this._url._potentiallyStripTrailingSpacesFromAnOpaquePath();\n }\n }\n }\n\n append(name, value) {\n this._list.push([name, value]);\n this._updateSteps();\n }\n\n delete(name) {\n let i = 0;\n while (i < this._list.length) {\n if (this._list[i][0] === name) {\n this._list.splice(i, 1);\n } else {\n i++;\n }\n }\n this._updateSteps();\n }\n\n get(name) {\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n return tuple[1];\n }\n }\n return null;\n }\n\n getAll(name) {\n const output = [];\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n output.push(tuple[1]);\n }\n }\n return output;\n }\n\n has(name) {\n for (const tuple of this._list) {\n if (tuple[0] === name) {\n return true;\n }\n }\n return false;\n }\n\n set(name, value) {\n let found = false;\n let i = 0;\n while (i < this._list.length) {\n if (this._list[i][0] === name) {\n if (found) {\n this._list.splice(i, 1);\n } else {\n found = true;\n this._list[i][1] = value;\n i++;\n }\n } else {\n i++;\n }\n }\n if (!found) {\n this._list.push([name, value]);\n }\n this._updateSteps();\n }\n\n sort() {\n this._list.sort((a, b) => {\n if (a[0] < b[0]) {\n return -1;\n }\n if (a[0] > b[0]) {\n return 1;\n }\n return 0;\n });\n\n this._updateSteps();\n }\n\n [Symbol.iterator]() {\n return this._list[Symbol.iterator]();\n }\n\n toString() {\n return urlencoded.serializeUrlencoded(this._list);\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Function = require(\"./Function.js\");\nconst newObjectInRealm = utils.newObjectInRealm;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"URLSearchParams\";\n\nexports.is = value => {\n return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (exports.is(value)) {\n return utils.implForWrapper(value);\n }\n throw new globalObject.TypeError(`${context} is not of type 'URLSearchParams'.`);\n};\n\nexports.createDefaultIterator = (globalObject, target, kind) => {\n const ctorRegistry = globalObject[ctorRegistrySymbol];\n const iteratorPrototype = ctorRegistry[\"URLSearchParams Iterator\"];\n const iterator = Object.create(iteratorPrototype);\n Object.defineProperty(iterator, utils.iterInternalSymbol, {\n value: { target, kind, index: 0 },\n configurable: true\n });\n return iterator;\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n let proto;\n if (newTarget !== undefined) {\n proto = newTarget.prototype;\n }\n\n if (!utils.isObject(proto)) {\n proto = globalObject[ctorRegistrySymbol][\"URLSearchParams\"].prototype;\n }\n\n return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n const wrapper = makeWrapper(globalObject);\n return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n const wrapper = exports.create(globalObject, constructorArgs, privateData);\n return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n privateData.wrapper = wrapper;\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: new Impl.implementation(globalObject, constructorArgs, privateData),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n const wrapper = makeWrapper(globalObject, newTarget);\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: Object.create(Impl.implementation.prototype),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n if (!globalNames.some(globalName => exposed.has(globalName))) {\n return;\n }\n\n const ctorRegistry = utils.initCtorRegistry(globalObject);\n class URLSearchParams {\n constructor() {\n const args = [];\n {\n let curArg = arguments[0];\n if (curArg !== undefined) {\n if (utils.isObject(curArg)) {\n if (curArg[Symbol.iterator] !== undefined) {\n if (!utils.isObject(curArg)) {\n throw new globalObject.TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = curArg;\n for (let nextItem of tmp) {\n if (!utils.isObject(nextItem)) {\n throw new globalObject.TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" +\n \" sequence\" +\n \"'s element\" +\n \" is not an iterable object.\"\n );\n } else {\n const V = [];\n const tmp = nextItem;\n for (let nextItem of tmp) {\n nextItem = conversions[\"USVString\"](nextItem, {\n context:\n \"Failed to construct 'URLSearchParams': parameter 1\" +\n \" sequence\" +\n \"'s element\" +\n \"'s element\",\n globals: globalObject\n });\n\n V.push(nextItem);\n }\n nextItem = V;\n }\n\n V.push(nextItem);\n }\n curArg = V;\n }\n } else {\n if (!utils.isObject(curArg)) {\n throw new globalObject.TypeError(\n \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \" is not an object.\"\n );\n } else {\n const result = Object.create(null);\n for (const key of Reflect.ownKeys(curArg)) {\n const desc = Object.getOwnPropertyDescriptor(curArg, key);\n if (desc && desc.enumerable) {\n let typedKey = key;\n\n typedKey = conversions[\"USVString\"](typedKey, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s key\",\n globals: globalObject\n });\n\n let typedValue = curArg[key];\n\n typedValue = conversions[\"USVString\"](typedValue, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s value\",\n globals: globalObject\n });\n\n result[typedKey] = typedValue;\n }\n }\n curArg = result;\n }\n }\n } else {\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to construct 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n }\n } else {\n curArg = \"\";\n }\n args.push(curArg);\n }\n return exports.setup(Object.create(new.target.prototype), globalObject, args);\n }\n\n append(name, value) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'append' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n if (arguments.length < 2) {\n throw new globalObject.TypeError(\n `Failed to execute 'append' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'append' on 'URLSearchParams': parameter 2\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].append(...args));\n }\n\n delete(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'delete' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'delete' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'delete' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].delete(...args));\n }\n\n get(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'get' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'get' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return esValue[implSymbol].get(...args);\n }\n\n getAll(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'getAll' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'getAll' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'getAll' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].getAll(...args));\n }\n\n has(name) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'has' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to execute 'has' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'has' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return esValue[implSymbol].has(...args);\n }\n\n set(name, value) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n if (arguments.length < 2) {\n throw new globalObject.TypeError(\n `Failed to execute 'set' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'set' on 'URLSearchParams': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to execute 'set' on 'URLSearchParams': parameter 2\",\n globals: globalObject\n });\n args.push(curArg);\n }\n return utils.tryWrapperForImpl(esValue[implSymbol].set(...args));\n }\n\n sort() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'sort' called on an object that is not a valid instance of URLSearchParams.\");\n }\n\n return utils.tryWrapperForImpl(esValue[implSymbol].sort());\n }\n\n toString() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\n \"'toString' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n\n return esValue[implSymbol].toString();\n }\n\n keys() {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\"'keys' called on an object that is not a valid instance of URLSearchParams.\");\n }\n return exports.createDefaultIterator(globalObject, this, \"key\");\n }\n\n values() {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\n \"'values' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n return exports.createDefaultIterator(globalObject, this, \"value\");\n }\n\n entries() {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\n \"'entries' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n return exports.createDefaultIterator(globalObject, this, \"key+value\");\n }\n\n forEach(callback) {\n if (!exports.is(this)) {\n throw new globalObject.TypeError(\n \"'forEach' called on an object that is not a valid instance of URLSearchParams.\"\n );\n }\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n \"Failed to execute 'forEach' on 'iterable': 1 argument required, but only 0 present.\"\n );\n }\n callback = Function.convert(globalObject, callback, {\n context: \"Failed to execute 'forEach' on 'iterable': The callback provided as parameter 1\"\n });\n const thisArg = arguments[1];\n let pairs = Array.from(this[implSymbol]);\n let i = 0;\n while (i < pairs.length) {\n const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n callback.call(thisArg, value, key, this);\n pairs = Array.from(this[implSymbol]);\n i++;\n }\n }\n }\n Object.defineProperties(URLSearchParams.prototype, {\n append: { enumerable: true },\n delete: { enumerable: true },\n get: { enumerable: true },\n getAll: { enumerable: true },\n has: { enumerable: true },\n set: { enumerable: true },\n sort: { enumerable: true },\n toString: { enumerable: true },\n keys: { enumerable: true },\n values: { enumerable: true },\n entries: { enumerable: true },\n forEach: { enumerable: true },\n [Symbol.toStringTag]: { value: \"URLSearchParams\", configurable: true },\n [Symbol.iterator]: { value: URLSearchParams.prototype.entries, configurable: true, writable: true }\n });\n ctorRegistry[interfaceName] = URLSearchParams;\n\n ctorRegistry[\"URLSearchParams Iterator\"] = Object.create(ctorRegistry[\"%IteratorPrototype%\"], {\n [Symbol.toStringTag]: {\n configurable: true,\n value: \"URLSearchParams Iterator\"\n }\n });\n utils.define(ctorRegistry[\"URLSearchParams Iterator\"], {\n next() {\n const internal = this && this[utils.iterInternalSymbol];\n if (!internal) {\n throw new globalObject.TypeError(\"next() called on a value that is not a URLSearchParams iterator object\");\n }\n\n const { target, kind, index } = internal;\n const values = Array.from(target[implSymbol]);\n const len = values.length;\n if (index >= len) {\n return newObjectInRealm(globalObject, { value: undefined, done: true });\n }\n\n const pair = values[index];\n internal.index = index + 1;\n return newObjectInRealm(globalObject, utils.iteratorResult(pair.map(utils.tryWrapperForImpl), kind));\n }\n });\n\n Object.defineProperty(globalObject, interfaceName, {\n configurable: true,\n writable: true,\n value: URLSearchParams\n });\n};\n\nconst Impl = require(\"./URLSearchParams-impl.js\");\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\nconst urlencoded = require(\"./urlencoded\");\nconst URLSearchParams = require(\"./URLSearchParams\");\n\nexports.implementation = class URLImpl {\n constructor(globalObject, constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === null) {\n throw new TypeError(`Invalid base URL: ${base}`);\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === null) {\n throw new TypeError(`Invalid URL: ${url}`);\n }\n\n const query = parsedURL.query !== null ? parsedURL.query : \"\";\n\n this._url = parsedURL;\n\n // We cannot invoke the \"new URLSearchParams object\" algorithm without going through the constructor, which strips\n // question mark by default. Therefore the doNotStripQMark hack is used.\n this._query = URLSearchParams.createImpl(globalObject, [query], { doNotStripQMark: true });\n this._query._url = this;\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === null) {\n throw new TypeError(`Invalid URL: ${v}`);\n }\n\n this._url = parsedURL;\n\n this._query._list.splice(0);\n const { query } = parsedURL;\n if (query !== null) {\n this._query._list = urlencoded.parseUrlencodedString(query);\n }\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return `${this._url.scheme}:`;\n }\n\n set protocol(v) {\n usm.basicURLParse(`${v}:`, { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return `${usm.serializeHost(url.host)}:${usm.serializeInteger(url.port)}`;\n }\n\n set host(v) {\n if (usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n return usm.serializePath(this._url);\n }\n\n set pathname(v) {\n if (usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return `?${this._url.query}`;\n }\n\n set search(v) {\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n this._query._list = [];\n this._potentiallyStripTrailingSpacesFromAnOpaquePath();\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n this._query._list = urlencoded.parseUrlencodedString(input);\n }\n\n get searchParams() {\n return this._query;\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return `#${this._url.fragment}`;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n this._potentiallyStripTrailingSpacesFromAnOpaquePath();\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n\n _potentiallyStripTrailingSpacesFromAnOpaquePath() {\n if (!usm.hasAnOpaquePath(this._url)) {\n return;\n }\n\n if (this._url.fragment !== null) {\n return;\n }\n\n if (this._url.query !== null) {\n return;\n }\n\n this._url.path = this._url.path.replace(/\\u0020+$/u, \"\");\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"URL\";\n\nexports.is = value => {\n return utils.isObject(value) && utils.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n if (exports.is(value)) {\n return utils.implForWrapper(value);\n }\n throw new globalObject.TypeError(`${context} is not of type 'URL'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n let proto;\n if (newTarget !== undefined) {\n proto = newTarget.prototype;\n }\n\n if (!utils.isObject(proto)) {\n proto = globalObject[ctorRegistrySymbol][\"URL\"].prototype;\n }\n\n return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n const wrapper = makeWrapper(globalObject);\n return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n const wrapper = exports.create(globalObject, constructorArgs, privateData);\n return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n privateData.wrapper = wrapper;\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: new Impl.implementation(globalObject, constructorArgs, privateData),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n const wrapper = makeWrapper(globalObject, newTarget);\n\n exports._internalSetup(wrapper, globalObject);\n Object.defineProperty(wrapper, implSymbol, {\n value: Object.create(Impl.implementation.prototype),\n configurable: true\n });\n\n wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n if (Impl.init) {\n Impl.init(wrapper[implSymbol]);\n }\n return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n if (!globalNames.some(globalName => exposed.has(globalName))) {\n return;\n }\n\n const ctorRegistry = utils.initCtorRegistry(globalObject);\n class URL {\n constructor(url) {\n if (arguments.length < 1) {\n throw new globalObject.TypeError(\n `Failed to construct 'URL': 1 argument required, but only ${arguments.length} present.`\n );\n }\n const args = [];\n {\n let curArg = arguments[0];\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to construct 'URL': parameter 1\",\n globals: globalObject\n });\n args.push(curArg);\n }\n {\n let curArg = arguments[1];\n if (curArg !== undefined) {\n curArg = conversions[\"USVString\"](curArg, {\n context: \"Failed to construct 'URL': parameter 2\",\n globals: globalObject\n });\n }\n args.push(curArg);\n }\n return exports.setup(Object.create(new.target.prototype), globalObject, args);\n }\n\n toJSON() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'toJSON' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol].toJSON();\n }\n\n get href() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get href' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"href\"];\n }\n\n set href(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set href' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'href' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"href\"] = V;\n }\n\n toString() {\n const esValue = this;\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'toString' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"href\"];\n }\n\n get origin() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get origin' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"origin\"];\n }\n\n get protocol() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get protocol' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"protocol\"];\n }\n\n set protocol(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set protocol' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'protocol' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"protocol\"] = V;\n }\n\n get username() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get username' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"username\"];\n }\n\n set username(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set username' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'username' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"username\"] = V;\n }\n\n get password() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get password' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"password\"];\n }\n\n set password(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set password' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'password' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"password\"] = V;\n }\n\n get host() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get host' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"host\"];\n }\n\n set host(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set host' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'host' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"host\"] = V;\n }\n\n get hostname() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get hostname' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"hostname\"];\n }\n\n set hostname(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set hostname' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'hostname' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"hostname\"] = V;\n }\n\n get port() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get port' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"port\"];\n }\n\n set port(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set port' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'port' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"port\"] = V;\n }\n\n get pathname() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get pathname' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"pathname\"];\n }\n\n set pathname(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set pathname' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'pathname' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"pathname\"] = V;\n }\n\n get search() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get search' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"search\"];\n }\n\n set search(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set search' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'search' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"search\"] = V;\n }\n\n get searchParams() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get searchParams' called on an object that is not a valid instance of URL.\");\n }\n\n return utils.getSameObject(this, \"searchParams\", () => {\n return utils.tryWrapperForImpl(esValue[implSymbol][\"searchParams\"]);\n });\n }\n\n get hash() {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'get hash' called on an object that is not a valid instance of URL.\");\n }\n\n return esValue[implSymbol][\"hash\"];\n }\n\n set hash(V) {\n const esValue = this !== null && this !== undefined ? this : globalObject;\n\n if (!exports.is(esValue)) {\n throw new globalObject.TypeError(\"'set hash' called on an object that is not a valid instance of URL.\");\n }\n\n V = conversions[\"USVString\"](V, {\n context: \"Failed to set the 'hash' property on 'URL': The provided value\",\n globals: globalObject\n });\n\n esValue[implSymbol][\"hash\"] = V;\n }\n }\n Object.defineProperties(URL.prototype, {\n toJSON: { enumerable: true },\n href: { enumerable: true },\n toString: { enumerable: true },\n origin: { enumerable: true },\n protocol: { enumerable: true },\n username: { enumerable: true },\n password: { enumerable: true },\n host: { enumerable: true },\n hostname: { enumerable: true },\n port: { enumerable: true },\n pathname: { enumerable: true },\n search: { enumerable: true },\n searchParams: { enumerable: true },\n hash: { enumerable: true },\n [Symbol.toStringTag]: { value: \"URL\", configurable: true }\n });\n ctorRegistry[interfaceName] = URL;\n\n Object.defineProperty(globalObject, interfaceName, {\n configurable: true,\n writable: true,\n value: URL\n });\n\n if (globalNames.includes(\"Window\")) {\n Object.defineProperty(globalObject, \"webkitURL\", {\n configurable: true,\n writable: true,\n value: URL\n });\n }\n};\n\nconst Impl = require(\"./URL-impl.js\");\n","\"use strict\";\n\nconst URL = require(\"./lib/URL\");\nconst URLSearchParams = require(\"./lib/URLSearchParams\");\n\nexports.URL = URL;\nexports.URLSearchParams = URLSearchParams;\n","\"use strict\";\n\nconst { URL, URLSearchParams } = require(\"./webidl2js-wrapper\");\nconst urlStateMachine = require(\"./lib/url-state-machine\");\nconst percentEncoding = require(\"./lib/percent-encoding\");\n\nconst sharedGlobalObject = { Array, Object, Promise, String, TypeError };\nURL.install(sharedGlobalObject, [\"Window\"]);\nURLSearchParams.install(sharedGlobalObject, [\"Window\"]);\n\nexports.URL = sharedGlobalObject.URL;\nexports.URLSearchParams = sharedGlobalObject.URLSearchParams;\n\nexports.parseURL = urlStateMachine.parseURL;\nexports.basicURLParse = urlStateMachine.basicURLParse;\nexports.serializeURL = urlStateMachine.serializeURL;\nexports.serializePath = urlStateMachine.serializePath;\nexports.serializeHost = urlStateMachine.serializeHost;\nexports.serializeInteger = urlStateMachine.serializeInteger;\nexports.serializeURLOrigin = urlStateMachine.serializeURLOrigin;\nexports.setTheUsername = urlStateMachine.setTheUsername;\nexports.setThePassword = urlStateMachine.setThePassword;\nexports.cannotHaveAUsernamePasswordPort = urlStateMachine.cannotHaveAUsernamePasswordPort;\nexports.hasAnOpaquePath = urlStateMachine.hasAnOpaquePath;\n\nexports.percentDecodeString = percentEncoding.percentDecodeString;\nexports.percentDecodeBytes = percentEncoding.percentDecodeBytes;\n","'use strict';\n\nmodule.exports = class SymbolTreeNode {\n constructor() {\n this.parent = null;\n this.previousSibling = null;\n this.nextSibling = null;\n\n this.firstChild = null;\n this.lastChild = null;\n\n /** This value is incremented anytime a children is added or removed */\n this.childrenVersion = 0;\n /** The last child object which has a cached index */\n this.childIndexCachedUpTo = null;\n\n /** This value represents the cached node index, as long as\n * cachedIndexVersion matches with the childrenVersion of the parent */\n this.cachedIndex = -1;\n this.cachedIndexVersion = NaN; // NaN is never equal to anything\n }\n\n get isAttached() {\n return Boolean(this.parent || this.previousSibling || this.nextSibling);\n }\n\n get hasChildren() {\n return Boolean(this.firstChild);\n }\n\n childrenChanged() {\n /* jshint -W016 */\n // integer wrap around\n this.childrenVersion = (this.childrenVersion + 1) & 0xFFFFFFFF;\n this.childIndexCachedUpTo = null;\n }\n\n getCachedIndex(parentNode) {\n // (assumes parentNode is actually the parent)\n if (this.cachedIndexVersion !== parentNode.childrenVersion) {\n this.cachedIndexVersion = NaN;\n // cachedIndex is no longer valid\n return -1;\n }\n\n return this.cachedIndex; // -1 if not cached\n }\n\n setCachedIndex(parentNode, index) {\n // (assumes parentNode is actually the parent)\n this.cachedIndexVersion = parentNode.childrenVersion;\n this.cachedIndex = index;\n }\n};\n","'use strict';\n\n/* eslint-disable sort-keys */\nmodule.exports = Object.freeze({\n // same as DOM DOCUMENT_POSITION_\n DISCONNECTED: 1,\n PRECEDING: 2,\n FOLLOWING: 4,\n CONTAINS: 8,\n CONTAINED_BY: 16,\n});\n","'use strict';\n\nconst TREE = Symbol();\nconst ROOT = Symbol();\nconst NEXT = Symbol();\nconst ITERATE_FUNC = Symbol();\n\nclass TreeIterator {\n constructor(tree, root, firstResult, iterateFunction) {\n this[TREE] = tree;\n this[ROOT] = root;\n this[NEXT] = firstResult;\n this[ITERATE_FUNC] = iterateFunction;\n }\n\n next() {\n const tree = this[TREE];\n const iterateFunc = this[ITERATE_FUNC];\n const root = this[ROOT];\n\n if (!this[NEXT]) {\n return {\n done: true,\n value: root,\n };\n }\n\n const value = this[NEXT];\n\n if (iterateFunc === 1) {\n this[NEXT] = tree._node(value).previousSibling;\n }\n else if (iterateFunc === 2) {\n this[NEXT] = tree._node(value).nextSibling;\n }\n else if (iterateFunc === 3) {\n this[NEXT] = tree._node(value).parent;\n }\n else if (iterateFunc === 4) {\n this[NEXT] = tree.preceding(value, {root: root});\n }\n else /* if (iterateFunc === 5)*/ {\n this[NEXT] = tree.following(value, {root: root});\n }\n\n return {\n done: false,\n value: value,\n };\n }\n}\n\nObject.defineProperty(TreeIterator.prototype, Symbol.iterator, {\n value: function() {\n return this;\n },\n writable: false,\n});\n\nTreeIterator.PREV = 1;\nTreeIterator.NEXT = 2;\nTreeIterator.PARENT = 3;\nTreeIterator.PRECEDING = 4;\nTreeIterator.FOLLOWING = 5;\n\nObject.freeze(TreeIterator);\nObject.freeze(TreeIterator.prototype);\n\nmodule.exports = TreeIterator;\n","'use strict';\n\n/**\n * @module symbol-tree\n * @author Joris van der Wel \n */\n\nconst SymbolTreeNode = require('./SymbolTreeNode');\nconst TreePosition = require('./TreePosition');\nconst TreeIterator = require('./TreeIterator');\n\nfunction returnTrue() {\n return true;\n}\n\nfunction reverseArrayIndex(array, reverseIndex) {\n return array[array.length - 1 - reverseIndex]; // no need to check `index >= 0`\n}\n\nclass SymbolTree {\n\n /**\n * @constructor\n * @alias module:symbol-tree\n * @param {string} [description='SymbolTree data'] Description used for the Symbol\n */\n constructor(description) {\n this.symbol = Symbol(description || 'SymbolTree data');\n }\n\n /**\n * You can use this function to (optionally) initialize an object right after its creation,\n * to take advantage of V8's fast properties. Also useful if you would like to\n * freeze your object.\n *\n * `O(1)`\n *\n * @method\n * @alias module:symbol-tree#initialize\n * @param {Object} object\n * @return {Object} object\n */\n initialize(object) {\n this._node(object);\n\n return object;\n }\n\n _node(object) {\n if (!object) {\n return null;\n }\n\n const node = object[this.symbol];\n\n if (node) {\n return node;\n }\n\n return (object[this.symbol] = new SymbolTreeNode());\n }\n\n /**\n * Returns `true` if the object has any children. Otherwise it returns `false`.\n *\n * * `O(1)`\n *\n * @method hasChildren\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Boolean}\n */\n hasChildren(object) {\n return this._node(object).hasChildren;\n }\n\n /**\n * Returns the first child of the given object.\n *\n * * `O(1)`\n *\n * @method firstChild\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n firstChild(object) {\n return this._node(object).firstChild;\n }\n\n /**\n * Returns the last child of the given object.\n *\n * * `O(1)`\n *\n * @method lastChild\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n lastChild(object) {\n return this._node(object).lastChild;\n }\n\n /**\n * Returns the previous sibling of the given object.\n *\n * * `O(1)`\n *\n * @method previousSibling\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n previousSibling(object) {\n return this._node(object).previousSibling;\n }\n\n /**\n * Returns the next sibling of the given object.\n *\n * * `O(1)`\n *\n * @method nextSibling\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n nextSibling(object) {\n return this._node(object).nextSibling;\n }\n\n /**\n * Return the parent of the given object.\n *\n * * `O(1)`\n *\n * @method parent\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n parent(object) {\n return this._node(object).parent;\n }\n\n /**\n * Find the inclusive descendant that is last in tree order of the given object.\n *\n * * `O(n)` (worst case) where `n` is the depth of the subtree of `object`\n *\n * @method lastInclusiveDescendant\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object}\n */\n lastInclusiveDescendant(object) {\n let lastChild;\n let current = object;\n\n while ((lastChild = this._node(current).lastChild)) {\n current = lastChild;\n }\n\n return current;\n }\n\n /**\n * Find the preceding object (A) of the given object (B).\n * An object A is preceding an object B if A and B are in the same tree\n * and A comes before B in tree order.\n *\n * * `O(n)` (worst case)\n * * `O(1)` (amortized when walking the entire tree)\n *\n * @method preceding\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @param {Object} [options]\n * @param {Object} [options.root] If set, `root` must be an inclusive ancestor\n * of the return value (or else null is returned). This check _assumes_\n * that `root` is also an inclusive ancestor of the given `object`\n * @return {?Object}\n */\n preceding(object, options) {\n const treeRoot = options && options.root;\n\n if (object === treeRoot) {\n return null;\n }\n\n const previousSibling = this._node(object).previousSibling;\n\n if (previousSibling) {\n return this.lastInclusiveDescendant(previousSibling);\n }\n\n // if there is no previous sibling return the parent (might be null)\n return this._node(object).parent;\n }\n\n /**\n * Find the following object (A) of the given object (B).\n * An object A is following an object B if A and B are in the same tree\n * and A comes after B in tree order.\n *\n * * `O(n)` (worst case) where `n` is the amount of objects in the entire tree\n * * `O(1)` (amortized when walking the entire tree)\n *\n * @method following\n * @memberOf module:symbol-tree#\n * @param {!Object} object\n * @param {Object} [options]\n * @param {Object} [options.root] If set, `root` must be an inclusive ancestor\n * of the return value (or else null is returned). This check _assumes_\n * that `root` is also an inclusive ancestor of the given `object`\n * @param {Boolean} [options.skipChildren=false] If set, ignore the children of `object`\n * @return {?Object}\n */\n following(object, options) {\n const treeRoot = options && options.root;\n const skipChildren = options && options.skipChildren;\n\n const firstChild = !skipChildren && this._node(object).firstChild;\n\n if (firstChild) {\n return firstChild;\n }\n\n let current = object;\n\n do {\n if (current === treeRoot) {\n return null;\n }\n\n const nextSibling = this._node(current).nextSibling;\n\n if (nextSibling) {\n return nextSibling;\n }\n\n current = this._node(current).parent;\n } while (current);\n\n return null;\n }\n\n /**\n * Append all children of the given object to an array.\n *\n * * `O(n)` where `n` is the amount of children of the given `parent`\n *\n * @method childrenToArray\n * @memberOf module:symbol-tree#\n * @param {Object} parent\n * @param {Object} [options]\n * @param {Object[]} [options.array=[]]\n * @param {Function} [options.filter] Function to test each object before it is added to the array.\n * Invoked with arguments (object). Should return `true` if an object\n * is to be included.\n * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n * @return {Object[]}\n */\n childrenToArray(parent, options) {\n const array = (options && options.array) || [];\n const filter = (options && options.filter) || returnTrue;\n const thisArg = (options && options.thisArg) || undefined;\n\n const parentNode = this._node(parent);\n let object = parentNode.firstChild;\n let index = 0;\n\n while (object) {\n const node = this._node(object);\n node.setCachedIndex(parentNode, index);\n\n if (filter.call(thisArg, object)) {\n array.push(object);\n }\n\n object = node.nextSibling;\n ++index;\n }\n\n return array;\n }\n\n /**\n * Append all inclusive ancestors of the given object to an array.\n *\n * * `O(n)` where `n` is the amount of ancestors of the given `object`\n *\n * @method ancestorsToArray\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @param {Object} [options]\n * @param {Object[]} [options.array=[]]\n * @param {Function} [options.filter] Function to test each object before it is added to the array.\n * Invoked with arguments (object). Should return `true` if an object\n * is to be included.\n * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n * @return {Object[]}\n */\n ancestorsToArray(object, options) {\n const array = (options && options.array) || [];\n const filter = (options && options.filter) || returnTrue;\n const thisArg = (options && options.thisArg) || undefined;\n\n let ancestor = object;\n\n while (ancestor) {\n if (filter.call(thisArg, ancestor)) {\n array.push(ancestor);\n }\n ancestor = this._node(ancestor).parent;\n }\n\n return array;\n }\n\n /**\n * Append all descendants of the given object to an array (in tree order).\n *\n * * `O(n)` where `n` is the amount of objects in the sub-tree of the given `object`\n *\n * @method treeToArray\n * @memberOf module:symbol-tree#\n * @param {Object} root\n * @param {Object} [options]\n * @param {Object[]} [options.array=[]]\n * @param {Function} [options.filter] Function to test each object before it is added to the array.\n * Invoked with arguments (object). Should return `true` if an object\n * is to be included.\n * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n * @return {Object[]}\n */\n treeToArray(root, options) {\n const array = (options && options.array) || [];\n const filter = (options && options.filter) || returnTrue;\n const thisArg = (options && options.thisArg) || undefined;\n\n let object = root;\n\n while (object) {\n if (filter.call(thisArg, object)) {\n array.push(object);\n }\n object = this.following(object, {root: root});\n }\n\n return array;\n }\n\n /**\n * Iterate over all children of the given object\n *\n * * `O(1)` for a single iteration\n *\n * @method childrenIterator\n * @memberOf module:symbol-tree#\n * @param {Object} parent\n * @param {Object} [options]\n * @param {Boolean} [options.reverse=false]\n * @return {Object} An iterable iterator (ES6)\n */\n childrenIterator(parent, options) {\n const reverse = options && options.reverse;\n const parentNode = this._node(parent);\n\n return new TreeIterator(\n this,\n parent,\n reverse ? parentNode.lastChild : parentNode.firstChild,\n reverse ? TreeIterator.PREV : TreeIterator.NEXT\n );\n }\n\n /**\n * Iterate over all the previous siblings of the given object. (in reverse tree order)\n *\n * * `O(1)` for a single iteration\n *\n * @method previousSiblingsIterator\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object} An iterable iterator (ES6)\n */\n previousSiblingsIterator(object) {\n return new TreeIterator(\n this,\n object,\n this._node(object).previousSibling,\n TreeIterator.PREV\n );\n }\n\n /**\n * Iterate over all the next siblings of the given object. (in tree order)\n *\n * * `O(1)` for a single iteration\n *\n * @method nextSiblingsIterator\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object} An iterable iterator (ES6)\n */\n nextSiblingsIterator(object) {\n return new TreeIterator(\n this,\n object,\n this._node(object).nextSibling,\n TreeIterator.NEXT\n );\n }\n\n /**\n * Iterate over all inclusive ancestors of the given object\n *\n * * `O(1)` for a single iteration\n *\n * @method ancestorsIterator\n * @memberOf module:symbol-tree#\n * @param {Object} object\n * @return {Object} An iterable iterator (ES6)\n */\n ancestorsIterator(object) {\n return new TreeIterator(\n this,\n object,\n object,\n TreeIterator.PARENT\n );\n }\n\n /**\n * Iterate over all descendants of the given object (in tree order).\n *\n * Where `n` is the amount of objects in the sub-tree of the given `root`:\n *\n * * `O(n)` (worst case for a single iteration)\n * * `O(n)` (amortized, when completing the iterator)\n *\n * @method treeIterator\n * @memberOf module:symbol-tree#\n * @param {Object} root\n * @param {Object} options\n * @param {Boolean} [options.reverse=false]\n * @return {Object} An iterable iterator (ES6)\n */\n treeIterator(root, options) {\n const reverse = options && options.reverse;\n\n return new TreeIterator(\n this,\n root,\n reverse ? this.lastInclusiveDescendant(root) : root,\n reverse ? TreeIterator.PRECEDING : TreeIterator.FOLLOWING\n );\n }\n\n /**\n * Find the index of the given object (the number of preceding siblings).\n *\n * * `O(n)` where `n` is the amount of preceding siblings\n * * `O(1)` (amortized, if the tree is not modified)\n *\n * @method index\n * @memberOf module:symbol-tree#\n * @param {Object} child\n * @return {Number} The number of preceding siblings, or -1 if the object has no parent\n */\n index(child) {\n const childNode = this._node(child);\n const parentNode = this._node(childNode.parent);\n\n if (!parentNode) {\n // In principal, you could also find out the number of preceding siblings\n // for objects that do not have a parent. This method limits itself only to\n // objects that have a parent because that lets us optimize more.\n return -1;\n }\n\n let currentIndex = childNode.getCachedIndex(parentNode);\n\n if (currentIndex >= 0) {\n return currentIndex;\n }\n\n currentIndex = 0;\n let object = parentNode.firstChild;\n\n if (parentNode.childIndexCachedUpTo) {\n const cachedUpToNode = this._node(parentNode.childIndexCachedUpTo);\n object = cachedUpToNode.nextSibling;\n currentIndex = cachedUpToNode.getCachedIndex(parentNode) + 1;\n }\n\n while (object) {\n const node = this._node(object);\n node.setCachedIndex(parentNode, currentIndex);\n\n if (object === child) {\n break;\n }\n\n ++currentIndex;\n object = node.nextSibling;\n }\n\n parentNode.childIndexCachedUpTo = child;\n\n return currentIndex;\n }\n\n /**\n * Calculate the number of children.\n *\n * * `O(n)` where `n` is the amount of children\n * * `O(1)` (amortized, if the tree is not modified)\n *\n * @method childrenCount\n * @memberOf module:symbol-tree#\n * @param {Object} parent\n * @return {Number}\n */\n childrenCount(parent) {\n const parentNode = this._node(parent);\n\n if (!parentNode.lastChild) {\n return 0;\n }\n\n return this.index(parentNode.lastChild) + 1;\n }\n\n /**\n * Compare the position of an object relative to another object. A bit set is returned:\n *\n *
    \n *
  • DISCONNECTED : 1
  • \n *
  • PRECEDING : 2
  • \n *
  • FOLLOWING : 4
  • \n *
  • CONTAINS : 8
  • \n *
  • CONTAINED_BY : 16
  • \n *
\n *\n * The semantics are the same as compareDocumentPosition in DOM, with the exception that\n * DISCONNECTED never occurs with any other bit.\n *\n * where `n` and `m` are the amount of ancestors of `left` and `right`;\n * where `o` is the amount of children of the lowest common ancestor of `left` and `right`:\n *\n * * `O(n + m + o)` (worst case)\n * * `O(n + m)` (amortized, if the tree is not modified)\n *\n * @method compareTreePosition\n * @memberOf module:symbol-tree#\n * @param {Object} left\n * @param {Object} right\n * @return {Number}\n */\n compareTreePosition(left, right) {\n // In DOM terms:\n // left = reference / context object\n // right = other\n\n if (left === right) {\n return 0;\n }\n\n /* jshint -W016 */\n\n const leftAncestors = []; { // inclusive\n let leftAncestor = left;\n\n while (leftAncestor) {\n if (leftAncestor === right) {\n return TreePosition.CONTAINS | TreePosition.PRECEDING;\n // other is ancestor of reference\n }\n\n leftAncestors.push(leftAncestor);\n leftAncestor = this.parent(leftAncestor);\n }\n }\n\n\n const rightAncestors = []; {\n let rightAncestor = right;\n\n while (rightAncestor) {\n if (rightAncestor === left) {\n return TreePosition.CONTAINED_BY | TreePosition.FOLLOWING;\n }\n\n rightAncestors.push(rightAncestor);\n rightAncestor = this.parent(rightAncestor);\n }\n }\n\n\n const root = reverseArrayIndex(leftAncestors, 0);\n\n if (!root || root !== reverseArrayIndex(rightAncestors, 0)) {\n // note: unlike DOM, preceding / following is not set here\n return TreePosition.DISCONNECTED;\n }\n\n // find the lowest common ancestor\n let commonAncestorIndex = 0;\n const ancestorsMinLength = Math.min(leftAncestors.length, rightAncestors.length);\n\n for (let i = 0; i < ancestorsMinLength; ++i) {\n const leftAncestor = reverseArrayIndex(leftAncestors, i);\n const rightAncestor = reverseArrayIndex(rightAncestors, i);\n\n if (leftAncestor !== rightAncestor) {\n break;\n }\n\n commonAncestorIndex = i;\n }\n\n // indexes within the common ancestor\n const leftIndex = this.index(reverseArrayIndex(leftAncestors, commonAncestorIndex + 1));\n const rightIndex = this.index(reverseArrayIndex(rightAncestors, commonAncestorIndex + 1));\n\n return rightIndex < leftIndex\n ? TreePosition.PRECEDING\n : TreePosition.FOLLOWING;\n }\n\n /**\n * Remove the object from this tree.\n * Has no effect if already removed.\n *\n * * `O(1)`\n *\n * @method remove\n * @memberOf module:symbol-tree#\n * @param {Object} removeObject\n * @return {Object} removeObject\n */\n remove(removeObject) {\n const removeNode = this._node(removeObject);\n const parentNode = this._node(removeNode.parent);\n const prevNode = this._node(removeNode.previousSibling);\n const nextNode = this._node(removeNode.nextSibling);\n\n if (parentNode) {\n if (parentNode.firstChild === removeObject) {\n parentNode.firstChild = removeNode.nextSibling;\n }\n\n if (parentNode.lastChild === removeObject) {\n parentNode.lastChild = removeNode.previousSibling;\n }\n }\n\n if (prevNode) {\n prevNode.nextSibling = removeNode.nextSibling;\n }\n\n if (nextNode) {\n nextNode.previousSibling = removeNode.previousSibling;\n }\n\n removeNode.parent = null;\n removeNode.previousSibling = null;\n removeNode.nextSibling = null;\n removeNode.cachedIndex = -1;\n removeNode.cachedIndexVersion = NaN;\n\n if (parentNode) {\n parentNode.childrenChanged();\n }\n\n return removeObject;\n }\n\n /**\n * Insert the given object before the reference object.\n * `newObject` is now the previous sibling of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method insertBefore\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n insertBefore(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const prevNode = this._node(referenceNode.previousSibling);\n const newNode = this._node(newObject);\n const parentNode = this._node(referenceNode.parent);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n newNode.parent = referenceNode.parent;\n newNode.previousSibling = referenceNode.previousSibling;\n newNode.nextSibling = referenceObject;\n referenceNode.previousSibling = newObject;\n\n if (prevNode) {\n prevNode.nextSibling = newObject;\n }\n\n if (parentNode && parentNode.firstChild === referenceObject) {\n parentNode.firstChild = newObject;\n }\n\n if (parentNode) {\n parentNode.childrenChanged();\n }\n\n return newObject;\n }\n\n /**\n * Insert the given object after the reference object.\n * `newObject` is now the next sibling of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method insertAfter\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n insertAfter(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const nextNode = this._node(referenceNode.nextSibling);\n const newNode = this._node(newObject);\n const parentNode = this._node(referenceNode.parent);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n newNode.parent = referenceNode.parent;\n newNode.previousSibling = referenceObject;\n newNode.nextSibling = referenceNode.nextSibling;\n referenceNode.nextSibling = newObject;\n\n if (nextNode) {\n nextNode.previousSibling = newObject;\n }\n\n if (parentNode && parentNode.lastChild === referenceObject) {\n parentNode.lastChild = newObject;\n }\n\n if (parentNode) {\n parentNode.childrenChanged();\n }\n\n return newObject;\n }\n\n /**\n * Insert the given object as the first child of the given reference object.\n * `newObject` is now the first child of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method prependChild\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n prependChild(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const newNode = this._node(newObject);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n if (referenceNode.hasChildren) {\n this.insertBefore(referenceNode.firstChild, newObject);\n }\n else {\n newNode.parent = referenceObject;\n referenceNode.firstChild = newObject;\n referenceNode.lastChild = newObject;\n referenceNode.childrenChanged();\n }\n\n return newObject;\n }\n\n /**\n * Insert the given object as the last child of the given reference object.\n * `newObject` is now the last child of `referenceObject`.\n *\n * * `O(1)`\n *\n * @method appendChild\n * @memberOf module:symbol-tree#\n * @param {Object} referenceObject\n * @param {Object} newObject\n * @throws {Error} If the newObject is already present in this SymbolTree\n * @return {Object} newObject\n */\n appendChild(referenceObject, newObject) {\n const referenceNode = this._node(referenceObject);\n const newNode = this._node(newObject);\n\n if (newNode.isAttached) {\n throw Error('Given object is already present in this SymbolTree, remove it first');\n }\n\n if (referenceNode.hasChildren) {\n this.insertAfter(referenceNode.lastChild, newObject);\n }\n else {\n newNode.parent = referenceObject;\n referenceNode.firstChild = newObject;\n referenceNode.lastChild = newObject;\n referenceNode.childrenChanged();\n }\n\n return newObject;\n }\n}\n\nmodule.exports = SymbolTree;\nSymbolTree.TreePosition = TreePosition;\n","\"use strict\";\nconst SymbolTree = require(\"symbol-tree\");\n\nexports.cloningSteps = Symbol(\"cloning steps\");\n\n// TODO: the many underscore-prefixed hooks should move here\n// E.g. _attrModified (which maybe should be split into its per-spec variants)\n\n/**\n * This SymbolTree is used to build the tree for all Node in a document\n */\nexports.domSymbolTree = new SymbolTree(\"DOM SymbolTree\");\n","export default {}","\"use strict\";\nconst path = require(\"path\");\nconst whatwgURL = require(\"whatwg-url\");\nconst { domSymbolTree } = require(\"./living/helpers/internal-constants\");\nconst SYMBOL_TREE_POSITION = require(\"symbol-tree\").TreePosition;\n\nexports.toFileUrl = function (fileName) {\n // Beyond just the `path.resolve`, this is mostly for the benefit of Windows,\n // where we need to convert \"\\\" to \"/\" and add an extra \"/\" prefix before the\n // drive letter.\n let pathname = path.resolve(process.cwd(), fileName).replace(/\\\\/g, \"/\");\n if (pathname[0] !== \"/\") {\n pathname = \"/\" + pathname;\n }\n\n // path might contain spaces, so convert those to %20\n return \"file://\" + encodeURI(pathname);\n};\n\n/**\n * Define a set of properties on an object, by copying the property descriptors\n * from the original object.\n *\n * - `object` {Object} the target object\n * - `properties` {Object} the source from which to copy property descriptors\n */\nexports.define = function define(object, properties) {\n for (const name of Object.getOwnPropertyNames(properties)) {\n const propDesc = Object.getOwnPropertyDescriptor(properties, name);\n Object.defineProperty(object, name, propDesc);\n }\n};\n\n/**\n * Define a list of constants on a constructor and its .prototype\n *\n * - `Constructor` {Function} the constructor to define the constants on\n * - `propertyMap` {Object} key/value map of properties to define\n */\nexports.addConstants = function addConstants(Constructor, propertyMap) {\n for (const property in propertyMap) {\n const value = propertyMap[property];\n addConstant(Constructor, property, value);\n addConstant(Constructor.prototype, property, value);\n }\n};\n\nfunction addConstant(object, property, value) {\n Object.defineProperty(object, property, {\n configurable: false,\n enumerable: true,\n writable: false,\n value\n });\n}\n\nexports.mixin = (target, source) => {\n const keys = Reflect.ownKeys(source);\n for (let i = 0; i < keys.length; ++i) {\n if (keys[i] in target) {\n continue;\n }\n\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nlet memoizeQueryTypeCounter = 0;\n\n/**\n * Returns a version of a method that memoizes specific types of calls on the object\n *\n * - `fn` {Function} the method to be memozied\n */\nexports.memoizeQuery = function memoizeQuery(fn) {\n // Only memoize query functions with arity <= 2\n if (fn.length > 2) {\n return fn;\n }\n\n const type = memoizeQueryTypeCounter++;\n\n return function (...args) {\n if (!this._memoizedQueries) {\n return fn.apply(this, args);\n }\n\n if (!this._memoizedQueries[type]) {\n this._memoizedQueries[type] = Object.create(null);\n }\n\n let key;\n if (args.length === 1 && typeof args[0] === \"string\") {\n key = args[0];\n } else if (args.length === 2 && typeof args[0] === \"string\" && typeof args[1] === \"string\") {\n key = args[0] + \"::\" + args[1];\n } else {\n return fn.apply(this, args);\n }\n\n if (!(key in this._memoizedQueries[type])) {\n this._memoizedQueries[type][key] = fn.apply(this, args);\n }\n return this._memoizedQueries[type][key];\n };\n};\n\nfunction isValidAbsoluteURL(str) {\n return whatwgURL.parseURL(str) !== null;\n}\n\nexports.isValidTargetOrigin = function (str) {\n return str === \"*\" || str === \"/\" || isValidAbsoluteURL(str);\n};\n\nexports.simultaneousIterators = function* (first, second) {\n for (;;) {\n const firstResult = first.next();\n const secondResult = second.next();\n\n if (firstResult.done && secondResult.done) {\n return;\n }\n\n yield [\n firstResult.done ? null : firstResult.value,\n secondResult.done ? null : secondResult.value\n ];\n }\n};\n\nexports.treeOrderSorter = function (a, b) {\n const compare = domSymbolTree.compareTreePosition(a, b);\n\n if (compare & SYMBOL_TREE_POSITION.PRECEDING) { // b is preceding a\n return 1;\n }\n\n if (compare & SYMBOL_TREE_POSITION.FOLLOWING) {\n return -1;\n }\n\n // disconnected or equal:\n return 0;\n};\n\n/* eslint-disable global-require */\ntry {\n exports.Canvas = require(\"canvas\");\n} catch {\n exports.Canvas = null;\n}\n","import {nodeDetachedFromDocument} from 'jsdom/lib/jsdom/living/named-properties-window.js';\n\nexport default class Utils {\n static repeat (times, iterator) {\n return Array(times).fill('').map((val, index) => iterator(index)).join('');\n }\n\n static setCssVariable(css, name, value) {\n const cssString = String(css);\n if (cssString.indexOf(`${name}:`) > -1) {\n return cssString.replace(new RegExp(`${name}:.*?(;|})`), `${name}: ${value}$1`);\n } else {\n return `* {${name}: ${value};} ${cssString}`;\n }\n }\n\n static classes(...list) {\n let classNames = [];\n let className;\n while (className = list.shift()) {\n if (!!list.shift()) classNames.push(className);\n }\n return classNames.join(' ');\n }\n\n static range(start, stop, step) {\n if (stop === null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n const length = Math.max(Math.ceil((stop - start) / step), 0);\n const range = Array(length);\n\n for (let idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n }\n\n static isBetween (num1, num2, num3) {\n if (num2 > num3) {\n return num1 <= num2 && num1 >= num3;\n } else {\n return num1 >= num2 && num1 <= num3;\n }\n }\n\n static makeDataUrl(data) {\n return `data:image/svg+xml,${encodeURIComponent(data)}`;\n }\n\n static xmlToObject(xmlString, options = {}) {\n const { arrays = [], exclude = [], booleans = [], numbers = [], preserveCapitals = false } = options;\n\n function formatName(name) {\n return preserveCapitals ? name : name.charAt(0).toLowerCase() + name.slice(1);\n }\n\n function convertType(name, value) {\n if (booleans.includes(name)) {\n return value.toLowerCase() === 'true';\n }\n if (numbers.includes(name)) {\n return Number(value);\n }\n return value;\n }\n\n const parser = new DOMParser();\n let dom;\n try {\n dom = parser.parseFromString(xmlString, 'application/xml');\n } catch (error) {\n console.log('ERROR: XmlToObject failed to parse XML');\n return null;\n }\n\n function parseNode(xmlNode, result) {\n let nodeName = xmlNode.nodeName;\n if (nodeName === \"#text\") {\n let v = xmlNode.nodeValue;\n if (v.trim()) result['#text'] = v;\n return;\n }\n\n if (exclude.indexOf(nodeName) !== -1) {\n return;\n }\n\n name = formatName(nodeName);\n\n let jsonNode = {},\n existing = result[name];\n if (existing) {\n if (!Array.isArray(existing)) result[name] = [existing, jsonNode];\n else result[name].push(jsonNode);\n }\n else {\n if (arrays.indexOf(nodeName) !== -1) result[name] = [jsonNode];\n else result[name] = jsonNode;\n }\n\n if (xmlNode.attributes) for (let attribute of xmlNode.attributes) jsonNode[formatName(attribute.nodeName)] = convertType(attribute.nodeName, attribute.nodeValue);\n\n for (let node of xmlNode.childNodes) parseNode(node, jsonNode);\n }\n\n let result = {};\n for (let node of dom.childNodes) parseNode(node, result);\n\n return result;\n }\n\n static doAndResizeSmoothly(element, action, endAnimationCallback = () => {}) {\n const startWidth = element.offsetWidth;\n const startHeight = element.offsetHeight;\n action();\n const childElement = element.firstElementChild;\n const childRect = childElement.getBoundingClientRect();\n const endWidth = element.offsetWidth;\n const endHeight = element.offsetHeight;\n const styleWidth = element.style.width;\n const styleHeight = element.style.height;\n const childStyleWidth = childElement.style.width;\n const childStyleHeight = childElement.style.height;\n const styleOverflow = element.style.overflow;\n element.style.overflow = 'hidden';\n element.style.width = startWidth + 'px';\n element.style.height = startHeight + 'px';\n element.style.transition = 'width 200ms, height 200ms';\n childElement.style.width = childRect.width + 'px';\n childElement.style.height = childRect.height + 'px';\n setTimeout(() => {\n element.style.width = endWidth + 'px';\n element.style.height = endHeight + 'px';\n });\n setTimeout(() => {\n element.style.width = styleWidth;\n element.style.height = styleHeight;\n element.style.overflow = styleOverflow;\n element.style.transition = 'none';\n childElement.style.width = childStyleWidth;\n childElement.style.height = childStyleHeight;\n endAnimationCallback();\n }, 201);\n }\n\n static makeDraggable(element, referenceElement = document.body) {\n class PositionInfo {\n constructor(dataObject) {\n this.pageX = dataObject.pageX;\n this.pageY = dataObject.pageY;\n this.screenX = dataObject.pageX;\n this.screenY = dataObject.pageY;\n this.clientX = dataObject.clientX;\n this.clientY = dataObject.clientY;\n this.target = dataObject.target;\n }\n }\n\n class dragController {\n constructor(element, referenceElement) {\n this._element = element;\n this._referenceElement = referenceElement;\n this._element.addEventListener('mousedown', this._onMouseDown);\n this._element.addEventListener('touchstart', this._onTouchStart, {passive: false});\n }\n\n _onMouseDown = (e) => {\n if (this._startHandler && this._startHandler(e, new PositionInfo(e), this) !== false) {\n this._referenceElement.addEventListener('mousemove', this._onMouseMove);\n this._referenceElement.addEventListener('mouseup', this._onMouseUp);\n this._referenceElement.addEventListener('mouseleave', this._onMouseLeave);\n }\n }\n\n _onMouseMove = (e) => {\n this._moveHandler && this._moveHandler(e, new PositionInfo(e), this);\n }\n\n _onMouseUp = (e) => {\n this._removeMouseEvents();\n this._endHandler && this._endHandler(e, this);\n }\n\n _onMouseLeave = (e) => {\n this._removeMouseEvents();\n this._exceptionHandler && this._exceptionHandler(e, this);\n }\n\n _removeMouseEvents() {\n this._referenceElement.removeEventListener('mousemove', this._onMouseMove);\n this._referenceElement.removeEventListener('mouseup', this._onMouseUp);\n this._referenceElement.removeEventListener('mouseleave', this._onMouseLeave);\n }\n\n\n _onTouchStart = (e) => {\n if (this._startHandler && this._startHandler(e, new PositionInfo(e.touches[0]), this) !== false) {\n this._referenceElement.addEventListener('touchmove', this._onTouchMove, {passive: false});\n this._referenceElement.addEventListener('touchend', this._onTouchEnd);\n this._referenceElement.addEventListener('touchcancel', this._onTouchCancel);\n }\n }\n\n _onTouchMove = (e) => {\n this._moveHandler && this._moveHandler(e, new PositionInfo(e.touches[0]), this);\n }\n\n _onTouchEnd = (e) => {\n this._removeTouchEvents();\n this._endHandler && this._endHandler(e, this);\n }\n\n _onTouchCancel = (e) => {\n this._removeTouchEvents();\n this._exceptionHandler && this._exceptionHandler(e, this);\n }\n\n _removeTouchEvents() {\n this._referenceElement.removeEventListener('touchmove', this._onTouchMove);\n this._referenceElement.removeEventListener('touchend', this._onTouchEnd);\n this._referenceElement.removeEventListener('touchcancel', this._onTouchCancel);\n }\n\n onStart(startHandler = (event, positionInfo, controller) => {return this}) {\n this._startHandler = startHandler;\n return this;\n }\n\n onMove(moveHandler = (event, positionInfo, controller) => {return this}) {\n this._moveHandler = moveHandler;\n return this;\n }\n\n onEnd(endHandler = (event, controller) => {return this}) {\n this._endHandler = endHandler;\n return this;\n }\n\n onException(exceptionHandler = (event, controller) => {return this}) {\n this._exceptionHandler = exceptionHandler;\n return this;\n }\n\n stopListening() {\n this._element.removeEventListener('mousedown', this._onMouseDown);\n this._element.removeEventListener('touchstart', this._onTouchStart);\n delete this._element;\n delete this._referenceElement;\n }\n }\n\n return new dragController(element, referenceElement);\n }\n\n static makeMovable(popupElement, dragHandleElement) {\n let startMousePos, startPopupPos;\n const handlers = {};\n this.makeDraggable(dragHandleElement)\n .onStart((evt, positionInfo) => {\n if (positionInfo.target === dragHandleElement) {\n evt.preventDefault();\n popupElement.style.top = popupElement.offsetTop + 'px';\n popupElement.style.left = popupElement.offsetLeft + 'px';\n popupElement.style.position = 'absolute';\n startMousePos = {\n x: positionInfo.pageX,\n y: positionInfo.pageY,\n };\n startPopupPos = {\n x: popupElement.offsetLeft,\n y: popupElement.offsetTop,\n };\n if (handlers.startHandler) {\n handlers.startHandler(evt, positionInfo);\n }\n return true;\n } else {\n return false;\n }\n })\n .onMove((evt, positionInfo) => {\n evt.preventDefault();\n const currentMousePos = {\n x: positionInfo.pageX,\n y: positionInfo.pageY,\n };\n const delta = {\n x: currentMousePos.x - startMousePos.x,\n y: currentMousePos.y - startMousePos.y,\n };\n popupElement.style.left = (startPopupPos.x + delta.x) + 'px';\n popupElement.style.top = (startPopupPos.y + delta.y) + 'px';\n if (handlers.moveHandler) {\n handlers.moveHandler(evt, positionInfo);\n }\n });\n return {\n onStart: handler => handlers.startHandler = handler,\n onMove: handler => handlers.moveHandler = handler,\n }\n }\n}\n","import { Model, Utils } from 'myassays-global';\n\nexport const operations = {\n ADD: 'add',\n SUBTRACT: 'subtract',\n MULTIPLY: 'multiply',\n DIVIDE: 'divide',\n}\nexport const operationsModes = {\n BOTH: 'op-mode-both',\n ADD_SUBTRACT: 'op-mode-add-subtract',\n MULTIPLY_DIVIDE: 'op-mode-multiply-divide',\n}\n\nconst template = id => `\\\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n \n
`;\n\n\nexport default class SeriesEditorView extends EventTarget {\n static get uniqueId() {\n if (this._uniqueIdCounter === undefined) {\n this._uniqueIdCounter = 1;\n } else {\n this._uniqueIdCounter++;\n }\n return `--series-editor-view-${this._uniqueIdCounter}-`;\n }\n static events = {\n STATE_CHANGE: 'SeriesEditorView.statechange',\n }\n static defaultState = {\n open: undefined,\n operation: undefined,\n operatorMode: undefined,\n addSubtractOperand: undefined,\n multiplyDivideOperand: undefined,\n }\n constructor(rootElement, open, operation, operatorMode, addSubtractOperand, multiplyDivideOperand) {\n super();\n this._root = rootElement;\n this._root.innerHTML = template(SeriesEditorView.uniqueId);\n this._root.classList.add(`series-editor`);\n this._state = new Model(SeriesEditorView.defaultState);\n this._state.addEventListener('change', this.onStateChange);\n\n this._state.set({\n open,\n operation,\n operatorMode,\n addSubtractOperand,\n multiplyDivideOperand,\n });\n this.addControlListeners();\n }\n\n addControlListeners() {\n this._root.querySelector('[name=\"open-series-editor\"]').addEventListener('change', this.onOpenChange);\n Array.from(this._root.querySelectorAll('[name=\"operation\"]')).forEach(elem => {\n elem.addEventListener('click', this.onOperationClick)\n });\n const operand = this._root.querySelector('[name=\"series-operand\"]');\n operand.addEventListener('change', this.onOperandChange);\n operand.addEventListener('blur', this.onOperandChange);\n operand.addEventListener('input', this.onOperandInput);\n }\n\n onOperationClick = evt => {\n const value = evt.target.value;\n this._state.set({operation: value});\n }\n\n onOpenChange = evt => {\n const editorControls = this._root.querySelector(`.editor-controls`);\n Utils.doAndResizeSmoothly(this._root, () => {\n this.toggleOpen();\n });\n }\n\n toggleOpen() {\n this._state.set({open: !this._state.get('open')});\n }\n\n onOperandChange = evt => {\n let valid = true;\n const op = this._state.get('operation');\n const attrName = (op === operations.ADD || op === operations.SUBTRACT ? 'addSubtractOperand' : 'multiplyDivideOperand');\n const minValue = (attrName === 'addSubtractOperand' ? 0 : 1);\n const { value } = evt.target;\n const numericValue = parseFloat(value);\n if (isNaN(numericValue) || numericValue < minValue) {\n valid = false;\n }\n evt.target.classList.toggle(`invalid`, !valid);\n if (valid) {\n this._state.set({[attrName]: numericValue});\n evt.target.value = numericValue;\n } else {\n evt.target.focus();\n }\n }\n\n onOperandInput = evt => {\n evt.target.classList.toggle(`invalid`, false);\n }\n\n onStateChange = evt => {\n const toggleClass = (selector, className, force) => {\n this._root.querySelector(selector).classList.toggle(className, force);\n }\n const updateOperandValue = () => {\n const op = this._state.get('operation');\n const operandValue = this._state.get(op === operations.ADD || op === operations.SUBTRACT ? 'addSubtractOperand' : 'multiplyDivideOperand');\n const operand = this._root.querySelector('[name=\"series-operand\"]');\n operand.value = operandValue;\n }\n this._state.hasChanged('open', newValue => {\n const openButton = this._root.querySelector('[name=\"open-series-editor\"]');\n const editorControls = this._root.querySelector(`.editor-controls`);\n editorControls.classList.toggle(`open`, newValue);\n openButton.toggleAttribute('checked', newValue);\n });\n this._state.hasChanged('operatorMode', newValue => {\n toggleClass(`[value=\"${operations.ADD}\"]`, `hidden`, newValue === operationsModes.MULTIPLY_DIVIDE);\n toggleClass(`[value=\"${operations.SUBTRACT}\"]`, `hidden`, newValue === operationsModes.MULTIPLY_DIVIDE);\n toggleClass(`[value=\"${operations.MULTIPLY}\"]`, `hidden`, newValue === operationsModes.ADD_SUBTRACT);\n toggleClass(`[value=\"${operations.DIVIDE}\"]`, `hidden`, newValue === operationsModes.ADD_SUBTRACT);\n });\n this._state.hasChanged('addSubtractOperand', newValue => {\n updateOperandValue();\n });\n this._state.hasChanged('multiplyDivideOperand', newValue => {\n updateOperandValue();\n });\n this._state.hasChanged('operation', (newValue, previousValue) => {\n [operations.ADD, operations.SUBTRACT, operations.MULTIPLY, operations.DIVIDE].forEach(name => {\n this._root.querySelector(`[value=\"${name}\"]`).toggleAttribute('checked', name === newValue);\n });\n updateOperandValue();\n\n if (previousValue !== undefined) {\n const operand = this._root.querySelector('[name=\"series-operand\"]');\n operand.select();\n }\n });\n\n this.dispatchEvent(new CustomEvent(SeriesEditorView.events.STATE_CHANGE, {\n detail: this._state,\n }));\n }\n\n get state() {\n return this._state.attributes;\n }\n\n setState(attributes) {\n this._state.set(attributes);\n }\n}\n","import Model from '../Model.js';\n\nconst isMacLike = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\nclass BlazorCompatibleEvent extends CustomEvent {\n constructor(type, options) {\n super(type, {...options, bubbles: true});\n }\n}\n\nexport const dataTypes = {\n LABEL: 'label', // name label\n LABEL_WITH_TYPE: 'label-with-type', // name label with type icon\n STRING: 'string', // any string\n NUMERIC: 'numeric', // numeric only\n}\n\nexport const editModes = {\n NONE: 'none', // no cells editable\n ALL: 'all', // all cells editable\n FIRST_CELL: 'first-cell', // only first cell editable\n}\n\nconst template = state => {\n const showPasteButtonRow = state.showPasteButtons && state.columns.filter(column => (column.editMode === editModes.ALL || column.editMode === editModes.FIRST_CELL)).length > 0;\n const getClasses = (column, col, section) => `${section} ${column.dataType} ${col === 0 ? `first` : ''}`;\n\n return `\\\n\n \n \n ${state.columns.map((column, col) => `\\\n `).join('')}\n \n \n \n ${state.items.map((item, row) => `${\n state.columns.map((column, col) => {\n const classes = `detail ${column.dataType} ${row === state.selectedRowIndex ? `selected bg-primary-subtle text-primary-emphasis` : ''}`;\n if (\n column.editMode === editModes.ALL ||\n (column.editMode === editModes.FIRST_CELL && row === 0)\n ) {\n // editable cell\n return ``;\n } else if (\n column.dataType === dataTypes.LABEL_WITH_TYPE\n ) {\n // display only cell with type icons\n return ``;\n } else {\n // display only cell\n return ``;\n }\n }).join('')\n }`).join('')}\n ${showPasteButtonRow ? `${state.columns.map((column, col) => `\\\n `).join('')}` : ''}\n \n
${column.heading || ' '}
${item[column.name] || ' '} ${String(item[column.name]).trim() === '' ? ' ' : item[column.name]}${String(item[column.name]).trim() === '' ? ' ' : item[column.name]}
${column.editMode === editModes.ALL || column.editMode === editModes.FIRST_CELL ? `` : ' '}
`;\n}\n\n\nexport default class ParamsTableView extends EventTarget {\n static dataTypes = dataTypes\n static editModes = editModes\n static events = {\n STATE_CHANGE: 'ParamsTableView.statechange',\n CELL_CHANGE: 'ParamsTableView.cellchange',\n CELL_PASTE: 'ParamsTableView.cellpaste',\n ERROR: 'ParamsTableView.error',\n }\n\n static errorCodes = {\n PASTE_NOT_ALLOWED: 'paste-not-allowed',\n PASTE_INVALID_DATA_TYPE: 'paste-invalid-data-type',\n PASTE_MISMATCHED_ROWS: 'paste-mismatched-rows',\n INVALID_ATTRIBUTE: 'invalid-attribute',\n }\n\n static defaultState = {\n selectable: false, // if true, clicking on a cell will select that row\n showPasteButtons: true, // if true, any editable columns will have a paste button below\n pasteAllowed: !!navigator && !!navigator.clipboard && !!navigator.clipboard.readText,\n selectedRowIndex: -1, // index of selected row\n columns: [], // column config {name, heading, dataType, editMode}\n typeColour: '', // colour of icon\n items: [], // the row data\n }\n\n static get options() {\n class Options {\n _options = {\n items: [],\n selectable: false,\n selectedRowIndex: -1,\n showPasteButtons: true,\n };\n rootElement(value) {\n this._options.rootElement = value;\n return this;\n }\n columns(value) {\n this._options.columns = value;\n return this;\n }\n typeColour(value) {\n this._options.typeColour = value;\n return this;\n }\n items(value) {\n this._options.items = value;\n return this;\n }\n selectable(value) {\n this._options.selectable = value;\n return this;\n }\n selectedRowIndex(value) {\n this._options.selectedRowIndex = value;\n return this;\n }\n showPasteButtons(value) {\n this._options.showPasteButtons = value;\n return this;\n }\n\n createInstance() {\n return new ParamsTableView(this._options);\n }\n }\n return new Options();\n }\n\n constructor(options) {\n super();\n const { rootElement, columns, typeColour, items, selectable, selectedRowIndex, showPasteButtons } = options;\n this._root = rootElement;\n this._state = new Model(ParamsTableView.defaultState);\n this._state.addEventListener('change', this.onStateChange);\n this._state.set({\n selectable,\n showPasteButtons,\n selectedRowIndex,\n columns,\n typeColour,\n items,\n });\n }\n\n render() {\n const state = this.state;\n this._root.innerHTML = template(state);\n this.addControlListeners();\n }\n\n addControlListeners() {\n this._root.querySelectorAll('.table input').forEach(input => {\n input.addEventListener('focus', this.onCellFocus);\n input.addEventListener('blur', this.onCellBlur);\n input.addEventListener('change', this.onCellChange);\n input.addEventListener('input', this.onCellInput);\n input.addEventListener('keydown', this.onCellKeyDown);\n input.addEventListener('paste', this.onCellPaste);\n });\n if (this._state.get('selectable')) {\n this._root.querySelectorAll('.table .display-only').forEach(input => {\n input.addEventListener('click', this.onDisplayOnlyClick);\n });\n }\n if (this._state.get('showPasteButtons')) {\n this._root.querySelectorAll('button.paste').forEach(button => {\n button.addEventListener('focus', this.onPasteFocus);\n button.addEventListener('click', this.onPasteClick);\n });\n }\n }\n\n onPasteFocus = evt => {\n this._currentCell = null;\n const { relatedTarget } = evt;\n if (relatedTarget && relatedTarget.classList.contains(`table-cell-input`)) {\n this._currentCell = relatedTarget;\n }\n }\n\n onPasteClick = evt => {\n const { target } = evt;\n const columnName = target.getAttribute('data-column-name');\n this.pasteIntoColumn(columnName);\n }\n\n pasteIntoColumn(columnName) {\n if (this._state.get('pasteAllowed')) {\n const row = this._currentCell && this._currentCell.getAttribute('data-name') === columnName ? Number(this._currentCell.getAttribute('data-row')) : null;\n this._currentCell = null;\n navigator.clipboard\n .readText()\n .then(clipText => {\n try {\n this.pasteText(clipText, columnName, row);\n } catch (error) {\n this.dispatchErrorEvent(error);\n }\n });\n } else {\n this.dispatchErrorEvent(Error(`Not available in this browser, please select a cell and paste using ${isMacLike ? 'Cmd' : 'Ctrl'}-V`, {cause: {code: ParamsTableView.errorCodes.PASTE_NOT_ALLOWED}}));\n }\n }\n\n pasteText(text, columnName, row = 0) {\n const { columns, items } = this._state.attributes;\n const column = columns.find(column => column.name === columnName);\n const pastedItems = text.trim().split(/ *\\n */).map(line => line.split(/ *\\t */));\n\n // data should be of correct type\n if (column.dataType === dataTypes.NUMERIC) {\n pastedItems.forEach(row => row.forEach((item, i, array) => {\n const numberValue = Number(item);\n if (isNaN(numberValue)) {\n throw Error('Clipboard data should be numeric', {cause: {code: ParamsTableView.errorCodes.PASTE_INVALID_DATA_TYPE}});\n }\n array[i] = numberValue;\n }));\n }\n\n const cellChanges = [];\n pastedItems.forEach((rowItem, r) => {\n const rowIndex = row + r;\n const item = items[rowIndex];\n if (item && !(column.editMode === editModes.FIRST_CELL && r > 0)) {\n const previousValue = item[columnName];\n const value = pastedItems[r][0];\n const newValue = column.dataType === dataTypes.NUMERIC ? Number(value) : value;\n item[columnName] = newValue;\n cellChanges.push({\n rowIndex,\n columnName,\n newValue,\n previousValue,\n })\n }\n });\n this.items = items;\n cellChanges.forEach(change => {\n this.dispatchEvent(new CustomEvent(ParamsTableView.events.CELL_CHANGE, {\n detail: change,\n }));\n })\n }\n\n onCellPaste = evt => {\n evt.preventDefault();\n const { target, clipboardData } = evt;\n const row = Number(target.getAttribute('data-row'));\n const name = target.getAttribute('data-name');\n const clipboardText = (clipboardData || window.clipboardData).getData('text');\n const eventToDispatch = new CustomEvent(ParamsTableView.events.CELL_PASTE, {\n detail: {\n row,\n name,\n clipboardText,\n }\n });\n this.dispatchEvent(eventToDispatch);\n if (!eventToDispatch.defaultPrevented) {\n try {\n this.pasteText(clipboardText, name, row);\n } catch (error) {\n this.dispatchErrorEvent(error);\n }\n }\n }\n\n dispatchErrorEvent(error) {\n const event = new BlazorCompatibleEvent(ParamsTableView.events.ERROR, {\n detail: error,\n cancelable: true,\n });\n this.dispatchEvent(event) && alert(error.message);\n }\n\n _changeCell(name, row, value) {\n const items = this.items;\n const input = this._root.querySelector(`input[data-name=\"${name}\"][data-row=\"${row}\"]`);\n const dataType = this._state.get('columns').find(item => item.name === name).dataType;\n const previousValue = items[row][name];\n if (dataType === dataTypes.NUMERIC) {\n const numericValue = Number(value);\n if (isNaN(numericValue)) {\n input && (input.value = this.items[row][name]);\n } else {\n items[row][name] = numericValue;\n this.items = items;\n this.dispatchEvent(new CustomEvent(ParamsTableView.events.CELL_CHANGE, {\n detail: {\n rowIndex: row,\n columnName: name,\n newValue: numericValue,\n previousValue,\n },\n }));\n input && (input.value = numericValue);\n }\n } else {\n items[row][name] = value;\n this.items = items;\n this.dispatchEvent(new CustomEvent(ParamsTableView.events.CELL_CHANGE, {\n detail: {\n rowIndex: row,\n columnName: name,\n newValue: value,\n previousValue,\n },\n }));\n }\n }\n\n onCellChange = evt => {\n this.onCellInput(evt);\n const input = evt.target;\n const value = evt.target.value;\n const row = Number(input.getAttribute('data-row'));\n const name = input.getAttribute('data-name');\n setTimeout(() => {\n const focussedCell = this._focussedCell;\n\n this._changeCell(name, row, value);\n\n if (focussedCell) {\n const input = this._root.querySelector(`input[data-row=\"${focussedCell.row}\"][data-name=\"${focussedCell.name}\"]`);\n if (input) {\n input.focus();\n input.select();\n }\n }\n }, 1);\n }\n\n onCellInput = evt => {\n const input = evt.target;\n const cell = input.parentElement;\n const span = cell.querySelector(`span.label`);\n span.innerHTML = (input.value.replace(/ /g, ' ') || ' ');\n }\n\n onCellFocus = evt => {\n const input = evt.target;\n const row = Number(input.getAttribute('data-row'));\n const name = input.getAttribute('data-name');\n this._focussedCell = {row, name};\n input.select();\n if (this._state.get('selectable')) {\n this._state.set({selectedRowIndex: Number(input.getAttribute('data-row'))});\n }\n }\n\n onCellBlur = evt => {\n this._focussedCell = undefined;\n }\n\n onCellKeyDown = evt => {\n const { target, code } = evt;\n const length = this._state.get('items').length;\n const firstEditableColumnData = this._state.get('columns').find(item => item.editMode === editModes.ALL);\n const firstEditableColumnName = firstEditableColumnData ? firstEditableColumnData.name : undefined;\n const row = Number(target.getAttribute('data-row'));\n const name = target.getAttribute('data-name');\n let newRow = row;\n let newName = name;\n switch (code) {\n case 'ArrowUp':\n newRow = Math.max(row - 1, 0);\n break;\n case 'ArrowDown':\n newRow = Math.min(row + 1, length - 1);\n break;\n case 'Enter':\n newRow = Math.min(row + 1, length - 1);\n if (newRow > row && firstEditableColumnName) {\n newName = firstEditableColumnName;\n }\n break;\n default:\n return;\n }\n evt.preventDefault();\n const nextCell = this._root.querySelector(`input[data-row=\"${newRow}\"][data-name=\"${newName}\"]`);\n target.blur();\n nextCell.focus();\n nextCell.select();\n }\n\n onDisplayOnlyClick = evt => {\n const cell = evt.target;\n this._state.set({selectedRowIndex: Number(cell.getAttribute('data-row'))});\n }\n\n onStateChange = evt => {\n this._state.hasChanged('columns', newValue => {\n this.render();\n });\n this._state.hasChanged('items', newValue => {\n this.render();\n });\n this._state.hasChanged('selectedRowIndex', newValue => {\n Array.from(this._root.querySelectorAll('td.selected')).forEach(cell => {\n cell.classList.toggle('selected', false);\n cell.classList.toggle('bg-primary-subtle', false);\n cell.classList.toggle('text-primary-emphasis', false);\n });\n Array.from(this._root.querySelectorAll(`td[data-row=\"${newValue}\"]`)).forEach(cell => {\n cell.classList.toggle('selected', true);\n cell.classList.toggle('bg-primary-subtle', true);\n cell.classList.toggle('text-primary-emphasis', true);\n });\n });\n\n this.dispatchEvent(new CustomEvent(ParamsTableView.events.STATE_CHANGE, {\n detail: this._state,\n }));\n }\n\n get state() {\n return this._state.attributes;\n }\n\n set state(attributes) {\n this._state.set(attributes);\n }\n\n get items() {\n return this._state.get('items').map(item => ({...item}));\n }\n\n set items(value) {\n this._state.set({items: value});\n }\n\n set columns(value) {\n this._state.set({columns: value});\n }\n\n setEditMode(columnsName, value) {\n this._state.set({columns: this._state.get('columns').map(item => item.name === columnsName ? {...item, editMode: value} : item)});\n }\n}\n","import SeriesEditorView, { operations, operationsModes } from 'myassays-global/views/SeriesEditorView';\nimport ParamsTableView, {dataTypes, editModes} from 'myassays-global/views/ParamsTableView';\nimport { MyassaysComponent, Model, PropTypes, Utils } from 'myassays-global';\n\nconst DECIMAL_SEPARATOR_POINT = '.';\nconst DECIMAL_SEPARATOR_COMMA = ',';\n\nconst template = (id, state) => `\\\n
\n${state.editConcs ? `\\\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
` : ''}\n`\n\nfunction csvToArray(value) {\n return (value.match(/(\"[^\"]+\"|[^ ,\"][^,\"]*)/g) || []).map(item => item.replace(/^ *\"?(.*?)\"? *$/, '$1'));\n}\n\nfunction getDefaultName(index) {\n return `Analyte ${index + 1}`;\n}\n\nclass BlazorCompatibleEvent extends CustomEvent {\n constructor(type, options) {\n super(type, {...options, bubbles: true});\n }\n}\n\nexport default class MyassaysParamsMultiplex extends MyassaysComponent {\n static get uniqueId() {\n if (this._uniqueIdCounter === undefined) {\n this._uniqueIdCounter = 1;\n } else {\n this._uniqueIdCounter++;\n }\n return `--myassays-params-multiplex-${this._uniqueIdCounter}-`;\n }\n\n static events = {\n DATA_CHANGE: 'datachange',\n ROW_SELECT_CALIBRATOR: 'rowselectcalibrator',\n ERROR: 'error',\n }\n\n static errorCodes = ParamsTableView.errorCodes;\n\n static get propTypes() {\n return {\n id: PropTypes.string,\n numAnalytes: PropTypes.number.min(1).required.observed\n .comment('No. of rows in left hand table'),\n analyteNames: PropTypes.string.default('').observed\n .comment('If not supplied, defaults to \"Analyte 1\"...'),\n editNames: PropTypes.bool.default(false)\n .comment('If true, analyte names are editable'),\n numGroups: PropTypes.number.min(0).default(0).observed\n .comment('No. of rows in right hand table'),\n decimalSeparator: PropTypes.string.lookup([DECIMAL_SEPARATOR_POINT, DECIMAL_SEPARATOR_COMMA]).default(DECIMAL_SEPARATOR_POINT),\n typeColour: PropTypes.string.default('white')\n .comment('Colour of the circle icon in the right hand table'),\n dataValues: PropTypes.json\n .comment('The data to populate the control'),\n editConcs: PropTypes.bool.default(true)\n .comment('If false, only the left hand table is rendered'),\n analyteNumCol: PropTypes.bool.default(false)\n .comment('If true, an extra column is added to the left hand table showing the row number'),\n groupNameBase: PropTypes.string.default('Standard')\n .comment('Group name used in the Calibrator table'),\n groupColName: PropTypes.string.default('Calibrator')\n .comment('Title for the group column of the Calibrator table'),\n valueColName: PropTypes.string.default('Conc.')\n .comment('Title for the value column of the Calibrator table'),\n showUnits: PropTypes.bool.default(true)\n .comment('If false, all columns and controls relating to units are removed'),\n }\n }\n\n constructor() {\n super();\n\n this._state = new Model({\n commonUnitsMode: false,\n commonUnits: '',\n selectedAnalyteIndex: 0,\n analyteDataSets: [],\n analyteNameArray: [],\n seriesMode: true,\n operation: '',\n operand: 0,\n });\n\n this._root = this;\n\n this._hasBeenRendered = false;\n }\n\n static get observedAttributes() {\n return PropTypes.getObserved(this.propTypes);\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n if (this._hasBeenRendered) {\n this._state.set(PropTypes.attributesToProps(this, attrName));\n }\n }\n\n connectedCallback() {\n this._state.set(PropTypes.attributesToProps(this));\n\n const { dataValues, analyteNames, editConcs, showUnits } = this._state.attributes;\n const analyteNameArray = csvToArray(analyteNames);\n if (editConcs) {\n let seriesMode, operation, operand, commonUnitsMode, commonUnits;\n let factor = dataValues.SeriesDataFactor || 0;\n if (factor) {\n seriesMode = true;\n operation = factor >= 1 ? operations.MULTIPLY : operations.DIVIDE;\n operand = factor >= 1 ? factor : 1/factor;\n } else {\n seriesMode = false;\n operation = operations.MULTIPLY;\n operand = 0;\n }\n if (showUnits) {\n const unitsUsed = dataValues.Analytes.map(item => item.Units).filter((item, i, array) => item !== array[i + 1]);\n commonUnitsMode = unitsUsed.length === 1;\n commonUnits = unitsUsed[0];\n } else {\n commonUnitsMode = false;\n commonUnits = '';\n }\n const analyteDataSets = dataValues.Analytes.map((item, i) => ({\n values: item.Values.split(',').map(value => Number(value)),\n units: item.Units,\n }));\n\n this._state.set({\n commonUnitsMode,\n commonUnits,\n analyteDataSets,\n analyteNameArray,\n operation,\n operand,\n seriesMode,\n });\n } else {\n const seriesMode = false;\n const commonUnitsMode = true;\n this._state.set({\n analyteNameArray,\n seriesMode,\n commonUnitsMode,\n });\n }\n\n this.render();\n this._hasBeenRendered = true;\n\n this._state.addEventListener('change', evt => {\n this.onStateChange();\n });\n\n this.requestDataChangeEvent();\n }\n\n render() {\n const state = this._state.attributes;\n this._root.innerHTML = template(MyassaysParamsMultiplex.uniqueId, state);\n state.editConcs && this.renderSeriesEditor();\n this.renderAnalytesTable();\n state.editConcs && this.renderValuesGroupTable();\n this.addControlListeners();\n this.onStateChange(true);\n }\n\n renderAnalytesTable() {\n const { columns, items } = this.analytesTableColumnsAndItems;\n\n this._analytesTableView = ParamsTableView.options\n .rootElement(this._root.querySelector('.analytes-table-root'))\n .columns(columns)\n .items(items)\n .selectable(true)\n .selectedRowIndex(this._state.get('selectedAnalyteIndex'))\n .createInstance();\n }\n\n get analytesTableColumnsAndItems() {\n const { commonUnitsMode, showUnits, analyteDataSets, analyteNameArray, seriesMode, editNames, analyteNumCol, valueColName } = this._state.attributes;\n const columns = [];\n if (analyteNumCol) {\n columns.push({name: 'number', heading: 'Analyte', dataType: dataTypes.LABEL, editMode: editModes.NONE})\n }\n columns.push({name: 'name', heading: analyteNumCol ? 'Name' : 'Analyte', dataType: editNames ? dataTypes.STRING : dataTypes.LABEL, editMode: editNames ? editModes.ALL : editModes.NONE});\n if (seriesMode) {\n columns.push({name: 'startConcentration', heading: `Start ${valueColName}`, dataType: dataTypes.NUMERIC, editMode: editModes.ALL});\n }\n if (!commonUnitsMode && showUnits) {\n columns.push({name: 'units', heading: 'Units', dataType: dataTypes.STRING, editMode: editModes.ALL});\n }\n const items = analyteDataSets.map((item, i) => {\n const analyteName = analyteNameArray[i];\n const analytesItem = {name: analyteName === undefined ? getDefaultName(i) : analyteName, startConcentration: item.values[0]};\n if (!commonUnitsMode) {\n analytesItem.units = item.units;\n }\n if (analyteNumCol) {\n analytesItem.number = i + 1;\n }\n return analytesItem;\n });\n return {\n columns,\n items,\n }\n }\n\n renderValuesGroupTable() {\n const { typeColour } = this._state.attributes;\n const { columns, items } = this.valuesGroupTableColumnsAndItems;\n this._valuesGroupTableView = ParamsTableView.options\n .rootElement(this._root.querySelector('.group-table-root'))\n .columns(columns)\n .typeColour(typeColour)\n .items(items)\n .selectable(true)\n .createInstance();\n }\n\n get valuesGroupTableColumnsAndItems() {\n const { selectedAnalyteIndex, seriesMode, analyteDataSets, analyteNameArray, groupNameBase, groupColName, valueColName, showUnits } = this._state.attributes;\n const { values, units } = analyteDataSets[selectedAnalyteIndex];\n let analyteName = analyteNameArray[selectedAnalyteIndex];\n if (analyteName === undefined) analyteName = getDefaultName(selectedAnalyteIndex);\n const columns = [\n {name: 'name', heading: groupColName, dataType: dataTypes.LABEL_WITH_TYPE},\n {name: 'data', heading: `${analyteName} ${valueColName}${units === '' || !showUnits ? '' : ` (${units})`}`, dataType: dataTypes.NUMERIC, editMode: seriesMode ? editModes.NONE : editModes.ALL},\n ];\n const items = values.map((value, i) => ({name: `${groupNameBase}${i + 1}`, data: value}));\n\n return {\n columns,\n items,\n }\n }\n\n renderSeriesEditor() {\n const { seriesMode, operation, operand } = this._state.attributes;\n this._seriesEditorView = new SeriesEditorView(this._root.querySelector('.series-editor-root'), seriesMode, operation, operationsModes.MULTIPLY_DIVIDE, 0, operand);\n }\n\n addControlListeners() {\n const { editConcs, showUnits } = this._state.attributes;\n const setState = attributes => this._state.set(attributes);\n const toggleState = attrName => {\n setState({[attrName]: !this._state.get(attrName)});\n }\n const addListener = (selector, type, listener) => {\n const element = this._root.querySelector(selector);\n if (element) {\n element.addEventListener(type, listener);\n }\n }\n\n this._analytesTableView.addEventListener(ParamsTableView.events.STATE_CHANGE, this.onAnalytesTableStateChange);\n this._analytesTableView.addEventListener(ParamsTableView.events.CELL_CHANGE, this.onAnalytesTableCellChange);\n this._analytesTableView.addEventListener(ParamsTableView.events.ERROR, this.onTableError);\n\n if (editConcs) {\n this._seriesEditorView.addEventListener(SeriesEditorView.events.STATE_CHANGE, this.onSeriesEditorStateChange);\n this._valuesGroupTableView.addEventListener(ParamsTableView.events.STATE_CHANGE, this.onValuesGroupTableStateChange);\n this._valuesGroupTableView.addEventListener(ParamsTableView.events.CELL_CHANGE, this.onValuesGroupTableCellChange);\n this._valuesGroupTableView.addEventListener(ParamsTableView.events.ERROR, this.onTableError);\n if (showUnits) {\n addListener('[name=\"units\"]', 'change', this.onUnitsChange);\n addListener('[name=\"open-units-editor\"]', 'change', evt => {\n Utils.doAndResizeSmoothly(this._root.querySelector('.units-editor'), () => {\n setState({commonUnitsMode: evt.target.checked});\n });\n });\n }\n }\n }\n\n onStateChange(force) {\n const { editConcs, showUnits } = this._state.attributes;\n\n const hasChanged = (name, handler) => {\n force ? handler(this._state.get(name)) : this._state.hasChanged(name, handler);\n }\n const toggleClass = (selector, className, force) => {\n this._root.querySelector(selector).classList.toggle(className, force);\n }\n const updateDataSets = () => {\n delete this._dataSetsUpdatePendingId;\n const { seriesMode, analyteDataSets } = this._state.attributes;\n if (seriesMode) {\n const newAnalyteDataSets = analyteDataSets.map((dataSet, i) => ({\n ...dataSet,\n values: this.getAnalyteValues(i, dataSet.values[0]),\n }));\n this._state.set({analyteDataSets: newAnalyteDataSets});\n } else {\n // trigger a change event anyway\n this._state.set({analyteDataSets});\n }\n }\n\n hasChanged('selectedAnalyteIndex', newValue => {\n if (editConcs) {\n this._valuesGroupTableView.state = this.valuesGroupTableColumnsAndItems;\n }\n });\n\n hasChanged('analyteDataSets', newValue => {\n if (editConcs) {\n this._valuesGroupTableView.state = this.valuesGroupTableColumnsAndItems;\n }\n this.requestDataChangeEvent();\n });\n\n showUnits && hasChanged('commonUnitsMode', newValue => {\n if (editConcs) {\n toggleClass('.units-editor .editor-controls', 'open', newValue);\n this._root.querySelector('[name=\"open-units-editor\"]').toggleAttribute('checked', newValue);\n if (newValue) {\n const {analyteDataSets, commonUnits} = this._state.attributes;\n this._state.set({\n analyteDataSets: analyteDataSets.map(dataSet => ({\n ...dataSet,\n units: commonUnits\n }))\n });\n }\n }\n Utils.doAndResizeSmoothly(this._root.querySelector('.analytes-table-root'), () => {\n this._analytesTableView.state = this.analytesTableColumnsAndItems;\n });\n });\n\n hasChanged('seriesMode', newValue => {\n if (editConcs) {\n const { operand, analyteDataSets, selectedAnalyteIndex } = this._state.attributes;\n if ( newValue && operand === 0 ) {\n const { values } = analyteDataSets[selectedAnalyteIndex];\n if (values.length <= 1) {\n this._seriesEditorView.setState({\n operation: operations.MULTIPLY,\n multiplyDivideOperand: 1,\n });\n } else {\n const factor = values[1] / values[0];\n if (factor >= 1) {\n this._seriesEditorView.setState({\n operation: operations.MULTIPLY,\n multiplyDivideOperand: factor,\n });\n } else {\n this._seriesEditorView.setState({\n operation: operations.DIVIDE,\n multiplyDivideOperand: 1/factor,\n });\n }\n }\n }\n this._valuesGroupTableView.state = this.valuesGroupTableColumnsAndItems;\n updateDataSets();\n }\n this._analytesTableView.state = this.analytesTableColumnsAndItems;\n });\n\n hasChanged('operation', newValue => {\n if (editConcs) {\n updateDataSets();\n }\n });\n\n hasChanged('operand', () => {\n if (editConcs) {\n updateDataSets();\n }\n });\n\n hasChanged('analyteNameArray', newValue => {\n if (editConcs) {\n this._valuesGroupTableView.state = this.valuesGroupTableColumnsAndItems;\n }\n this._analytesTableView.state = this.analytesTableColumnsAndItems;\n });\n\n hasChanged('numGroups', (newValue, previousValue) => {\n if (editConcs) {\n const {analyteDataSets, seriesMode} = this._state.attributes;\n this._state.set({\n analyteDataSets: analyteDataSets.map((dataSet, i) => ({\n ...dataSet,\n values: seriesMode ? this.getAnalyteValues(i, dataSet.values[0]) : (() => {\n if (newValue < previousValue) {\n return dataSet.values.slice(0, newValue);\n } else {\n const values = [...dataSet.values];\n while (values.length < newValue) {\n values.push(0);\n }\n return values;\n }\n })(),\n })),\n });\n this._valuesGroupTableView.state = this.valuesGroupTableColumnsAndItems;\n }\n });\n\n hasChanged('numAnalytes', (newValue, previousValue) => {\n const { analyteDataSets, selectedAnalyteIndex, commonUnitsMode, commonUnits, numGroups } = this._state.attributes;\n if (newValue < previousValue) {\n this._state.set({\n analyteDataSets: analyteDataSets.slice(0, newValue),\n selectedAnalyteIndex: Math.min(selectedAnalyteIndex, newValue - 1),\n });\n } else {\n while (analyteDataSets.length < newValue) {\n analyteDataSets.push({\n values: (new Array(numGroups)).fill(0),\n units: commonUnitsMode ? commonUnits : '',\n });\n }\n this._state.set({analyteDataSets});\n }\n this._analytesTableView.state = {\n ...this.analytesTableColumnsAndItems,\n selectedRowIndex: this._state.get('selectedAnalyteIndex'),\n };\n });\n\n hasChanged('analyteNames', newValue => {\n this._state.set({analyteNameArray: csvToArray(newValue)});\n });\n }\n\n onUnitsChange = evt => {\n const { value } = evt.target;\n this._state.set({\n commonUnits: value,\n analyteDataSets: this._state.get('analyteDataSets').map(dataSet => ({...dataSet, units: value})),\n });\n }\n\n onSeriesEditorStateChange = evt => {\n const model = evt.detail;\n\n model.hasChanged('open', newValue => {\n Utils.doAndResizeSmoothly(this._root.querySelector('.analytes-table-root'), () => {\n this._state.set({seriesMode: newValue});\n this._valuesGroupTableView.state = this.valuesGroupTableColumnsAndItems;\n });\n });\n\n model.hasChanged('operation', newValue => {\n this._state.set({operation: newValue});\n });\n\n model.hasChanged('multiplyDivideOperand', newValue => {\n this._state.set({operand: newValue});\n });\n }\n\n onAnalytesTableStateChange = evt => {\n const model = evt.detail;\n\n model.hasChanged('selectedRowIndex', newValue => {\n this._state.set({selectedAnalyteIndex: newValue});\n });\n }\n\n onAnalytesTableCellChange = evt => {\n const { rowIndex, columnName, newValue } = evt.detail;\n\n const { analyteDataSets, analyteNameArray } = this._state.attributes;\n switch (columnName) {\n case 'name':\n analyteNameArray[rowIndex] = newValue || getDefaultName(rowIndex);\n break;\n case 'startConcentration':\n analyteDataSets[rowIndex].values = this.getAnalyteValues(rowIndex, newValue);\n break;\n case 'units':\n analyteDataSets[rowIndex].units = newValue;\n break;\n }\n this._state.set({analyteDataSets, analyteNameArray});\n }\n\n onTableError = evt => {\n evt.preventDefault();\n const error = evt.detail;\n const event = new BlazorCompatibleEvent(MyassaysParamsMultiplex.events.ERROR, {\n detail: error,\n cancelable: true,\n });\n this.dispatchEvent(event) && alert(error.message);\n }\n\n getAnalyteValues(index, startConcentration) {\n let value = startConcentration;\n const values = [];\n const { operation, operand, numGroups } = this._state.attributes;\n for (let row = 0; row < numGroups; row++) {\n values.push(value);\n if (operation === operations.MULTIPLY) {\n value *= operand;\n } else {\n value /= operand;\n }\n }\n return values;\n }\n\n onValuesGroupTableStateChange = evt => {\n const model = evt.detail;\n\n model.hasChanged('selectedRowIndex', newValue => {\n this.dispatchRowSelectCalibratorEvent(newValue);\n });\n }\n\n onValuesGroupTableCellChange = evt => {\n const { rowIndex, columnName, newValue, previousValue } = evt.detail;\n const analyteDataSets = this._state.get('analyteDataSets');\n analyteDataSets[this._state.get('selectedAnalyteIndex')].values[rowIndex] = newValue;\n this._state.set({analyteDataSets});\n }\n\n requestDataChangeEvent() {\n if (!this._dataChangeEventPendingId) {\n this._dataChangeEventPendingId = setTimeout(() => {\n this.dispatchEvent(new BlazorCompatibleEvent(MyassaysParamsMultiplex.events.DATA_CHANGE, {\n detail: JSON.stringify(this.dataValue),\n }));\n delete this._dataChangeEventPendingId;\n }, 1);\n }\n }\n\n dispatchRowSelectCalibratorEvent(rowIndex) {\n this.dispatchEvent(new BlazorCompatibleEvent(MyassaysParamsMultiplex.events.ROW_SELECT_CALIBRATOR, {\n detail: rowIndex,\n }));\n }\n\n get dataValue() {\n const { analyteDataSets, analyteNameArray, editNames, seriesMode, operation, operand, editConcs } = this._state.attributes;\n const dataValue = {};\n dataValue.Analytes = analyteDataSets.map((dataSet, i) => {\n const item = editConcs ? {\n Values: dataSet.values.join(','),\n Units: dataSet.units,\n } : {};\n if (editNames) {\n item.Name = analyteNameArray[i] || getDefaultName(i);\n }\n return item;\n });\n if (seriesMode) {\n dataValue.SeriesDataFactor = operation === operations.MULTIPLY ? operand : 1/operand;\n }\n return dataValue;\n }\n}\n","export default \"myassays-params-multiplex > * {\\n vertical-align: top;\\n}\\nmyassays-params-multiplex .controls {\\n display: inline-grid;\\n grid-gap: 6px;\\n vertical-align: top;\\n}\\nmyassays-params-multiplex .controls button, myassays-params-multiplex .controls input, myassays-params-multiplex .controls .btn-group {\\n max-width: 100px;\\n}\\nmyassays-params-multiplex .controls button.hidden, myassays-params-multiplex .controls input.hidden, myassays-params-multiplex .controls .btn-group.hidden {\\n display: none;\\n}\\nmyassays-params-multiplex .controls button * {\\n pointer-events: none;\\n}\\nmyassays-params-multiplex .controls input.invalid {\\n border-color: red;\\n color: red;\\n outline-color: red;\\n}\\nmyassays-params-multiplex .controls > div {\\n display: none;\\n}\\nmyassays-params-multiplex .controls > div.show {\\n display: grid;\\n grid-gap: 6px;\\n}\\nmyassays-params-multiplex .controls > div .editor-controls {\\n display: none;\\n}\\nmyassays-params-multiplex .controls > div .editor-controls.open {\\n display: grid;\\n grid-gap: 6px;\\n}\\nmyassays-params-multiplex .controls > div .editor-controls * {\\n grid-column: 1/span 2;\\n}\\nmyassays-params-multiplex .analytes-table-root, myassays-params-multiplex .group-table-root {\\n display: inline-block;\\n padding: 0.5rem;\\n}\\nmyassays-params-multiplex .analytes-table-root table, myassays-params-multiplex .group-table-root table {\\n margin: 0;\\n}\\nmyassays-params-multiplex .table td {\\n position: relative;\\n}\\nmyassays-params-multiplex .table td.display-only * {\\n pointer-events: none;\\n}\\nmyassays-params-multiplex .table td.editable {\\n border-width: 1px;\\n}\\nmyassays-params-multiplex .table td.editable.selected input {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\nmyassays-params-multiplex .table td input {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 10;\\n width: 100%;\\n height: 100%;\\n border: 0;\\n margin: 0;\\n padding: inherit;\\n text-align: left;\\n}\\nmyassays-params-multiplex .table td span.icon {\\n display: block;\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n width: 1em;\\n height: 1em;\\n border-radius: 50%;\\n margin-right: 0.5em;\\n}\\nmyassays-params-multiplex .table td span.icon + span.label {\\n padding-left: 1.5em;\\n}\\nmyassays-params-multiplex .table td.numeric {\\n text-align: right;\\n}\\nmyassays-params-multiplex .table td.numeric input {\\n text-align: right;\\n}\\nmyassays-params-multiplex .table td.footer {\\n background: transparent;\\n border: 0;\\n text-align: center;\\n}\\nmyassays-params-multiplex .table td.footer button * {\\n pointer-events: none;\\n}\\nmyassays-params-multiplex .table th.numeric {\\n text-align: right;\\n}\\nmyassays-params-multiplex .table.selectable .display-only {\\n cursor: pointer;\\n}\\n\\n/*# sourceMappingURL=MyassaysParamsMultiplex.css.map */\\n\"","import MyassaysParamsMultiplex from './MyassaysParamsMultiplex';\nimport styles from './MyassaysParamsMultiplex.css?raw';\n\ndocument.write(`\n\n`);\n\ncustomElements.define('myassays-params-multiplex', MyassaysParamsMultiplex);\n\nif (window.MyassaysParamsMultiplex !== undefined) {\n if (!(window.MyassaysParamsMultiplex instanceof Object)) {\n throw new Error('Could not create \"window.MyassaysParamsMultiplex\" namespace.');\n }\n} else {\n window.MyassaysParamsMultiplex = {};\n}\nwindow.MyassaysParamsMultiplex = {\n ...window.MyassaysParamsMultiplex,\n getById: function (id) {\n const elem = document.getElementById(id);\n if (!elem) {\n throw `An instance of MyassaysParamsMultiplex with the id \"${id}\" could not be found.`;\n } else if (! elem instanceof MyassaysParamsMultiplex) {\n throw `The element with the id \"${id}\" is not a MyassaysParamsMultiplex.`;\n } else {\n return elem;\n }\n },\n getNameValue: function (id) {\n return this.getById(id).nameValue;\n },\n setNameValue: function (id, newValue) {\n this.getById(id).nameValue = newValue;\n },\n getDataValue: function (id) {\n return this.getById(id).dataValue;\n },\n setDataValue: function (id, newValue) {\n this.getById(id).dataValue = newValue;\n }\n}\n"],"names":["cloneValue","value","Model","returnValue","key","_Model","initialAttributes","newAttributes","noTrigger","previousAttributes","newAttribute","evt","attributes","attributeName","handler","prevValue","newValue","changed","previousValue","__publicField","types","attributesToObject","result","i","attr","PropType","type","valueArrayOrObject","regExp","noHyphens","_PropTypes","propTypes","defaults","propType","observed","docLines","commentsExist","parts","item","element","singleAttrName","hash","required","props","attrObject","elementId","name","convertedValue","lowerCaseValue","testValue","testLookup","PropTypes","MyassaysComponent","makeException","ErrorType","message","options","toNumber","evenRound","x","censorNegativeZero","integerPart","n","sign","modulo","y","signMightNotMatch","createIntegerConversion","bitLength","unsigned","lowerBound","upperBound","twoToTheBitLength","twoToOneLessThanTheBitLength","createLongLongConversion","asBigIntN","xBigInt","exports","c","S","U","d","a","b","abByteLengthGetter","sabByteLengthGetter","isNonSharedArrayBuffer","isSharedArrayBuffer","isArrayBufferDetached","dvByteLengthGetter","typedArrayNameGetter","func","article","isObject","hasOwn","define","target","source","descriptor","newObjectInRealm","globalObject","object","ctorRegistry","initCtorRegistry","wrapperSymbol","implSymbol","sameObjectCaches","ctorRegistrySymbol","AsyncIteratorPrototype","getSameObject","wrapper","prop","creator","wrapperForImpl","impl","implForWrapper","tryWrapperForImpl","tryImplForWrapper","iterInternalSymbol","isArrayIndexPropName","P","s","byteLengthGetter","isArrayBuffer","iteratorResult","kind","supportsPropertyIndex","supportedPropertyIndices","supportsPropertyName","supportedPropertyNames","indexedGet","indexedSetNew","indexedSetExisting","namedGet","namedSetNew","namedSetExisting","namedDelete","asyncIteratorNext","asyncIteratorReturn","asyncIteratorInit","asyncIteratorEOI","module","namespaces","idlUtils","require$$0","HTML_NS","require$$1","HTMLCollectionImpl_1","args","privateData","index","snapshot","id","conversions","utils","interfaceName","Impl","context","makeWrapper","newTarget","proto","makeProxy","proxyHandler","proxyHandlerCache","ProxyHandler","constructorArgs","exposed","globalNames","globalName","HTMLCollection","esValue","curArg","receiver","desc","getter","parent","keys","ignoreNamedProps","indexedValue","namedValue","V","ownDesc","existingDesc","valueDesc","require$$2","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","stringFromCharCode","error","map","array","callback","length","mapDomain","domain","labels","encoded","ucs2decode","string","output","counter","extra","ucs2encode","codePoints","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","decode","input","inputLength","bias","basic","j","oldi","w","t","baseMinusT","out","encode","currentValue","basicLength","handledCPCount","m","handledCPCountPlusOne","q","qMinusT","toUnicode","toASCII","regexes","statusMapping","punycode","mappingTable","STATUS_MAPPING","require$$3","containsNonASCII","str","findStatus","val","useSTD3ASCIIRules","start","end","mid","min","max","mapChars","domainName","processingOption","hasError","processed","ch","status","mapping","validateLabel","label","checkHyphens","checkBidi","checkJoiners","last","next","test","rtl","isBidiDomain","processing","isBidi","origLabel","curProcessing","verifyDNSLength","total","tr46","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","infra","utf8Encoder","utf8Decoder","utf8Encode","utf8DecodeWithoutBOM","bytes","encoding","p","char","percentEncode","hex","percentDecodeBytes","outputIndex","byte","bytePoint","percentDecodeString","isC0ControlPercentEncode","extraFragmentPercentEncodeSet","isFragmentPercentEncode","extraQueryPercentEncodeSet","isQueryPercentEncode","isSpecialQueryPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","extraComponentPercentEncodeSet","isComponentPercentEncode","extraURLEncodedPercentEncodeSet","isURLEncodedPercentEncode","utf8PercentEncodeCodePointInternal","percentEncodePredicate","utf8PercentEncodeCodePoint","utf8PercentEncodeString","spaceAsPlus","percentEncoding","specialSchemes","failure","countSymbols","at","idx","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenDomainCodePoint","isSpecialScheme","scheme","isSpecial","url","isNotSpecial","defaultPort","parseIPv4Number","R","regex","parseIPv4","numbers","part","ipv4","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","number","swaps","temp","serializeIPv6","findLongestZeroSequence","ignore0","parseHost","isNotSpecialArg","parseOpaqueHost","asciiDomain","domainToASCII","endsInANumber","arr","maxIdx","maxLen","currStart","currLen","serializeHost","host","beStrict","trimControlChars","trimTabAndNewline","shortenPath","path","isNormalizedWindowsDriveLetter","includesCredentials","cannotHaveAUsernamePasswordPort","hasAnOpaquePath","URLStateMachine","encodingOverride","stateOverride","res","cStr","ret","len","encodedCodePoints","port","fileOtherwiseCodePoints","startsWithWindowsDriveLetter","queryPercentEncodePredicate","serializeURL","excludeFragment","serializePath","serializeOrigin","tuple","segment","usm","username","password","integer","parseUrlencoded","sequences","strictlySplitByteSequence","indexOfEqual","replaceByteInByteSequence","nameString","valueString","parseUrlencodedString","serializeUrlencoded","tuples","buf","cp","list","from","to","urlencoded","_Function","invokeTheCallbackFunction","thisArg","callResult","URLSearchParamsImpl_1","doNotStripQMark","init","pair","serializedQuery","found","Function","iteratorPrototype","iterator","URLSearchParams","tmp","nextItem","typedKey","typedValue","pairs","internal","values","URLImpl_1","parsedBase","parsedURL","query","v","URL","webidl2jsWrapper","urlStateMachine","sharedGlobalObject","whatwgUrl","SymbolTreeNode_1","parentNode","TreePosition","TREE","ROOT","NEXT","ITERATE_FUNC","TreeIterator$1","tree","root","firstResult","iterateFunction","iterateFunc","TreeIterator","TreeIterator_1","SymbolTreeNode","returnTrue","reverseArrayIndex","reverseIndex","SymbolTree$1","description","node","lastChild","current","treeRoot","previousSibling","firstChild","nextSibling","filter","ancestor","reverse","child","childNode","currentIndex","cachedUpToNode","left","right","leftAncestors","leftAncestor","rightAncestors","rightAncestor","commonAncestorIndex","ancestorsMinLength","leftIndex","removeObject","removeNode","prevNode","nextNode","referenceObject","newObject","referenceNode","newNode","SymbolTree_1","SymbolTree","internalConstants","whatwgURL","domSymbolTree","SYMBOL_TREE_POSITION","fileName","pathname","utils$2","properties","propDesc","Constructor","propertyMap","property","addConstant","memoizeQueryTypeCounter","fn","isValidAbsoluteURL","first","second","secondResult","compare","Canvas","require$$4","Utils","times","css","cssString","classNames","className","stop","step","range","num1","num2","num3","data","xmlString","arrays","exclude","booleans","preserveCapitals","formatName","convertType","parser","dom","parseNode","xmlNode","nodeName","jsonNode","existing","attribute","action","endAnimationCallback","startWidth","startHeight","childElement","childRect","endWidth","endHeight","styleWidth","styleHeight","childStyleWidth","childStyleHeight","styleOverflow","referenceElement","PositionInfo","dataObject","dragController","e","startHandler","event","positionInfo","controller","moveHandler","endHandler","exceptionHandler","popupElement","dragHandleElement","startMousePos","startPopupPos","handlers","currentMousePos","operations","operationsModes","template","_SeriesEditorView","rootElement","open","operation","operatorMode","addSubtractOperand","multiplyDivideOperand","valid","op","attrName","minValue","numericValue","toggleClass","selector","force","updateOperandValue","operandValue","operand","openButton","elem","SeriesEditorView","isMacLike","dataTypes","editModes","state","showPasteButtonRow","column","col","row","classes","_ParamsTableView","relatedTarget","columnName","clipboardData","clipboardText","eventToDispatch","focussedCell","span","code","firstEditableColumnData","firstEditableColumnName","newRow","newName","nextCell","cell","columns","typeColour","items","selectable","selectedRowIndex","showPasteButtons","Options","button","clipText","text","pastedItems","line","numberValue","cellChanges","rowItem","r","rowIndex","change","BlazorCompatibleEvent","dataType","columnsName","ParamsTableView","DECIMAL_SEPARATOR_POINT","DECIMAL_SEPARATOR_COMMA","csvToArray","getDefaultName","_MyassaysParamsMultiplex","dataSet","model","analyteDataSets","analyteNameArray","oldVal","newVal","dataValues","analyteNames","editConcs","showUnits","seriesMode","commonUnitsMode","commonUnits","factor","unitsUsed","editNames","analyteNumCol","valueColName","analyteName","analytesItem","selectedAnalyteIndex","groupNameBase","groupColName","units","setState","addListener","listener","hasChanged","updateDataSets","newAnalyteDataSets","numGroups","startConcentration","dataValue","MyassaysParamsMultiplex","styles"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32]}